آموزش اندروید فصل اول قسمت سوم – شی گرایی

آموزش اندروید فصل اول

در قسمت سوم آموزش اندروید ،مبحث جاوا را ادامه میدهیم و بیشتر با جاوا و مبحث شی گرایی جاوا که دارای زیر شاخه های بسیار مهمی چون ارث بری میباشد آشنا خواهیم شد و مباحثی چون سطح کنترل و override و .. را نیز توضیح خواهیم داد که در برنامه نویسی جاوا و در ادامه اندروید بسیار کار آمد خواهد بود.

آموزش اندروید فصل اول قسمت سوم – شی گرایی 

توجه : برای مشاهده تصاویر در سایز های اصلی بر روی آنها کلیک کنید

شی گرایی

در دنیای واقعی یک شیئ جدای از دیگر اشیاء می تواند وجود داشته باشد، با دیگر اشیاء تعامل داشته باشد و حتی چند شیئ با یکدیگر ادغام شده تا شیئی جدیدی را بوجود آورند. در واقع برنامه نویسی جاوا به منزله شروع کار با Object ها یا همان اشیاء در این زبان برنامه نویسی خواهد بود. از اینجای آموزش به بعد خواهیم دید که چه طور می توان یObject با خصوصیات منحصر به فردی ایجاد کرده و همچنین خواهیم دید که به چه نحوی می توان آن شیئ را در دیگر جاهای برنامه خود مورد استفاده قرار داد. در حقیقت اگر یک برنامه نوشته شده در جاوا را به منزله تعدادی Object در نظر بگیریم که در کنار یکدیگر قرار گرفته اند تا یکObject بزرگ تر از خود را که کار خاصی را می تواند انجام دهد بسازد(یک برنامه)، به سهولت خواهیم توانست Object ها را در یک زبان برنامه نوسی شیئ گرا درک کنیم.

در واقع با ساخت یک شیئ در برنامه خود، خواهیم توانست آن شیئ را به هر تعداد دفعه که بخواهیم مورد استفاده قرار دهیم و یا حتی چنانچه نیاز به تغییری در یکی از Attribute ها یا همان خصوصیات شیئ خاص داشته باشیم، صرفاً با اعمال تغییر در آن شیئ به خصوص تغییر اعمال شده در کل برنامه لحاظ خواهد شد. از سوی دیگر با ایجاد Object ها در یک برنامه کامپیوتری امکان Debug کردن یا مشکل یابی نیز برای ما راحت تر خواهد شد چرا که بجای درگیر کردن خود با کل پروژه، صرفاً می توانیم Object یی که به آن مشکوک هستیم را Debug کنیم.

.

در حقیقت یک شیئ در زبان برنامه نویسی شیئ گرا دارای دو چیز تحت عنوان Attribute و Behavior میباشد. به طور خلاصه Attributrها عبارتند از ویژگی هایی که یک شی را از شی دیگر در برنامه متفاوت میسازند. منظور از Behavior ها همان کارهایی است که یک object میتواند انجام دهد. در زبان برنامه نویسی جاوا object ها با استفاده از یک Class ایجاد میشوند. در حقیقت یک Class دربرگیرنده کلیه Attributeها و Behavior هایی است که یک object خواهد داشت.

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

.

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

حال زمانیکه هیچ کلید واژه محدود کننده ای قبل از نام یک کلاس، متد و یا متغیر نباشد، این سطح دسترسی Package Access نامیده می شود و بدان معنا است که عنصری که فاقد هرگونه public, protected, private  باشد در همان کلاس و یا دیگر کلاس های موجود در همان پکیج قابل دسترسی خواهد بود.

سپس یک Attribute که با استفاده از متغیر ها ایجاد میشود تعیین کرده و مقدار داده ایم و در انتها نیز یک Behavior برای کلاس ایجاد میکنیم که مقادیر رشته ای و مقدار متغیری که تعریف شد را در خروجی نمایش میدهد.

پس از تکمیل کلاس همانگونه که گفته شد باید یک شی از این کلاس در main برنامه ایجاد کرد و از آن طریق به خصوصیات این کلاس دسترسی پیدا کرد چون کامپایلر برنامه main را به عنوان نقطه شروع در نظر میگیرند پس در main برنامه نیز چنین کد نویسی میکنیم

ارث بری

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

