انتزاع(Abstraction)
انتزاع یعنی: بخشی از موجودیت یک مفهوم را که , میان همه وارثان مشترک است را پیش تعریف کنیم. این توانایی منجر به داشتن نگاه مشابه به موجودیت های مشابه گردد. به عنوان مثال برای شیء ای مانند حیوان یا پرنده نمی توان صفتی همچون " دست های دو انگشتی, بال های کوتاه یا بلند, تعداد پا ها, نوع دندان و ... " تعریف کرد. زیرا موجودیت حیوان و پرنده یک موجودیت انتزاعی است.
در دانش رایانه و مهندسی نرمافزار به معنای تفکیک مباحث مربوط به هم و نگریستن به موضوع, جدای از مباحث وابسته به آن است. مزیت این کار در مهندسی نرمافزار کمک به مدیریت پیچیدگی و پیشگیری از چفت شدگی و وابستگی شدید (Tight Coupling) اجزای سیستم به یکدیگر است که باید در سامانههای نرمافزاری تا حد امکان از آن کاست(پیاده سازی Decoupling).
نکته : از روی کلاس های Abstract نمی توان شیء(نمونه) ایجاد کرد, در واقع قابل نمونه سازی(Instantiate) نیست. از شیء حیوان و پرنده نمی توان نمونه ساخت و فقط یک نمونه می تواند وجود داشته باشد, زیرا این(کلاس Abstract) تنها نمونه موجود است . این نمونه ها بسیار مهم هستند , زیرا این نمونه ها هستند که ساختار یک سلسله مراتب را تشکیل می دهند و صفات و رفتار های کل آن را معین می کنند.
* کلاسی که Abstract نباشد, کلاس Concrete است. کلاس Concrete(کلاس فرزند) یعنی کلاسی که می توان از روی آن شیء ایجاد کرد و متد ها در آن پیاده سازی می شوند.
مثال :
توجه داشته باشید که از کلاس Employee نمی توانیم نمونه ایجاد کنیم و برنامه با ارور مواجه می شود. حال کلاس Employee را توسعه(بسط یا گسترش) می دهیم :
حال ما می توانیم از کلاس Salary شیء(نمونه) ایجاد کنیم. کلاس Salary سه فیلد و هفت متد کلاس Employee را به ارث برده است.
و در نهایت خروجی آن :
متد Abstract :
متد های Abstract در کلاسی که Abstract می باشد فقط اعلان می شود(فقط امضاء دارد) و هیچ بدنه ای ندارد و باید در کلاس های فرزند پیاده سازی شود. مثال :
و همچنین پیاده سازی آن در یک کلاس فرزند :
نتیجه گیری :
* انتزاع(Abstract) یعنی: اطلاعات جزئی را کاهش دادن, به طوری که شخص بتواند روی مفاهیم کمتری تمرکز کند.
* انتزاع یعنی: مفهوم یا ایدهای که وابسته به هیچ نمونه خاصی نباشد .
* انتزاع یعنی: کلاسی که نمی شود از روی آن نمونه ایجاد کرد, زیرا این کلاس هنوز کامل نیست و این(این کلاس)
تنها نمونه موجود است.
* کلاس Abstract یعنی: کلاسی که هنوز کامل نشده و پیاده سازی نشده است.
* متد های کلاس انتزاعی باید در کلاس های مشتق شده پیاده سازی(Implement) شوند.
* یکی از مزایای کلاس Abstract فراهم کردن یک کلاس پایه برای دیگر کلاس های مشتق شده است.
* کلاس Abstract یعنی کلاسی که نا تمام است و باید در سطح فرزندان تکمیل شود.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.