دوره‌ها / JAVA / کلاس‌ها و اشیاء (Java OOP)

کلاس‌ها و اشیاء (Java OOP)

15 دقیقه Article پیش‌نمایش

مقدمه شیءگرایی (OOP): انقلابی در دنیای برنامه‌نویسی 🏗️☕

برنامه‌نویسی شیءگرا یا Object-Oriented Programming روشی از برنامه‌نویسی است که بر اساس "اشیاء" (Objects) بنا شده است. در این روش، ما به جای تمرکز روی توابع و منطقِ خطی، روی داده‌ها و موجودیت‌ها تمرکز می‌کنیم.

تفاوت برنامه‌نویسی رویه‌ای (Procedural) و شیءگرا (OOP)

  • رویه‌ای: مثل نوشتن یک "دستور پخت" است؛ مرحله به مرحله پیش می‌رویم (مثل کدهایی که تا الان نوشتیم).
  • شیءگرا: مثل ساختن یک "ماشین" است؛ قطعات مختلف (اشیاء) را می‌سازیم که هر کدام ویژگی و رفتار خود را دارند و با هم تعامل می‌کنند.

ارکان چهارگانه OOP 🏛️

شیءگرایی بر ۴ ستون اصلی استوار است که در این فصل با آن‌ها آشنا می‌شویم:

  1. Encapsulation (کپسوله‌سازی): مخفی کردن جزئیات داخلی و نمایش فقط موارد لازم.
  2. Inheritance (وراثت): انتقال ویژگی‌های یک کلاس به کلاس دیگر برای جلوگیری از تکرار.
  3. Polymorphism (چندریختی): توانایی یک موجودیت برای ظاهر شدن در چندین شکل مختلف.
  4. Abstraction (انتزاع): تمرکز روی "چه کاری انجام می‌شود" به جای "چگونه انجام می‌شود".
مزیت اصلی: OOP باعث می‌شود کدها ماژولارتر، قابل فهم‌تر برای انسان و برای پروژه‌های بزرگ بسیار ساده‌تر مدیریت شوند.

مثال عینی:

فرض کنید یک "کلاس" به نام Fruit داریم. اشیایی که از روی این کلاس ساخته می‌شوند می‌توانند Apple، Banana و Mango باشند. همگی میوه هستند اما هر کدام رنگ و طعم خاص خود را دارند.

زبان جاوا: جاوا یکی از خالص‌ترین زبان‌های شیءگراست. در جاوا تقریباً همه چیز باید داخل یک کلاس باشد.
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: مهندسی شیءگرایی و مدیریت حافظه 🏗️💎

در این بخش، به مفاهیمی می‌پردازیم که برای درک فیزیکیِ اتفاقاتِ پشت صحنه در جاوا ضروری هستند.

۱. کالبدشکافی شیء در حافظه Heap

زمانی که شما با دستور new یک شیء می‌سازید، جاوا بخشی از حافظه Heap را به آن اختصاص می‌دهد. هر شیء دارای یک "Header" است که شامل اطلاعات مدیریتی جاوا (مثل اطلاعات Garbage Collection) است و سپس فیلدها و داده‌های شیء قرار می‌گیرند. متغیرِ شما در واقع فقط یک "آدرس" یا رفرنس به این منطقه از حافظه را در خود دارد.

۲. مدیریت چرخه عمر اشیاء (Garbage Collection)

برخلاف زبان‌هایی مثل ++C، در جاوا شما نیازی به حذف دستی اشیاء ندارید. وقتی هیچ متغیری به یک شیء اشاره نکند (مثلاً ریفرنس آن null شود)، آن شیء "یتیم" می‌شود. Garbage Collector به صورت خودکار این اشیاء را شناسایی کرده و حافظه آن‌ها را برای استفاده‌های بعدی آزاد می‌کند.

۳. کدهای تمیز: جداسازی State و Behavior

یک کلاس خوب، کلاسی است که وضعیت (Attributes) را از رفتار (Methods) به درستی تفکیک کند. متغیرهای کلاس باید فقط داده‌هایی را نگه دارند که ذاتِ آن موجودیت را تعریف می‌کنند. افراط در تعریف Attributes باعث سنگین شدن اشیاء و پیچیدگی در تست‌نویسی می‌شود.

نکته پایانی: شیءگرایی فقط یک روش کدنویسی نیست؛ بلکه روشی برای "مدل‌سازی جهان واقعی" در دنیای دیجیتال است. هر چقدر مدل‌سازی شما دقیق‌تر باشد، نرم‌افزار شما پایدارتر خواهد بود.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

مفهوم پایه OOP Easy
سوال تمرین

در شیءگرایی، به نقشه یا الگوی ساختِ اشیاء چه می‌گویند؟ خروجی برنامه را برابر با پاسخ صحیح (به انگلیسی و حروف کوچک) قرار دهید.

پاسخ تمرین
JAVA
public class Main {
  public static void main(String[] args) {
    System.out.println("class");
  }
}

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.