کلاس و شی در برنامه‌نویسی شیءگرا چه مفهومی دارند

خلاصه
1404/05/23

در برنامه‌نویسی شیءگرا (Object-Oriented Programming یا OOP)، کلاس و شیء دو مفهوم اساسی و مرتبط هستند که به درک و سازماندهی کد کمک می‌کنند. به طور خلاصه: **کلاس (Class):** *

کلاس و شی در برنامه‌نویسی شیءگرا چه مفهومی دارند

در برنامه‌نویسی شیءگرا (Object-Oriented Programming یا OOP)، کلاس و شیء دو مفهوم اساسی و مرتبط هستند که به درک و سازماندهی کد کمک می‌کنند. به طور خلاصه:

**کلاس (Class):**

* **تعریف:** کلاس یک الگو، طرح اولیه یا نقشه برای ایجاد اشیاء است. می‌توان آن را به عنوان یک نوع داده تعریف کرد که مشخص می‌کند یک شیء چه ویژگی‌هایی (attributes) و چه رفتارهایی (methods) خواهد داشت.
* **شبیه به قالب:** مانند یک قالب شیرینی‌پزی، کلاس مشخص می‌کند که یک شیء چگونه باید باشد.
* **اجزاء:**
* **ویژگی‌ها (Attributes/Properties):** متغیرهایی هستند که داده‌های مربوط به یک شیء را نگهداری می‌کنند. به عنوان مثال، یک کلاس `Person` می‌تواند ویژگی‌های `name` (نام)، `age` (سن) و `address` (آدرس) داشته باشد.
* **متدها (Methods/Functions):** توابعی هستند که رفتارهای یک شیء را تعریف می‌کنند. به عنوان مثال، یک کلاس `Car` می‌تواند متدهای `start()` (روشن کردن)، `accelerate()` (شتاب گرفتن) و `brake()` (ترمز کردن) داشته باشد.
* **نکته:** کلاس به خودی خود یک شیء نیست، بلکه فقط یک تعریف یا نقشه است.

**شیء (Object):**

* **تعریف:** شیء یک نمونه (instance) واقعی از یک کلاس است. زمانی که یک کلاس را ایجاد می‌کنید، در واقع یک نوع داده جدید تعریف می‌کنید. سپس می‌توانید اشیایی از این نوع ایجاد کنید.
* **شبیه به شیرینی:** مانند شیرینی‌ای که از قالب شیرینی‌پزی ایجاد می‌شود، شیء یک موجودیت مستقل است که بر اساس تعریف کلاس ساخته شده است.
* **اجزاء:**
* **مقادیر ویژگی‌ها:** هر شیء دارای مقادیر خاص خودش برای ویژگی‌های تعریف شده در کلاس است. به عنوان مثال، یک شیء از کلاس `Person` ممکن است `name="Ali"`, `age=30`, و `address="Tehran"` داشته باشد.
* **قابلیت اجرای متدها:** هر شیء می‌تواند متدهای تعریف شده در کلاس را اجرا کند.

**مقایسه و مثال:**

فرض کنید می‌خواهید یک برنامه برای مدیریت اطلاعات دانشجویان بسازید.

* **کلاس `Student`:**
* **ویژگی‌ها:** `name` (نام)، `student_id` (شماره دانشجویی)، `major` (رشته تحصیلی)، `gpa` (معدل)
* **متدها:** `enroll_in_course()` (ثبت نام در درس)، `calculate_gpa()` (محاسبه معدل)، `display_info()` (نمایش اطلاعات)
* **شیء `student1`:** یک نمونه از کلاس `Student` با مقادیر خاص خودش.
* `name = "Reza"`
* `student_id = "12345"`
* `major = "Computer Science"`
* `gpa = 3.8`
* این شیء می‌تواند متدهای `enroll_in_course()`، `calculate_gpa()` و `display_info()` را اجرا کند.
* **شیء `student2`:** یک نمونه دیگر از کلاس `Student` با مقادیر متفاوت.
* `name = "Sara"`
* `student_id