python-basic

⌘K
  1. Home
  2. python-basic
  3. OOP
  4. ইনহেরিটেন্স(inheritance)
  5. ইনহেরিটেন্স (Inheritance) (প্রাক্টিকেল )

ইনহেরিটেন্স (Inheritance) (প্রাক্টিকেল )

ইনহেরিটেন্স (Inheritance) প্রোগ্রামিং-এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা একটি ক্লাস থেকে অন্য ক্লাসে প্রোপার্টি এবং মেথড শেয়ার করতে দেয়। এটি কোডের পুনরায় ব্যবহারযোগ্যতা বাড়ায় এবং প্রোগ্রামিংকে সহজ করে। ইনহেরিটেন্স এর মাধ্যমে আমরা একটি বেস ক্লাস বা প্যারেন্ট ক্লাস তৈরি করে সেই ক্লাস থেকে প্রোপার্টি ও মেথড নিয়ে নতুন ক্লাস তৈরি করতে পারি, যেগুলোকে ডেরাইভড ক্লাস বলা হয়।

গল্প: এক গাড়ি কোম্পানি

ধরা যাক একটি গাড়ি কোম্পানি আছে যার নাম AutoCars। এই কোম্পানি বিভিন্ন ধরনের গাড়ি তৈরি করে যেমন Car, Truck, এবং ElectricCar। কোম্পানির প্রতিটি গাড়ির কিছু সাধারণ বৈশিষ্ট্য আছে যেমন ব্র্যান্ড, মডেল, ইঞ্জিনের ক্ষমতা ইত্যাদি। তবে কিছু বৈশিষ্ট্য প্রতিটি গাড়ির ক্ষেত্রে আলাদা হতে পারে।

এই গল্পের মাধ্যমে আমরা ইনহেরিটেন্স, বেস ক্লাস, ডেরাইভড ক্লাস, এবং ইনহেরিটেন্স এর বিভিন্ন প্রকার নিয়ে আলোচনা করবো।

ইনহেরিটেন্স এর ভূমিকা এবং প্রয়োজনীয়তা

  • কোড পুনঃব্যবহারযোগ্যতা: ইনহেরিটেন্স কোড পুনরায় ব্যবহারযোগ্য করতে সাহায্য করে। একবার যদি আমরা একটি বেস ক্লাস তৈরি করি, তাহলে আমরা সেই কোডকে বিভিন্ন ডেরাইভড ক্লাসে ব্যবহার করতে পারি।
  • কোড সংক্ষিপ্ত করা: একাধিক ক্লাসে যদি একই ধরনের বৈশিষ্ট্য বা মেথড থাকে, তাহলে ইনহেরিটেন্স এর মাধ্যমে এগুলোকে বেস ক্লাসে একবার ডিফাইন করেই সমস্ত ডেরাইভড ক্লাসে ব্যবহার করা যায়।
  • কোডের মেইনটেন্যান্স সহজ করে: যদি বেস ক্লাসের কোনো পরিবর্তন প্রয়োজন হয়, তাহলে শুধুমাত্র বেস ক্লাস পরিবর্তন করলেই সব ডেরাইভড ক্লাস আপডেট হয়ে যায়, যা কোড মেইনটেন্যান্স সহজ করে।

বেস ক্লাস এবং ডেরাইভড ক্লাস

  • বেস ক্লাস: একটি সাধারণ ক্লাস যা অন্যান্য ক্লাস দ্বারা ইনহেরিট করা হয়। উদাহরণস্বরূপ, আমাদের গল্পে, আমরা Vehicle নামে একটি বেস ক্লাস তৈরি করবো, যেখানে গাড়ির সাধারণ বৈশিষ্ট্য এবং ফাংশন থাকবে।
  • ডেরাইভড ক্লাস: একটি নতুন ক্লাস যা বেস ক্লাস থেকে প্রোপার্টি এবং মেথড ইনহেরিট করে। উদাহরণস্বরূপ, Car, Truck, এবং ElectricCar হল ডেরাইভড ক্লাস, যেগুলো Vehicle ক্লাস থেকে বৈশিষ্ট্য পাবে।

উদাহরণ:

# বেস ক্লাস
class Vehicle:
    def __init__(self, brand, model, engine_capacity):
        self.brand = brand
        self.model = model
        self.engine_capacity = engine_capacity
    
    def start_engine(self):
        print(f"{self.brand} {self.model} এর ইঞ্জিন চালু হলো!")
    
    def stop_engine(self):
        print(f"{self.brand} {self.model} এর ইঞ্জিন বন্ধ হলো!")

এখানে Vehicle ক্লাস হচ্ছে বেস ক্লাস, যেখানে সাধারণ প্রোপার্টি (brand, model, engine_capacity) এবং মেথড (start_engine, stop_engine) রয়েছে।

ডেরাইভড ক্লাস:

# ডেরাইভড ক্লাস Car
class Car(Vehicle):
    def __init__(self, brand, model, engine_capacity, num_doors):
        super().__init__(brand, model, engine_capacity)
        self.num_doors = num_doors
    
    def open_doors(self):
        print(f"{self.brand} {self.model} এর দরজা খোলা হলো!")
        
