
روز ۳۳ آموزش پایتون: پروژه کلاس حیوانات با ویژگیها و رفتارها
در این پروژه کوچک قصد داریم مفاهیم شیءگرایی و کلاسها را در پایتون به شکل عملی تمرین کنیم. هدف این است که یک کلاس حیوانات تعریف کنیم که ویژگیهای عمومی یک حیوان مانند نام، سن و گونه را داشته باشد و متدهایی برای رفتارهایی مثل صدا کردن و حرکت کردن ارائه دهد. این پروژه تمرینی مناسب برای تثبیت مفاهیم کلاس، شیء، متدها، ارثبری و چندریختی است و به شما کمک میکند درک عمیقی از برنامهنویسی شیءگرا پیدا کنید. با طراحی درست کلاسها میتوان برنامهای منعطف، قابل توسعه و خوانا نوشت که در پروژههای بزرگتر قابل استفاده باشد.
تعریف کلاس پایه حیوانات
برای شروع، یک کلاس پایه Animal ایجاد میکنیم که ویژگیها و رفتارهای عمومی را شامل شود. ویژگیهایی مانند name, age و species و متدی به نام make_sound برای تولید صدای عمومی حیوان در کلاس تعریف میکنیم. همچنین متد __str__ را برای نمایش خوانای شیء تعریف میکنیم تا هنگام چاپ شیء اطلاعات حیوان به شکل مرتب و قابل فهم نمایش داده شود.
نمونه کد کلاس پایه:
class Animal:
def __init__(self, name, age, species):
self.name = name
self.age = age
self.species = species
def make_sound(self):
print(f"{self.name} یک صدای عمومی از نوع {self.species} ایجاد کرد.")
def move(self):
print(f"{self.name} حرکت میکند.")
def __str__(self):
return f"Animal(name={self.name}, age={self.age}, species={self.species})"در این کد، کلاس Animal پایهای برای تمام حیوانات ایجاد میکند و متدهایی عمومی که تقریباً تمام حیوانات میتوانند داشته باشند، در آن قرار گرفته است. استفاده از متد __str__ باعث میشود چاپ شیء برای کاربر و برنامهنویس خوانا باشد و خروجی حرفهای ایجاد کند.
ایجاد کلاسهای فرزند و ویژگیهای اختصاصی
حال میتوانیم کلاسهای فرزند بسازیم که از کلاس پایه ارثبری میکنند و ویژگیها یا رفتارهای مخصوص خود را اضافه کنند. برای مثال، کلاس Dog میتواند متد make_sound خود را بازنویسی کند تا صدای واقعی سگ را تولید کند و ویژگی جدیدی مانند breed داشته باشد. به همین ترتیب، کلاس Cat میتواند متد مخصوص خود و ویژگی رنگ را داشته باشد.
نمونه کد کلاسهای فرزند:
class Dog(Animal):
def __init__(self, name, age, breed):
super().__init__(name, age, "سگ")
self.breed = breed
def make_sound(self):
print(f"{self.name} پارس کرد!")
class Cat(Animal):
def __init__(self, name, age, color):
super().__init__(name, age, "گربه")
self.color = color
def make_sound(self):
print(f"{self.name} میو کرد!")با استفاده از super(), ویژگیها و متدهای کلاس والد در کلاس فرزند مقداردهی و به ارث برده میشوند. این ساختار کد را منظم، قابل نگهداری و انعطافپذیر میکند.
استفاده از کلاسها و چندریختی
اکنون چند شیء از کلاسهای مختلف ایجاد میکنیم و با استفاده از حلقه و چندریختی متد make_sound را فراخوانی میکنیم. این کار نشان میدهد که یک نام متد میتواند برای اشیاء مختلف رفتار متفاوت داشته باشد، بدون آنکه نیاز باشد نوع شیء بررسی شود. این مثال عملی، درک مفهوم چندریختی را آسانتر میکند.
نمونه کد استفاده از چندریختی:
animals = [
Dog("سگ کوچولو", 3, "لابرادور"),
Cat("گربه زیبا", 2, "خاکستری"),
Animal("حیوان ناشناس", 5, "گونه نامشخص")
]
for animal in animals:
print(animal)
animal.make_sound()
animal.move()در این مثال، هر شیء رفتار مخصوص خود را نشان میدهد و در عین حال از ویژگیهای مشترک کلاس پایه بهره میبرد. همچنین چاپ شیء با __str__ خروجی خوانا تولید میکند.
جمعبندی پروژه کلاس حیوانات
در این پروژه یاد گرفتیم چگونه یک کلاس پایه تعریف کنیم، کلاسهای فرزند بسازیم و ویژگیها و متدهای اختصاصی اضافه کنیم. همچنین با مفهوم چندریختی آشنا شدیم و دیدیم چگونه میتوان از یک نام متد برای اشیاء مختلف با رفتار متفاوت استفاده کرد. این تمرین عملی، توانایی ما در طراحی سیستمهای شیءگرا و پروژههای واقعی را تقویت میکند و مهارت برنامهنویسی پایتون را به سطح حرفهای میرساند. توصیه میشود کلاسهای بیشتری برای حیوانات دیگر بسازید و متدهای جدید اضافه کنید تا تسلط کامل روی OOP پیدا کنید و آماده پروژههای بزرگتر شوید.
