شی گرایی چیست و چه تحولی در دنیای برنامه نویسان ایجاد کرد؟
شی گرایی چیست و چه تحولی در دنیای برنامه نویسان ایجاد کرد؟
سلام دوستان امروز می خواهیم درباره شی گرایی چیست، صحبت کنیم تا بدانید که چرا به یکی از مهم ترین ها در برنامه نویسی تبدیل شده است؟ مگر زبان های غیر شی گرایی چه مشکلی داشتند؟ پس با ما همراه شوید.
برنامه نویسی شی گرا(OOP) چیست
Object Orient Programming شیوه ای از برنامه نویسی است که موجودیتهای نرم افزار را به صورت شی یا Object میبیند. قبل از ظهور برنامه نویسی شی گرا ، برنامهها اغلب به شکل رویه ای نوشته میشد یعنی برنامهها به توابع تقسیم میشدند.
اما با بزرگ شدن نرم افزار، برنامه نویسان مجبور به تکرار کدها به صورت مکرر میشدند. توابع در قسمتهای مختلف به صورت نامرتب و تو در تو یکدیگر را صدا میزدند و برنامه به اصلاح به یک کد Spagetti(اسپاگتی) تبدیل میشد. یعنی چون توابع و قطعات کد، به هم وابسته و در هم ریخته بودند در نتیجه تغییر یک تابع باعث به هم ریختن توابع زیادی میشد.
پس از ظهور برنامه نویسی شی گرا، توابع و متغیرهای مرتبط در واحدهایی به اسم کلاس (Class) جمع شدند و اشیا از روی این کلاسها ساخته میشوند و به این ترتیب صاحب متدها (Method) و ویژگیهای (Attribute) آن کلاس میشوند. همینطور کلاسها میتوانند ویژگیها یا توابع را از یکدیگر به ارث ببرند. به این ویژگی ارث بری یا Inheritance میگوییم.
4 اصل پایه ای برای ساخت کلاس ها در برنامه نویسی شی گرایی:
بعد از شناخت برنامه نویسی شی گرایی باید چهار اصل پایهای برای ساخت کلاسها را بدانید که عبارت است از:
- Abstraction
فرض کنیم در اتاقی نشستهایم و فردی از ما میپرسد که لپ تاپ کجاست؟ ما هم جواب فرد مد نظر را داده و میگوییم روی «میز» است. وقتی ما واژه ی میز را به زبان می آوریم، هرگز نمیگوییم که لپ تاپ روی میزی است که چوبی است، رنگ آن قهوه ای روشن است، روی آن یک شیشه قرار دارد، چهار پایه دارد، طول و عرض آن فلان اندازه است و … ما صرفاً واژه ی میز را به زبان آورده و طرف مقابل کاملاً متوجه میشود که منظور ما کدام میز است! هم ما و هم طرف مقابل مان که در اتاق حضور داریم تجربیاتی در برخورد با شیئ به نام «میز» داشته و داریم که به ما کمک کند تا منظور از میز را متوجه شویم. واژه ی Abstraction به معنی «انتزاعی بودن» است. یعنی چیزی که در حد یک ایده است و وجود خارجی ندارد یا این که نمیشود آن را لمس کرد و در برنامه نویسی شیء گرا سبب میشود که ما به جای تمرکز روی یک نمونه ی عینی از چیزی، روی مفهوم آنها متمرکز شویم.
- Polymorphism
آخرین اصل از اصول برنامه نویسی شیء گرا Polymorphism نام دارد. Poly به معنی «چندین» است و Morph هم به معنی «شکل» است که روی هم رفته میتوان آن را به «چند شکلی» ترجمه کرد.
به عبارت دیگر، پلی مورفیسم در جاوا به شما اجازه می دهد که یک رابط تعریف کرده و چندین پیاده سازی از آن داشته باشید. به زبان ساده تر، با استفاده از این قابلیت می توان توابع یا متغیرهای مرجع را طوری ایجاد نمود، که در قسمت های مختلف برنامه رفتار متفاوتی داشته باشند. Polymorphism یکی از بخش های مهم شیءگرایی می باشد که در مطلب بعدی بیشتر درباره آن صحبت میکنیم.
به عبارت دیگر، پلی مورفیسم در جاوا به شما اجازه می دهد که یک رابط تعریف کرده و چندین پیاده سازی از آن داشته باشید. به زبان ساده تر، با استفاده از این قابلیت می توان توابع یا متغیرهای مرجع را طوری ایجاد نمود، که در قسمت های مختلف برنامه رفتار متفاوتی داشته باشند. Polymorphism یکی از بخش های مهم شیءگرایی می باشد که در مطلب بعدی بیشتر درباره آن صحبت میکنیم.
- Inheritance
به زبان ساده یعنی «استفاده ی مجدد از کدهای از قبل نوشته شده» اما معنی لغوی آن «وراثت» است. برای روشنتر شدن این مسأله مثالی عملی می زنیم. در زبانهایی همچون ++C این امکان در اختیار برنامه نویس قرار گرفته تا بتواند از بیش از یک کلاس والد ارث بری کند که چنین قابلیتی تحت عنوان Multiple Inheritance یا «وراثت چندگانه» شناخته می شود. اگر چه چنین قابلیتی دست برنامه نویسان را خیلی باز می گذارد، اما در عین حال منجر به پیچیدهتر شدن برنامه هم میشود و به همین دلیل، برخی زبانهای برنامه نویسی همچون جاوا، سی شارپ، آبجکتیو سی، روبی و … به هیچ وجه اجازه ی ارث بری از بیش از یک کلاس والد را به برنامه نویس نمی دهند.
- Encapsulation
زمانی که ما Attribute ها و رفتارهای یک آبجکت را در کپسولی فرضی قرار داده و آنها را کنار یکدیگر قرار دهیم در واقع از مفهوم Encapsulation. در شی گرایی استفاده میکنیم.همچنین خواهیم توانست دسترسی به بخش یا بخشهایی از یک کلاس یا آبجکتی که بر اساس آن کلاس نوشته شده را محدود کنیم.
مفاهیم پایه ای در شی گرایی
- شی (Object): یک موجودیت اﺳﺖ ﺑﮕﻮﻧﻪ ای ﮐﻪ دارای ﻫﻮﻳﺖ ﺑﻮده و ﻗﺎدر ﺑﻪ ﺑﺮوز رﻓﺘﺎر و ﺛﺒﺖ ﺣﺎﻻت ﺧﻮد ﻣﯽ ﺑﺎﺷﺪ.
- صفت (property): هر شی یکسری ﺧﺼﻮﺻﯿﺎت دارد ﮐﻪ ﺑﻪ آﻧﻬﺎ ﺻﻔﺖ ﮔﻔﺘﻪ ﻣﯽ ﺷﻮد و ﯾﮏ مقدار و ارزش مشخصی برای آن به ازای هر شی می تواند، وجود داشته باشد. مانند طول، ارتفاع، رنگ و … .
- روش (Method): هر شی در واقع یک سری رفتار دارد که به آن ها روش یا متد، گفته می شود. ﻣﺘﺪ در واﻗﻊ ﭘﺎﺳﺦ ﻫﺎﯾﯽ اﺳﺖ ﮐﻪ آن ﺷﯽ در ﻣﻘﺎﺑل تحریکات ﻣﺤﯿﻂ از ﺧﻮد ﻧﺸﺎن می دهد.
- کلاس (Class): به مجموعه ای از اشیا که دارای ویژگی و رفتار مشترک باشند، کلاس می گویند. یک class نمونه ی اولیه ای است که هر object از روی آن ساخته می شود.کلاس دانشجو، کلاس انسان، کلاس ماشین و … کلاس ها مانند نقشه های ساختمان هستند. .ﯾﻚ ﻛﻼس، ﻧﻘﺸﻪ اﯾﺠﺎد ﯾﻚ ﺷﯽ از ﻛﻼس است. همانطور که می توانیم خانه های زیادی از روی یک نقشه بسازیم، می توانیم تعدادی شی از روی یک کلاس، نمونه سازی کنیم.
دلیل استفاده از برنامه نویسی شی گرایی:
در حالت عادی شما کل برنامه را در قالب دستورات و توابع پشت سر هم مینویسید (Procedural) و برای تغییر هرچیزی از برنامه احتیاج دارید تا کل ساختار برنامه را بررسی کرده و موارد مورد نیاز را تغییر دهید.
فرض کنید در حال نوشتن برنامهای در خصوص مدیریت خودروها هستید، شما برای هر مدل خودرو چندین خط کد مینویسید، در ادامه تصمیم میگیرید ویژگی جدیدی به خودروهای خود اضافه کنید، مثلا میزان شتاب خودرو، در این صورت باید کل دستورات برنامه را جستجو کرده و در تمام خطوط این ویژگی جدید را به تمامی خودروها اضافه کنید.
اما اگر برنامهی خود را با استفاده از مفهوم شئگرایی نوشته باشید در این صورت تنها کافیست این ویژگی (Attribute) جدید را به کلاس اصلی برنامه اضافه کنید تا سایر اشیا (خودروها) نیز این ویژگی جدید را به ارث ببرند و آن را درون خود داشته باشند، در این صورت دیگر احتیاجی نیست تک به تک خطوط برنامه را دستخوش تغییر کنید.
علاوه بر آن به دلیل ویژگیهای خاصی که در برنامهنویسی شئگرا حاکم است، دسترسی به دادههای درون کلاس از بیرون امکانپذیر نیست و این مورد میتواند در حفظ امنیت برنامهها به شما کمک کند.
مزایای برنامهنویسی شئگرا چیست؟
- افزایش امنیت برنامه
- کاهش هزینه نگهداری
- قابلیت استفاده مجدد
- تحلیل سادهتر برنامه
- قابلیت سازمان دهی بهینه تر کدها
- عدم نیاز به نوشتن کدهای تکراری و قابلیتهایی که قبلا پیادهسازی شدهاند و صرف جویی در استفاده از منابع
- قابلیت تقسیم برنامه به برنامههای کوچک تر اما مستقل
خب دوستان ما سعی کردیم تا مفهوم شی گرایی چیست را به زبانی ساده برای شما بیان کنیم و امیدواریم که مطلب مورد رضایت شما قرار گرفته باشد.
+ نوشته شده در شنبه 27 دی 1399ساعت 16:26 توسط fattahi |