کلاس Abstract در جاوا و آشنایی با مفهوم Abstraction

مفهوم Abstraction  (کلاس های انتزاعی) در جاوا چیست
تاریخ بروزرسانی : 25 مرداد 1398 | تعداد بازدید : 12248 | زمان خواندن مقاله : 5 دقیقه
جاوا،
اگر به تازگی یادگیری جاوا را شروع کرده اید، پس حتما با مفهومی به نام شی گرایی یا oop برخورد کرده اید. شی گرایی یک الگو در برنامه نویسی است که برگرفته از دنیای واقعی است. وراثت(inheritance) چند ریختی  (Polymorphism) انتزاع یا تجرید (Abstraction) و کپسوله سازی (Encapsulation) چهار اصل مهم در شی گرایی هستند که ما در این نوشته به مفهوم انتزاع و نحوه پیاده سازی انتزاع در جاوا می پردازیم.

آشنایی با مفهوم انتزاع (Abstraction) :آشنایی با Abstraction

انتزاع فرایندی است که طی آن جزئیات پیاده سازی و عملکرد برنامه از کاربر مخفی می ماند و فقط یک سری امکانات آماده برای استفاده از برنامه در اختیار کاربر قرار می گیرد. در اصل انتزاع abstraction)) هنر پنهان کرده جزئیات از کاربر است. بیایید سعی کنیم این مسئله را با چند مثال در دنیای واقعی درک کنیم. یک فرد در حال رانندگی را در نظر بگیرید این فرد می داند با فشار دادن ترمز، باعث متوقف شدن خودرو می شود. اما او نمی داند که چگونه این اتفاق می افتد او از مکانیسم وجزئیات داخلی خودرو اطلاعی ندارد.
مثالی دیگر: به تصویر روبه رو نگاه کنید زمانی که با شما تماس میگیرند، شما با انتخاب گزینه ای تماس را برقرار می کنید یا می توانید آن را رد کنید. اما کل ماجرا این نیست، کد های زیادی وجود دارد که در پس زمینه اجرا می شود. بنابراین شما نحوه عملکرد پردازش داخلی و نحوه ایجاد تماس را نمی دانید.  

کلاس های Abstraction در جاوا :

در بیشتر موارد ما کلاس ها را طراحی می کنیم تا از روی آنها شئ هایی بسازیم. اما کلاس هایی وجود دارند که از آنها شئ ساخته نمی شود به این کلاس ها، کلاس های انتزاعی می گویم. هدف از ایجاد کلاس انتزاعی، ایجاد یک ابر کلاس مناسب است که می توانند یک یا چند ویژگی کلی و مشترکی را بین زیر کلاس های خود به اشتراک بگذارد.پس انتزاعی سازی می تواند به کاهش پیچیدگی کمک کند. دو روش برای پیاده سازی مفهوم Abstraction در جاوا وجود دارد:

  1. Abstract class
  2. Interface

بیایید این مفاهیم را با جزئیات بیشتری برسی کنیم.

آموزش جاوا

کلاس abstract در جاوا :

برای تعریف کلاس abstract در جاوا باید از کلید واژه abstract استفاده شود. زمانی که شما یک کلاس را به صورت abstract تعریف می کنید دیگر امکان تعریف نمونه سازی از کلاس را ندارید. برای استفاده از کلاس abstract باید این کلاس توسط کلاس های دیگر به ارث برده شود.

  • در داخل این کلاس می توانیم فید ها و متد هایی را تعریف کنیم.
  • متد هایی که داخل کلاسabatract  تعریف می شوند می توانند بدون بدنه (متد های abstract) یا با بدنه (همان متد های معمولی) باشند.
  • متد هایی که با کلمه abstract تعریف می شوند فاقد بدنه هستند. در این متد ها فقط پیش الگوی متد (نام و نوع متد و پارامتر های متد) نوشته می شود. در واقع متد های abstract داخل کلاس کاری انجام نمی دهند ما فقط متد را داخل کلاس تعریف می کنیم.
  • برای استفاده از کلاس abstract در جاوا، باید این کلاس را توسط کلاسی دیگر ارث بری کنید .  کلاسی که از کلاس abstract ارث بری می کند باید تمام متد های abstract را دوباره نویسی و پیاده سازی کند یعنی بدنه توابع را تعیین کند.
  • بدنه متد abstract توسط زیر کلاس ها مشخص می شود و هر کدام از زیر کلاس ها پیاده سازی مخصوص به خود را انجام می دهند.
  • کلاس های abstract می تواند متد های معمولی یا غیر abstract داشته باشد. همان طور که می دانید متد های معمولی باید بدنه داشته باشند و نیازی به پیاده سازی ندارند.
  • با استفاده از کلاس abstract در جاوا ما می توانیم درصدی (0 تا 100 درصد) انتزاعی سازی داشته باشیم.

 

بیشتر بخوانید: آموزش متدهای generic در جاوا را کم ترین زمان ممکن یاد بگیرwink

 

Interface در جاوا :

اینترفیس در جاوا مانند یک طرح یا نقشه کلی برای کلاس می باشد. داخل interface برنامه نویس می تواند فقط متدهای abstract و بدون بدنه تعریف کند. در interface مشخصات کلی متد تعریف میشود و این کلاس های مشتق شده هستند که ملزم به پیاده سازی کامل متد ها هستند.

  • فیلد های داخل interface به صورت پیش فرض final ,static ,public هستند و متد های تعریف شده abstract ,public می باشند.
  • یکی از ویژگی های مهم interface ها فراهم سازی ارث بری چند گانه برای برنامه نویسی جاوا است. به کمک ارث بری چند گانه یک کلاس میتواند فرزند دو یا چند interface باشد.
  • مانند کلاس abstract امکان نمونه سازی از روی interface وجود ندارد.
  • با استفاده از interface ها میتوانیم 100 درصد مفهوم انتزاعی سازی را پیاده سازی کنیم.

بنابراین، هر دو کلاس abstract و interfaceها برای پیاده سازی Abstraction در جاوا استفاده می شود و هرکدام راه حل هایی را در هنگام طراحی ارائه می دهند که هر دو راه حل از اهمیت ویژه ای برخوردار هستند. اما بهترین انتخاب برای اکثر توسعه دهندگان استفاده از interface هاست زیرا می توانند به کمک آنها مفهوم انتزاع را کامل پیاده سازی کنند.

برای آشنایی بیشتر مفهوم Abstraction در جاوا، آموزش های ویژه ای را برای شما آماده کرده ایم که صدرصد رایگان هستند با تهیه دوره آموزش جاوا می توانید تمام مباحث برنامه نویسی جاوا را همراه با مثال های کاربردی فرا گیرید. پس این فرصت فوق العاده را از دست ندهید و با درسمن سرعت یادگیری و پیشرفت خود را افزایش دهید.

 


کلمات کلیدی :
جاوا