به طور خلاصه اگر برنامه نویس بخواهد یک Object ایجاد کند که تمامی و یا برخی از ویژگی های یک Object دیگر را داشته باشد می تواند از قابلیت ارث بری در زبان برنامه نویسی جاوا استفاده کند. در ضمن اگر برنامه نویس بخواهد تا یک Object کلیه ی ویژگی های  Objectدیگری را به ارث برد به جز یک ویژگی که می بایست تغییر کند، این کار از طریق وراثت باز هم امکان پذیر است. از سوی دیگر وراثت سلسله مراتبی نیز امکان پذیر است.

.

فرض کنیم که ما سهObject داریم به طوریکه Object شماره دو از Object شماره یک ارث بری می کند وObject شماره سه از Object شماره دو. در واقع Object شماره سه نه تنها از ویژگی هایObject شماره دو برخوردار خواهد بود، بلکه از آنجا که Object شماره دو از Object شماره یک ارث بری می کند، Object شماره سه ویژگی های Object شماره یک را نیز در بر خواهد داشت. در این مثال Object شماره یک به عنوان Superclass یا “کلاس اصلیتلقی می شود و Object های شماره دو و سه به عنوان Subclass یا “کلاس زیرشاخهتلقی خواهند شد. جالب است بدانیم که در مثال فوق اگرچه که Object شماره دو برای Object شماره یک به عنوان یک Subclass تلقی می شود اما این در حالی است که برای Object شماره سه به عنوان یک Superclass مد نظر قرار داده می شود. این رابطه به خوبی در تصویر زیر قابل مشاهده است

Untitled

Override

در ادامه بحث ارث بری مبحث Override کردن نیز وجود دارد و بدین معنی است که مثلا در کلاسی که از کلاس دیگر ارث بری میکند برای استفاده از متدها و متغیر ها و ..  مربوط به superclass یا کلاس اصلی درون subclass یا زیر کلاس باید از Override کردن استفاده کنیم بدین صورت که قبل از مثلا متد عبارت  @Override را ذکر کرده سپس نام و سطح کنترل متد را تایپ کرده و بدنه جدیدی برای متد ایجاد میکنیم مانند مثال زیر که کلاس Father از کلاس GrandFather با استفاده از کلمه کلیدی extends ارث بری میکند و از متد آن هم استفاده میکند

.

سازنده ها –Constructor

چنانچه بخواهیم به طور خلاصه بگوییم که Constructor چیست، بایستی گفت که یکConstructor همانند یک متد است با این تفاوت که نام آن دقیقاً با نام کلاس یکی بوده و از سوی دیگر به هیچ وجه نمی تواند داده ای را return کند واقعیت دیگری که در مورد Constructor ها صدق میکند این است که یک Constructor می تواند هیچ پارامتری نداشته باشند، یک پارامتر داشته و یا حتی بیش از یک پارامتر داشته باشد.

.

در واقع زمانیکه ما یک شیئ از روی کلاس خود می سازیم، Constructor آن کلاس فرا خوانده می شود. کار این Constructor این است که Field های آن شیئ جدید را Initialize کرده یا به عبارت دیگر آغاز کند. نکته ای که در اینجا می بایست حتما مد نظر قرار داده شود این است که ما برای ساخت یک شیئ جدید از روی یک کلاس نیاز به یک Constructor داریم و اگر ما این Constructor را ننویسیم، خودCompiler در حین ساخت شیئ جدید یک Constructor که فاقد هرگونه پارامتری باشد را برای ما در حین Compile شدن خواهد ساخت. این Constructor تحت عنوان Default Constructor یا Constructor پیش فرض شناخته می شود. کاری که این Constructorانجام می دهد این است که کلیه متغیرهای Field را با مقدار اولیه Default فرا می خواند)مقدار  اولیه صفر برای متغیر های عددی , مقدار False برای متغیر های Boolean و مقدار null برای مواردی همچون string)

حال اگر ما Constructor برای کلاس خود طراحی کنیم Compiler هیچکونه Constructor یی از جنش Default به صورت خودکار نخواهد ساخت و Constructor ما را مورد استفاده قرار میدهد.

مانند مثال زیر

مدرس : خانم مهندس داودی نژاد

آموزش اندروید فصل اول قسمت دوم

آموزش اندروید فصل اول قسمت چهارم

Post Source : tejariapp.com

 

درباره نویسنده

مطالب مرتبط

نظر بدهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *