اگه میخوای موارد زیر از جاوا رو بدونی جلسه بیست و پنجم رو دانلود کن
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:
public abstract class NameClass { |
یا این که می توانید هنگام ایجاد کلاس جدید و تعیین نام برای کلاس تیک گزینه abstract را بزنید: تصویر(1)
نتیجه :
public abstract class Animal { } |
✔ یک کلاس انتزاعی (abstract) می تواند در بدنه خود یک متد از نوع انتزاعی (abstract) داشته باشد و بلعکس می تواند هیچ متد از نوع انتزاعی (abstract) در بدنه خود نداشته باشد.
✔ متد انتزاعی (abstract) به متدی می گویند که بدنه یا بلوک نداشته باشد!!!!یعنی تنها می تواند نوع،نام ،پارامتر داشته باشد و همچنین کلمه کلیدی abstract قبل از نوع متد آورده می شود:
• اگر یک کلاس حداقل یک متد انتزاعی (abstract) داشت حتما باید کلاس از نوع انتزاعی (abstract) اعلام و تعریف شود:
خطای کامپایل!!! ، زیرا این کلاس در بدنه خود یک متد انتزاعی (abstract) دارد اما کلاس از نوع انتزاعی (abstract) تعریف نشده است. شکل صحیح کلاس بالا بصورت زیر است:
• اگر یک کلاس از نوع انتزاعی (abstract) اعلام و تعریف کردیم دیگر نمی توان از آن نمونه و شی ایجاد کنیم.
• خب وقتی ما یک کلاس را انتزاعی اعلام میکنیم و دیگر نمی توانیم شی از ان ایجاد کنیم خب چطور به ویژگی ها و رفتار های آن دسری پیدا کنیم؟؟؟؟؟؟؟!!!!!!!!!!!!!!!!!!
پاسخ: می توانیم از طریق کلاس دیگر کلاس انتزاعی را به ارث ببریم و متدهای انتزاعی آن را در کلاس فرزند پیاده سازی کنیم و از کلاس انتزاعی استفاده کنیم.
....ادامه این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)
این جلسه آموزشی را می توانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.
لینک دانلود
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
سایت جاواپرو با هدف تولید محتوای آموزشی با کیفیت رایگان در زمینه برنامه نویسی جاوا و اندروید فعالیت خود را در سال 1395 شروع کرد.امیدواریم بتوانیم دامنه گسترده تری از موضوعات پر نیاز در زمینه برنامه نویسی جاوا و اندروید را البته با حمایت شما پوشش دهیم.
دفتر مرکزی:بوشهر-برازجان-خیابان ماحوزی-سه راه اعتصامی
تلفن تماس: 09301904690