دوشنبه ۲۲ دی ۹۹ | ۱۲:۱۴ ۱۱ بازديد
برنامه نویسی شی گرا
در اوایل دهه ۱۹۷۰ توسط آلن کی (Alan Kay) طراحی شده یعنی اولین قدمهای این سبک برنامه نویسی توسط آلن کی برداشته شده است. اولین زبان شی گرا توسط آلن کی طراحی شد. اسم این زبان Small Talk می باشد، آلن کی گفته بود: آن چیزی که باعث شد این فکر به ذهنم برسد نحوه عملکرد سلولهای زیست محیطی بود. یعنی این سبک برنامه نویسی از روی سلولهای جاندارها الگو برداری شده است
همه چیز در مورد اشیا است. همانطور که اشیا در دنیای واقعی رفتار میکنند، در دنیای نرم افزار هم همینطور است. اشیا در یک برنامه تقریبا همه کار را انجام میدهد. به عنوان مثال ماشین ها شتاب میگیرند یا انسان ها راه میروند(انسان هم می تواند یک شی باشد) یا هواپیماها پرواز میکنند و ماهی ها شنا میکنند. به طور مشابه ما در نرم افزار نیز اشیایی میسازیم که رفتاری خاص را انجام میدهند. و ما از آن برنامه انتظار داریم که رفتارهای اشیا را انجام دهند(راه رفتن، پرواز کردن …). پس زمانی که نرم افزار ما اجرا میشود اشیا ما به وجود می آیند.
مثال شی گرایی در سی شارپ
قبل از اینکه وارد کد زنی شی گرایی در سی شارپ شویم مثالی میزنیم و سپس آن را وارد کد خواهیم کرد. ما همه یک انسان هستیم و هر کدام از ما یک سری ویژگی های رفتاریخاص خود را داریم. اگر ما فرض کنیم که زمین یک نرم افزار است انسان و اشیا دیگر را میتوان یک شی درون این نرم افزار تعریف کرد. هر کدام از اشیا عملیات های(action) خاص خود را انجام میدهند.
مفاهیم اساسی در برنامه نویسی شئ گرا
سطح دسترسی (Access Modifiers)
سطوح دسترسی کلمات رزرو شده ای هستند که بر روی اعلان یک کلاس ، متد ، صفت ، فیلد و دیگر اعضای یک کلاس میتوانند اعمال شوند.
کلمات رزرو شده برای سطوح دسترسی در زبان سی شارپ به صورت زیر است:
• public
• private
• protected
• internal
آشنایی با مفاهیم اصلی زبان برنامهنویسی شی گرا
1.انتزاع(Abstraction)
انتزاع به فرآیندی گفته میشود که در زمان بررسی یک شی، تنها خصوصیت و رفتارهایی باید در تعریف آن شی لحاظ شوند که در سیستم مستقیما کاربرد دارند. در واقع انتزاع یا Abstraction مثل یک فیلتر عمل میکند که تنها ویژگیها یا خصوصیات و رفتارهایی که در برنامه مورد استفاده است را از آن عبور میدهد.
2.کسپوله سازی(Encapsulation)
کپسوله سازی به معنی پنهان کردن فرآیند اصلی اجرای یک برنامه از دید کاربران است. که این اتفاق درون یک شی رخ میدهد.
3.ارث بری(Inheritance)
وراثت یکی از اصلیترین مفاهیم موجود در برنامهنویسی شی گرا است. همانطور که از نام آن مشخص است وقتی یک فرزند متولد میشود قطعا خصوصیات و رفتارهایی را از والدین خود به ارث میبرد. در دنیای برنامهنویسی هم به همین صورت است.
وقتی یک کلاس از کلاس دیگری ارث بری میکند یعنی به خصوصیات و رفتارهای کلاس والد دسترسی دارد. این کار باعث میشود تا حجم کدهای نوشته شده به شدت کاهش یابد.
4.چندریختی(Polymorphism)
برای درک مفهوم چند ریختی یا پلی مورفیسم در دنیای برنامهنویسی مثالی را از دنیای واقعی خدمت شما عزیزان ارائه میدهیم. در این کرهی خاکی انسانهای بسیاری وجود دارند که دارای گویشهای مختلف، زبانهای مختلف هستند و در شهرهای متفاوت زندگی میکنند. اما تمامی این افراد به عنوان یک انسان شناخته میشوند. اگر در اینجا انسان را به عنوان یک کلاس والد درنظر بگیریم و انسان ایرانی، آفریقایی، چینی و … را به عنوان کلاس فرزند، متوجه خواهید شد که انسان ایرانی از کلاس والد مشتق شده است. اما انسان ایرانی نحوهی صحبت کردن اش با نحوهی صحبت کردن یک انسان آفریقایی متفاوت است یعنی در واقع دارای رفتار متفاوت هستند. یعنی رفتاری که در شیء والد وجود دارد گاها در شکل فرزند ممکن است تغییر کند. در زبان برنامهنویسی شیءگرا به پلی مورفیسم یا Polymorphism تغییر رفتار یک شیء در اشیاء فرزند آن گفته میشود. که در زبان برنامهنویسی #C این تغییر رفتارها به کمک تعریف متدها به صورت virtual و override است و در فصول بعدی به تفصیل آنها را توضیح خواهیم داد.
برنامه نویسی شی گرا در جاوا اسکریپت
برنامه نویسی شی گرا یک نوع برنامه نویسی معروف یا یک style برنامه نویسی می باشد و بر خلاف اکثر ابزار و فریم وورک ها که میان و میرن OOP تا به امروز پا برجا بوده است و آنهم به خاطر این است که یک زبان برنامه نویسی نیست بلکه یک style برنامه نویسی است.
چرا باید OOP یاد گرفت؟
چون به شما کمک میکنه پیچیدگی های برنامه رو مدیریت و کمتر کنید و همچنین بتونید بلوک و شی هایی بسازید که دوباره بتونید در جاهای دیگه از برنامه ازش استفاده کنید ( به اصلاح reusable باشد).
علاوه بر این میتوانید یک رابط کاربری ساده ای درست کنید آن هم با مخفی کردن پیچیدگی های غیر ضروری ( چون نیازی نیست تمام مراحل برنامه نویسی قابل دیدن باشه که باعث پیچیدگی بشه) و با شی گرایی از شر کد های زائد خلاص میشیم و کد های تمیز تری داریم.
OOP یک تکنیک ضروری برای هر برنامه نویسی است...