Learning JAVA in Persian #3
Learning JAVA in Persian #3
آموزش سوم
در این قسمت قصد داریم نگاه دقیق تری به مفاهیم شئی گرایی که در زبان های برنامه
نویسی متعددی من جمله جاوا مورد استفاده قرار می گیرند داشته باشیم.
در حقیقت شئی گرایی یک زبان برنامه نویسی نیست بلکه عبارت است از یکسری
پارادایم ها و ایده هایی که توسط زبان های برنامه نویسی بسیاری مورد استفاده قرار می
گیرد می شود که زبان جاوا هم یکی از آن زبان ها است .پایه و اساس تفکر OOPاین
بود که نگاه برنامه نویسان به برنامه نویسی به نگاه ایشان به دنیای ملموس و واقعی نزدیک
تر گردد .به طور مثال کامپیوتری که شما با استفاده از آن به خواندن این مطالب آموزشی
مشغول هستید یک Objectیا شئی می باشد .حال این Objectکه در اختیار شما است
با کامپیوتری که زیر دست بنده می باشد بسیار متفاوت است.
کامپیوتر شما یک شیئی است که می توانند چندین شئی دیگر را در خود جای دهد مثل
هارد ،سی پی یو ،رم و . ...کامپیوتر شما دارای یکسری Attributeیا خصیصه می
باشد که آن را از دیگر کامپیوتر ها مجزا می سازد مثالً دارای سی پی یو دو هسته ای می
باشد .در عین حال کامپیوتر شما دارای یکسری Behaviorیا عملکرد نیز می باشد(در
زبان انگلیسی این واژه به رفتار ترجمه می شود اما به منظور انتقال بهتر مفهوم معنای
دیگری در اینجا در نظر گرفته شده است) .به طور مثال کامپیوتر شما می تواند یک فایل
صوتی را پخش کند که این Behaviorمختص یک شیئ از نوع کامپیوتر است اما
دیگر اشیاء در دنیای واقعی مثل یخچال دارای چنین Behaviorنمی باشند .در واقع در
برنامه نویسی شیئی گرایی Object ،ها داری سه ویژگی می باشند :اول اینکه هر
1
Page
حال این Objectهایی که ما می سازیم می بایست ریشه در جایی داشته باشند .به
عبارت دیگر Objectها به خودی خود ایجاد نمی شوند از اینرو ما با مفهومی به نام
Classآشنا می شویم .در حقیقت در برنامه نویسی شیئ گرایی ما نمی توانیم از Object
ها صحبت به میان آوریم بدون این که توجهی به Classها داشته باشیم .به طور خیلی
خالصه می توان گفت که Classها برای ساخت Objectها مورد استفاده قرار می
گیرند .همانطور که در مقدمه آموزش اشاره شد Class ،همانند یک نقشه ساختمان است
که از روی آن می توانیم هزاران هزار خانه بسازیم .در حقیقت ما در Classتعریف می
کنیم که Objectما دارای چه Attributeو Behaviorباشد .به عبارتی هر
Objectبه منزله یک Instanceیا نمونه ای از یک Classاست .در برنامه نویسی به
این کار اصطالح ًا Instantiationیا نمونه سازی گفته می شود .ما در برنامه نویسی
شیئ گرایی برای ایجاد اشیاء اول نیاز به برخورداری از Classداریم اما نکته ای که این
جا می بایست مد نظر قرار دهیم این است ما به عنوان برنامه نویس الزماً مجبور نیستیم که
کلیه کالس ها را خودمان بنویسیم چرا که بسیاری از کالس ها از قبل در دل برنامه جای
داده شده اند و ما به راحتی با وارد کردن Classمد نظر می توانیم از قابلیت های آن
2
Page
در ایجاد یک کالس جدید ما به عنوان برنامه نویس می بایست چهار مورد
Abstraction, Polymorphism, Inheritance, Encapsulationرا مد نظر
قرار دهیم .به منظور به خاطر سپردن این چهار عنصر اصلی ساخت Classمی توان حرف
اول هر یک از چهار کلمه را گرفته و کلمه A PIEبه معنی یک کلوچه را به خاطر سپرد.
یک از ویژگی های OOPبه کار گیری Abstractionاست .در اینجا بنده ترجمه این
واژه را در قالب یک مثال عرض می کنم .به طور مثال زمانیکه شما از دوست خود
خواهش می کنید که لیوان آبی که روی میز است را به شما بدهد ،شما فقط نمود خارجی
میز را مد نظر دارید و هرگز از دوست خود نمی خواهید که لیوان آبی که روی میز قهوه
ای رنگ با عرض دو متر و طول سه متر و ارتفاع یک و نیم متر را به شما بدهد بلکه
صرف ًا مفهوم کلی میز مد نظر شما است .در برنامه نویسی هم دقیقا همین طور است .در
حین نوشتن کالس ها دقیقاً ما می بایست یک مفهوم کلی را در نظر بگیریم .به طور مثال
فرض کنیم که برنامه ای برای یک باشگاه بدنسازی می نویسیم .ما نیاز داریم تا یک
Classایجاد کنیم که معرف یکسری عناصر مثل نام ،نام خانوادگی ،تاریخ شروع دوره،
میزان شهریه پرداختی باشد .در حقیقت در حین نوشتن Classما به همین اکتفا کرده و
به هیچ وجه در Classخود نام تک تک ورزشکاران را نخواهیم آورد .به طور خالصه
ما در ایجاد Classفقط و فقط یک مفهوم کلی را در نظر گرفته سپس Objectهایی
را به صورت Customizedشده از روی آن Classایجاد می کنیم.
تاکنون برای خیلی از ما پیش آمده که سرما خورده ایم .به پزشک مراجعه می کنیم و
دارو دریافت می کنیم .ممکن است برخی دارو ها در قالب کپسول باشند .در حقیقت
3
Page
Inheritanceیا وراثت این امکان را در برنامه نویسی شیئ گرایی به ما می دهد تا به
جای اینکه یک Classرا از اول بنویسیم ،شرایطی را فراهم کنیم تا برخی ویژگی های
Classجدیدی که می خواهیم ایجاد کنیم را از Classدیگری به ارث ببرد .در مقدمه
آموزش مثال زدیم که در آپارتمان ده طبقه ما یک Classبرای کلیه طبقات وجود دارد.
4
حال اگر بخواهیم که برخی طبقات ما سه خوابه یا چهار خوابه باشند به هیچ وجه نیازی
Page
اصطالح Polymorphismبه معنی چند فرمی است .برای روش شدن این مطلب به
ذکر مثالی اکتفا می کنیم .به طور مثال حیوان سگ را در نظر بگیریم .این حیوان چنانچه
داده ای از جنس بوی گربه به حس بویایی اش منتقل شود پارس می کند .چنانچه داده
ای از جنس گوشت به حس بویایی اش منتقل شود بزاق دهانش ترشح می شود و چنانچه
داده ای از جنس بوی صاحبش به حس بویایی اش منتقل شود دم تکان می دهد .در هر
سه حالت این حس بویایی سگ است که فعالیت می کند و تنها تفاوت در نوع داده ای
است که به حس بویایی سگ منتقل می شود .در زبان برنامه نویسی جاوا عالمت +دقیق ًا
چنین ویژگی دارا است .چنانچه ما دو متغییر از جنس عددی را با عالمت +جمع کنیم
حاصل جمع آن دو عدد را به ما خواهد داد .مثالً 7+5=12اما اگر دو متغییر از جنس
Stringیا کلمه را با یکدیگر جمع کنیم آن دو کلمه را در کنار یکدیگر قرار خواهند
گرفت مثل Hello+World=HelloWorld
پس از صحبت پیرامون اصول برنامه نویسی شیئی گرایی ،امیدواریم که مفهوم OOPرا
به خوبی درک کرده باشید .حال نوبت به آشنایی با انواع Errorها و Commentها
در زبان برنامه نویسی جاوا می رسد که در آموزش آتی به طور مفصل مورد بررسی قرار
خواهد گرفت.
5
Page