مقدمه ای بر مفهوم شیئ گرایی در زبان های برنامه نویسی (1)

سیده آمین ارمان

کاربر نگاه دانلود
کاربر نگاه دانلود
عضویت
2016/05/10
ارسالی ها
1,730
امتیاز واکنش
20,744
امتیاز
795
محل سکونت
البرز
در این مرحله از آموزش، قصد داریم نگاه دقیق تری به مفاهیم شئی گ رایی که در زبان های برنامه نویسی متعددی من جمله جاوا مورد استفاده قرار می گیرند داشته باشیم. در حقیقت، شئی گرایی عبارت است از یکسری پارادایم ها و استراتژی هایی که توسط زبان های برنامه نویسی بسیاری مورد استفاده قرار می گیرند که زبان جاوا هم یکی از آن ها است. پایه و اساس رویکرد OOP یا Object Oriented Programming به معنی برنامه نویسی شیئ گرا، این است که نگاه برنامه نویسان به برنامه نویسی به نگاه ایشان به دنیای ملموس و واقعی نزدیک تر گردد. به طور مثال سیستمی که شما با استفاده از آن به مطالعه ی این مطالب آموزشی مشغول هستید یک Object یا شیئ در دنیای واقعی می باشد. حال این شیئ که در اختیار شما است با کامپیوتری که زیر دست مولف این دوره می باشد بسیار متفاوت است.

فرض کنیم که قرار است ما یک آپارتمان 10 طبقه بسازیم. هر 10 طبقه از آپارتمان ما دارای یکسری ویژگی های خاص و منحصر به فرد است مثل اینکه رنگ دیوار های طبقه اول سفید است و درهای آن کرم رنگ هستند اما این در حالی است که رنگ دیوار های طبقه هفتم صورتی است و درهای آن سفید است و ...

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

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

در واقع ما یک نقشه کلی یا کلاس برای آپارتمان طراحی می کنیم. حال تصمیم می گیریم که تعدادی از طبقات آپارتمان ما سه خوابه بوده و تعدای از آنها چهار خوابه ساخته شوند. در حقیقت ما از روی کلاس اصلی دو کلاس دیگر تحت عناوین سه خوابه و چهار خوابه طراحی می کنیم که ویژگی های کلاس اصلی را به ارث می برند. در برنامه نویسی جاوا به این رویداد Inheritance یا ارث بری می گویند. اصطلاحاً کلاس اولیه Superclass یا کلاس اصلی است و کلاس های سه خوابه و چهار خوابه Subclass یا کلاس زیرمجموعه می باشند.

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

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

برای درک بهتر مفهوم شیئ گرایی، به ذکر مثال دیگری می پردازیم. در مثال دوم، از خود کامپیوتر یا لپ تاپ شما به عنوان نمونه استفاده خواهیم کرد. سیستم شما یک شیئی است که می توانند چندین شیئ دیگر را در خود جای دهد مثل هارد، سی پی یو، رم و ... . سیستم شما دارای یکسری Attribute یا خصیصه می باشد که آن را از دیگر کامپیوتر ها مجزا می سازد مثلاً دارای سی پی یو هفت هسته ای می باشد. در عین حال، کامپیوتر شما دارای یکسری Behavior یا عملکرد نیز می باشد (معادل فارسی این واژه رفتار است اما به منظور انتقال بهتر مفهوم، معنای عملکرد در اینجا در نظر گرفته شده است.) به طور مثال کامپیوتر شما می تواند یک فایل صوتی را پخش کند که این رفتار مختص یک شیئ از نوع کامپیوتر است اما دیگر اشیاء در دنیای واقعی مثل یخچال دارای چنین رفتاری نمی باشند.

در واقع در برنامه نویسی شیئی گرا، اشیاء داری سه ویژگی می باشند: اول این که هر شیئ دارای یک Identity یا هویت خاص خود است (به طور مثال دو انسان که به منزله شیئ هستند را در نظر بگیرید. درست است که هر دو دارای یکسری خصایص مثل داشتن دست و پا و قدرت تفکر و غیره می باشند و در عین حال عملکردهای مشابهی نیز دارند مثل حرف زدن، دویدن و ... اما دارای دو هویت مجزا می باشند مثلاً احسان و نیما.) ویژگی دوم مربوط به Attribute یا خصیصه می باشد. مثلاً قد احسان 185 سانتی متر است اما قد نیما 176 سانتی متر می باشد. ویژگی سوم مربوط به Behavior یا رفتار آن شیئ است. مثلاً احسان می تواند به خوبی پیانو بنوازد اما نیما برنامه نویس خوبی است.

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

در برنامه نویسی به این کار اصطلاحاً Instantiation یا نمونه سازی گفته می شود. ما در برنامه نویسی شیئ گرایی برای ایجاد اشیاء اول نیاز به برخورداری از کلاس داریم اما نکته ای که این جا می بایست مد نظر قرار دهیم این است ما به عنوان برنامه نویس الزماً مجبور نیستیم که کلیه کلاس ها را خودمان بنویسیم چرا که بسیاری از کلاس ها از قبل در دل زبان برنامه نویسی مورد استفاده جای داده شده اند و ما به راحتی با استفاده کردن از کلاس یا کلاس های مد نظر می توانیم از قابلیت های آن بهره مند شویم. چنانچه بخوایم کلاس خود را هم بنویسیم همواره می بایست چهار مورد Abstraction, Polymorphism, Inheritance, Encapsulation را مد نظر قرار دهیم که می توان آن ها را به عنوان ویژگی های شیئ گرایی قلمداد کرد.
 

برخی موضوعات مشابه

بالا