جلسه نهم
مقدمه
برنامهنویسی شیءگرا (Object-Oriented Programming یا OOP) یکی از محبوبترین و پرکاربردترین پارادایمهای برنامهنویسی است. این روش بر پایهٔ مفهوم «اشیاء» بنا شده که میتوانند دادهها و رفتارهای مرتبط با آنها را در خود نگه دارند. هدف اصلی این پارادایم، سازماندهی بهتر کد و شبیهسازی دنیای واقعی در برنامهنویسی است.
۱) کلاسها و اشیاء (Classes and Objects)
کلاس (Class)
کلاس به عنوان یک نقشه یا الگو عمل میکند. کلاس ویژگیها (دادهها) و رفتارهای (توابع) مشترک برای گروهی از اشیاء را تعریف میکند، اما خود به تنهایی شامل دادههای واقعی نیست.
شیء (Object)
شیء یک نمونهٔ واقعی ساخته شده از روی کلاس است. هر شیء دارای مقادیر مشخصی برای ویژگیهای تعریف شده در کلاس است.
مثال مفهومی
اگر «اتومبیل» یک کلاس باشد، یک اتومبیل خاص با رنگ قرمز و شماره پلاک معین، یک «شیء» از آن کلاس محسوب میشود.
۲) کپسولهسازی (Encapsulation)
تعریف
کپسولهسازی به معنای بستهبندی دادهها و متدهایی است که روی آنها کار میکنند، به طوری که دسترسی مستقیم به جزئیات داخلی دادهها از بیرون محدود شود.
مزایا
- محافظت از دادهها در برابر تغییرات ناخواسته
- کاهش وابستگی بین بخشهای مختلف برنامه
- امکان تغییر در پیادهسازی داخلی بدون تحت تأثیر قرار دادن سایر بخشها
۳) وراثت (Inheritance)
تعریف
وراثت مکانیزمی است که به یک کلاس اجازه میدهد ویژگیها و رفتارهای کلاس دیگری را به ارث ببرد. کلاسی که ویژگیها را میدهد «کلاس پایه» (Parent) و کلاسی که ارث میبرد «کلاس مشتقشده» (Child) نامیده میشود.
مزایا
- بازاستفاده از کد (Code Reuse)
- ایجاد سلسلهمراتب منطقی بین مفاهیم
- کاهش تکرار در تعریف ویژگیهای مشترک
۴) چندریختی (Polymorphism)
تعریف
چندریختی به معنای توانایی یک موجودیت (مانند یک متد یا تابع) برای داشتن رفتارهای مختلف در شرایط مختلف است. به عبارت دیگر، اشیاءِ کلاسهای مختلف میتوانند به یک فراخوانی واحد، پاسخهای متفاوتی بدهند.
مزایا
- افزایش انعطافپذیری برنامه
- امکان مدیریت اشیاء مختلف به صورت یکسان (در صورتی که از یک ریشه باشند)
- سادهتر شدن توسعه و گسترش سیستم
۵) انتزاع (Abstraction)
تعریف
انتزاع به معنای نمایش ویژگیهای ضروری یک شیء و پنهان کردن جزئیات پیچیده و غیرضروری است. کاربر فقط با رابطهای کاربری (Interface) تعامل دارد و نیازی به دانستن چگونگی کارکرد داخلی سیستم ندارد.
۶) مزایای کلی برنامهنویسی شیءگرا
- قابلیت نگهداری بالا: تغییر در یک بخش به ندرت باعث خرابی در کل سیستم میشود.
- قابلیت استفادهٔ مجدد: کلاسهای طراحیشده را میتوان در پروژههای دیگر استفاده کرد.
- توسعهٔ تیمی آسانتر: اعضای تیم میتوانند روی اشیاء و کلاسهای مستقل کار کنند.
- مدلسازی بهتر: تطابق بیشتر ساختار برنامه با مفاهیم دنیای واقعی.
۷) جمعبندی
- کلاسها الگو هستند و اشیاء نمونههای واقعی.
- کپسولهسازی از دادهها محافظت میکند.
- وراثت باعث جلوگیری از دوبارهکاری و استفاده مجدد از کد میشود.
- چندریختی اجازه میدهد یک عملیات با توجه به نوع شیء، رفتاری متفاوت داشته باشد.
- این مفاهیم ستونهای اصلی توسعهٔ نرمافزارهای مدرن و بزرگ هستند.