جلسه نهم-شروع برنامه نویسی شی گرا

جلسه نهم : شروع برنامه نویسی شی گرا (Object Oriented Programming )

نعریف برنامه نویسی شی گرا :

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

مثال شی گرایی : یک شرکت بزرگ خودور ساز ممکن است هر بخش خودرو را از طریق یک تولید کننده خارجی تامین نماید. به عنوان مثال موتور را از شرکت A و گیربکس را از شرکت B در اینجا تنها عملکرد بخشهای مختلف اهمیت دارد و نحوه هماهنگی قطعات با یکدیگر نه جزئیات درونی هر قطعه (عملکرد تمام قطعات داخلی موتور مورد توجه قرار نمیگیرد و اهمیتی ندارد)

ویزگیهای برنامه نویسی شی گرا:

  • کپسوله سازی(Encapsulation)
  • وراثت (Inheritance)
  • چند ریختی (Polymorphism)
  • انتزاعی(Abstraction)

کپسوله سازی (Encapsulation) :

یکی از ویژگی های برنامه نویسی شی گرایی کپسوله سازی است .برنامه از ۲ بخش داده و کد تشکیل شده . کپسوله سازی به این مفهوم است که داده ها و کدهای برنامه در یک (کپسول) قرار میگیرند واین امر داده ها و کدها را از استفاده نادرست و تداخل خارجی ایمن نگه می دارد.در شی گرایی کپسول ها کلاس ها هستند.

وراثت(inheritance):

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

مثال: پدر و فرزندی را در نظر بگیرید . هر پدری مشخصات فردی به خصوصی دارد . فرزند وی می تواند همه خصوصیات او را به ارث برد و خصوصیتهای دیگری نیز داشته باشد که پدرش ندارد . این یعنی ارث بری !

چند ریختی (polymorphism):

این ویژگی به مفهوم یک شکل و چند ریخت داشتن است. چند ریختی به این مفهوم می باشد که در شیء گرایی ، این امکان فراهم شده تا دو و یا بیش از دو متد همنام در یک کلاس تعریف نمود، مشروط بر اینکه تعریف پارامترهای آن متفاوت باشد.

کلاسها(Classes) :

کلاس (class) ، اساسی ترین مفهوم شی گرایی است . یک کلاس یک الگو یا چهارچوب از پیش تعریف شده است که اشیا ( objects ) از روی آن ساخته می شوند . هر کلاس مجموعه ای از خواص ( Properties ) و متدها ( Methods ) است ، که کلاس آنها را به اشیایی که از رویش ساخته می شوند ، منتقل میکند .
برای مثال موجودیت دانشجو در مجموعه دانشگاه یک کلاس است ، که هر دانشجو یک شی ساخته شده از روی آن است .

کلاس ها همینزور روش قدرتمند تری برای ایجاد يک نوع داده جدید هستند. وقتی یک کلاس تعریف می شود در اصل نوع داده جدیدی ساخته می شود که فيلدها و توابع خود را دارد.

شی (Object)، یک نمونه ساخته شده از روی کلاس مادر است . شی خصوصیات و متدهای کلاس مادر را کپی کرده و به همراه دارد .

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

پکیج(package):

برای گروه بندی کلاس ها و interface ها (در بخشهای بعدی به طور مفصل به این مبحث می پردازیم)که به هم مرتبط هستند از package استفاده می شود.نحوه عملکرد پکیجها همانند فولدرها در ویندوز می باشد.

امکان ایجاد چندین کلاس با نامهای مشابه در پکیجهای متفاوت وجود دارد.

نحوه تعریف پکیج:

package MyPackage;

مثال :

نکته: برای استفاده از کلاسهای موجود در پکیجهای دیگر میتوان مسیر کلاس مورد نیاز را از طریق کلمه کلیدی import برای کلاس جاری مشخص نمود. مثال :

نکته : برای دسترسی به تمام کلاسهای یک پکیج به جای نام کلاس خاص از علامت * استفاده میگردد . مانند :

import MyPack.*;

خصوصیات(Attributes):

هر شی دارای خصوصیات منحصر به فردی می باشد .

مثال : برای مثال ، هر دانشجو که از روی کلاس دانشجو ایجاد می شود ، دارای خاصیت های نام ، نام خواندگی ، شماره دانشجویی و …غیره مخصوص به خوداست .

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

متدها(Methods):

متدها ، عملیات یا رفتارهایی است که اشیا یک کلاس می توانند انجام دهند .

مثال : برای مثال هر دانشجو که از روی کلاس دانشجو ساخته می شود ، دارای عملیات های یکسانی مثل ثبت نام ، انتخاب واحد و … است .

نحوه تعریف class در جاوا:

 

classclassname {

type instance-variable1;

type instance-variable2;

// …

type instance-variableN;

type methodname1(parameter-list) {

// body of method

}

type methodname2(parameter-list) {

// body of method

}

// …

type methodnameN(parameter-list) {

// body of method

}

}

نکته:به متغیر درون کلاسها Instance variable می گویند.به Method ها و Instance Variable های درون یک کلاس member یا اعضای کلاس گفته می شود.

نحوه تعریف متد :

type name(parameterlist) {

// body of method

}

type نوع داده بازگشتی توسط متد می باشد که اگر متد مقدار بازگشتی نداشته باشد باید از کلمه void استفاده شود.

name نام متد می باشد

Parameter-list لیستی از پارامترهای استفاده شده در متد می باشد که این پارامترها با کاما از یکدیگر جدا می شوند پارامترها اساسا متغیرهایی هستند که مقدار آرگومان های ارسالی به متد را هنگام فراخوانی آن دریافت می کنند اگر متد پارامتری نداشته باشد این فهرست خالی خواهد بود.

اگر متد مقدار بازگشتی داشته باشد از عبارت زیر استفاده نمایید

returnvalue;

Value ،مقداری است که برگردانده می شود .

 

مثالی برای Class:

 

نکته:همان طور که گفته شد هر کلاس نوع جدیدی از داده ها را ایجاد می کند با مثال فوق یک data type به نام Box ایجاد کردیم که تنها یک الگو می باشد و یک شی واقعی ایجاد نمی شود.

مثالی برای Object:

برای ایجاد یک شی واقعی از کلاس Box می بایست از عباراتی همچون سطر زیر استفاده کنید:

Box mybox = new Box(); // create a Box object called mybox

هر شی ساخته شده از Box نسخه های خاص خودش را از نمونه متغیرهای Width , height , depth خواهد داشت . برای دستیابی به این متغیرها باید از عملگر نقطه (.) استفاده کنید.

برای مقدار دهی این متغیرها از عبارت زیر استفاده کنید:

mybox.width = 100;

مثال:

خروجی :

Volume is 3000.0

مثالی دیگر:

خروجی :

Volume is 3000.0

Volume is 162.0

افزودن متد به کلاس Box:

 

خروجی :

Volume is 3000.0

Volume is 162.0

 

 

 




پاسخ دهید

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

*

code