# ডেরাইভড ক্লাস Truck
class Truck(Vehicle):
    def __init__(self, brand, model, engine_capacity, cargo_capacity):
        super().__init__(brand, model, engine_capacity)
        self.cargo_capacity = cargo_capacity
    
    def load_cargo(self):
        print(f"{self.brand} {self.model} তে {self.cargo_capacity} টন মাল লোড করা হলো!")

এখানে Car এবং Truck হল ডেরাইভড ক্লাস, যারা Vehicle ক্লাস থেকে ইনহেরিট করছে। তারা বেস ক্লাসের প্রোপার্টি এবং মেথড ইনহেরিট করছে এবং নিজেদের অতিরিক্ত মেথড ও প্রোপার্টি যোগ করেছে।

super() ফাংশন এর ব্যবহার

super() ফাংশনটি বেস ক্লাসের মেথড কল করতে ব্যবহার করা হয়। যেমন, Car এবং Truck ক্লাসে আমরা super() ব্যবহার করে বেস ক্লাসের init মেথড কল করেছি যাতে বেস ক্লাসের প্রোপার্টিগুলো ইন্সট্যান্সিয়েট করা যায়।

উদাহরণ:

# ডেরাইভড ক্লাস ElectricCar
class ElectricCar(Vehicle):
    def __init__(self, brand, model, engine_capacity, battery_capacity):
        super().__init__(brand, model, engine_capacity)
        self.battery_capacity = battery_capacity
    
    def charge_battery(self):
        print(f"{self.brand} {self.model} এর ব্যাটারি চার্জ হচ্ছে {self.battery_capacity} kWh।")

এখানে, ElectricCar ক্লাসেও super() ব্যবহার করা হয়েছে বেস ক্লাসের প্রোপার্টি ইন্সট্যান্সিয়েট করার জন্য।

টাইপ অফ ইনহেরিটেন্স

১. Single Inheritance: এক বেস ক্লাস এবং এক ডেরাইভড ক্লাস থাকে। উদাহরণ: Car ক্লাসটি Vehicle থেকে ইনহেরিট করছে।

২. Multiple Inheritance: একাধিক বেস ক্লাস থেকে একটি ডেরাইভড ক্লাস ইনহেরিট করে। উদাহরণ:

class GPS:
    def show_location(self):
        print("লোকেশন দেখাচ্ছে...")

class MusicSystem:
    def play_music(self):
        print("গান বাজছে...")

# Multiple Inheritance
class LuxuryCar(Vehicle, GPS, MusicSystem):
    def __init__(self, brand, model, engine_capacity):
        super().__init__(brand, model, engine_capacity)

৩. Multilevel Inheritance: একাধিক লেভেলের ইনহেরিটেন্স। উদাহরণ: ElectricCar -> Car -> Vehicle

৪. Hierarchical Inheritance: একটি বেস ক্লাস থেকে একাধিক ডেরাইভড ক্লাস ইনহেরিট করে। উদাহরণ: Car, Truck, এবং ElectricCar সবই Vehicle থেকে ইনহেরিট করছে।

৫. Hybrid Inheritance: বিভিন্ন ধরনের ইনহেরিটেন্স মিলে একটি হাইব্রিড স্ট্রাকচার তৈরি হয়। যেমন:

class AutoElectricCar(ElectricCar, GPS):
    def auto_drive(self):
        print("গাড়ি অটো পাইলট মোডে আছে।")

সম্পূর্ণ উদাহরণ:

# গাড়ি তৈরি করা
my_car = Car("Toyota", "Corolla", "1500cc", 4)
my_truck = Truck("Ford", "F-150", "5000cc", 3)
my_electric_car = ElectricCar("Tesla", "Model 3", "2000cc", "75kWh")

# মেথড কল করা
my_car.start_engine()
my_car.open_doors()

my_truck.start_engine()
my_truck.load_cargo()

my_electric_car.start_engine()
my_electric_car.charge_battery()

আউটপুট:

Toyota Corolla এর ইঞ্জিন চালু হলো!
Toyota Corolla এর দরজা খোলা হলো!
Ford F-150 এর ইঞ্জিন চালু হলো!
Ford F-150 তে 3 টন মাল লোড করা হলো!
Tesla Model 3 এর ইঞ্জিন চালু হলো!
Tesla Model 3 এর ব্যাটারি চার্জ হচ্ছে 75kWh।

গল্পের সারমর্ম

এই গল্পে আমরা দেখলাম কিভাবে Vehicle বেস ক্লাস তৈরি করে সেই ক্লাস থেকে বিভিন্ন ধরনের গাড়ি ক্লাস তৈরি করা যায়। এই পদ্ধতিকে ইনহেরিটেন্স বলে। Car, Truck, এবং ElectricCar এই গাড়িগুলো একই বেস ক্লাস থেকে ইনহেরিট করে সাধারণ ফাংশনগুলো ব্যবহার করছে এবং নিজেদের অতিরিক্ত ফাংশন যোগ করছে।

এটি ইনহেরিটেন্স এর মুল কনসেপ্ট—কোডের পুনরায় ব্যবহারযোগ্যতা, কম্প্যাক্টনেস এবং মেইনটেন্যান্স সহজ করা।

How can we help?