اگه میخوای موارد زیر از جاوا رو بدونی جلسه بیست و پنجم رو دانلود کن
Abstraction (انتزاع)
شروع با مثال از دنیای واقعی برای درک بهتر مفهوم انتزاع
Abstraction در جاوا
کلاس های انتزاعی (Abstract Class)
نحوه نوشتن کلاس abstract
متدهای انتزاعی (Abstract Methods)
روش اعلام متدهای انتزاعی
وقتی یک متد انتزاعی اعلام میشود دو پیامد دارد
تمامی مفاهیم با مثال ساده توضیح داده شده است
Abstraction (انتزاع) فرایند پنهان کردن جزییات پیاده سازی برنامه و تنها نشان دادن قابلیت برنامه به کاربر (کسی که تنها استفاده کننده از برنامه است) است.
خب تا اینجا یک تعریف رسمی از Abstraction یا انتزاع کردیم از آنجایی که ما با هم خیلی راحت هستیم رسمی بازی رو میزاریم کنار و راحت انتزاع یا Abstraction را با هم بررسی میکنیم 😊
من دیگه از اینجا به بعد بجای واژه Abstraction ،واژه انتزاع را به کار میبرم که هی نخوام زبان کیبرد رو پشت سرهم عوض کنم 😊
با مثال از دنیای واقعی شروع میکنم:
مثال 1:انجام بازی در گوشی همراه
مثلا وقتی شما گوشی همراه در دست دارید و دارید بازی میکنید از فرایند و جزییات پشت بازی خبر ندارید!! مثلا وقتی در یک بازی جنگی با یک اسلحه شلیک میکنید و گلوله به سمت هدف پرتاب میشود اصلا مهم نیست که شما بدونید چطور در این بازی گلوله داره حرکت میکنه و چطور وقتی به هدف برخورد میکند شما امتیاز میگیرید!!! در هنگام بازی تنها شما با چند دکمه ای که روی گوشی شما هست کار میکنید و هیچ خبری از پشت کار ندارید!!! انتزاع هم همین مفهوم رو دنبال میکنه ،انتزاع هدفش اینه جزییات برنامه باید از دید کاربر پنهان شود و تنها قابلیت های برنامه در معرض دید کاربر قرار گیرد.
مثال 2:فیلم سینمایی
وقتی شما یک فیلم سینمایی را تماشا میکنید و از آن لذت میبرید از جزییات پشت صحنه و کادر کارگردانی و فیلم برداری و .... یعنی از جزییات کار بی خبر هستید و همزمان تنها صحنه های خود فیلم را میبینید در حالی که جزییات اجرای فیلم را پنهان کرده اند.
مثال 3:کامپیوتر
همزمان که دارم این اموزش را برای شما تهیه میکنم تنها از قابلیت کامپیوتر یعنی دکمه های کیبرد استفاده میکنم و از جزییات پردازش این دکمه هایی که فشار میدهم، مانیتوری که کلمات وارد شده را نمایش میدهد و ده ها قطعه ای که در کامپیوتر وجود دارد و هر یک عمل متفاوتی را انجام میدهد بی خبر هستم.
انتزاع هم میگه ما باید کاری کنیم که جزییات برنامه پنهان شود و تنها قابلیت برنامه را برای کاربر به نمایش بگذاریم.
با این کار هم امنیت برنامه بالا میرود و هم کاربر آسوده تر است.چرا امنیت برنامه بالا میرود؟ دوباره میریم سراغ مثال چون که بهترین راه یادگیری فقط مثال است و دیگر هیچ 😊
به نظر شما امنیت کدام کیس کامپیوتر زیر بالاتر است؟!
خب مسلما کیس گزینه الف) دارای امنیت بیشتری است،چون کاربر به جزییات آن دسرسی ندارد اما کیس ب) دارای امنیت پایین تری هست چون حتی یک کاربر عادی هم میتواند به جزییات و قطعات درون آن دسرسی داشته و آن را دستکاری کند و الله اعلم که چه بر سر این کیس آورد 😊
پس انتزاع در شی گرایی یک مفهوم خوبیست و به ما کمک میکنه با پنهان سازی جزییات پیاده سازی برنامه و تنها نمایش قابلیت برنامه به کاربر امنیت برنامه بالا رود.
Abstraction در جاوا:
در جاوا ما کلاس مون رو میتوانیم انتزاع یا abstraction اعلام کنیم.
در جاوا هر کلاسی را میشود انتزاعی اعلام کرد اما بهتر است کلاس هایی را انتزاعی اعلام کنیم که مفهوم کلی داشته باشند یعنی کلاسی که مفهوم کل تر ،بزرگ تر داشته و میتواند نقش پدر کلاس های دیگر را بازی کند:
مثال: مثلا کلاس Animal (حیوان) یک مفهوم کلی را در بر دارد وقتی ما میگوییم حیوان منظورمان مشخص نیست کدام و چه نوع حیوانی،آیا منظور ما از حیوان گربه یا سگ یا مرغ یا خروس یا ماهی و .... است؟یا کلاس automobile (اتومبیل) نیز یک مفهوم کلی را میرساند و مشخص نیست منظور از اتومبیل ماشین شخصی است یا اتوبوس یا قطار یا هواپیما یا کشتی و....است پس کلاس هایی نظیر Animal و automobile و.... که مفهوم کلی را میرسانند و میتوانند نقش کلاس پدر را بازی کنند را میتوانیم انتزاعی یا abstract تعریف کنیم.
کلاس های انتزاعی (Abstract Class):
وقتی کلمه کلیدی abstract را قبل از کلمه class میآوریم کلاسمون تبدیل به یک کلاس انتزاعی (abstract) میشود.
در دوره پیشرفته برنامه نویسی جاوا به صورت ویدئویی به موضوع انتزاع(Abstract)پرداخته ایم. |
نحوه نوشتن کلاس abstract:
public abstract class NameClass { |
یا این که میتوانید هنگام ایجاد کلاس جدید و تعیین نام برای کلاس تیک گزینه abstract را بزنید: تصویر(1)
نتیجه :
public abstract class Animal { } |
✔ یک کلاس انتزاعی (abstract) میتواند در بدنه خود یک متد از نوع انتزاعی (abstract) داشته باشد و بلعکس میتواند هیچ متد از نوع انتزاعی (abstract) در بدنه خود نداشته باشد.
✔ متد انتزاعی (abstract) به متدی میگویند که بدنه یا بلوک نداشته باشد!!!!یعنی تنها میتواند نوع،نام ،پارامتر داشته باشد و همچنین کلمه کلیدی abstract قبل از نوع متد آورده میشود:
• اگر یک کلاس حداقل یک متد انتزاعی (abstract) داشت حتما باید کلاس از نوع انتزاعی (abstract) اعلام و تعریف شود:
خطای کامپایل!!!، زیرا این کلاس در بدنه خود یک متد انتزاعی (abstract) دارد اما کلاس از نوع انتزاعی (abstract) تعریف نشده است. شکل صحیح کلاس بالا بصورت زیر است:
• اگر یک کلاس از نوع انتزاعی (abstract) اعلام و تعریف کردیم دیگر نمیتوان از آن نمونه و شی ایجاد کنیم.
• خب وقتی ما یک کلاس را انتزاعی اعلام میکنیم و دیگر نمیتوانیم شی از ان ایجاد کنیم خب چطور به ویژگی ها و رفتار های آن دسری پیدا کنیم؟؟؟؟؟؟؟!!!!!!!!!!!!!!!!!!
پاسخ: میتوانیم از طریق کلاس دیگر کلاس انتزاعی را به ارث ببریم و متدهای انتزاعی آن را در کلاس فرزند پیاده سازی کنیم و از کلاس انتزاعی استفاده کنیم.
....ادامه این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)
این جلسه آموزشی را میتوانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.
لینک دانلود
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690
بستن دیگر باز نشو! |