
برنامه نویسی شی گرا چیست ؟

رایانه ها ماشین های قدرتمندی هستند. با رایانه می توان اعداد را خیلی سریع محاسبه کرد و می توان برنامه های شگفت انگیزی برای بسیاری از اپلیکیشن ها تولید کرد. با این حال، برای بهره بردن از این ابزار قدرتمند باید با رایانه ارتباط برقرار کنیم؛ ارتباطی که نسبت به تایپ دستیِ صفر و یک، کم زحمت تر باشد.
برای همین ما زبان های برنامه نویسی مختلفی داریم که توسط کدهای ماشینی که قبلا نوشته شده اند، پشتیبانی می شوند. با این وجود، هرچه بیشتر کدهای ماشینی را حذف می کنیم، زبان های انتزاعی تر و تخصصی تری به برای مدیریت داده ها ایجاد می شود. به همین دلیل است که زبان های زیادی داریم. هیچ یک از زبان ها کامل نیست و همه آنها کاربردهای متفاوتی دارند که در عین حال همپوشانی هم دارند.
پارادایم های برنامه نویسی
زبان های برنامه نویسی اغلب با توجه به پارادایم برنامه نویسی هایشان از هم جدا می شوند. پارادایم برنامه نویسی یکی از روش های مشاهده و دستیابی به داده است. دو پارادایم اصلی عبارتند از شیءگرا و تابعی؛ اگرچه پارادایم های زیاد دیگری هم وجود دارد (که برخی از آنها اصول اساسی برای موارد فوق هستند).
برنامه نویسی شیءگرا حول محور اشیاء ساخته شده است؛ اشیاء ساختارهای داده ای هستند که هم شامل داده ها (خصوصیات یا ویزگی ها) و هم شامل کدها (رویه ها یا روش ها) هستند. اشیاء قادر هستند خودشان را با «این» یا «خود» تغییر دهند و مطابقت دهند. در بسیاری از زبان های OOP (زبان های شیءگرا)، تقریبا هرچیزی شیئی است که می تواند هم مقادیر و هم کدِ قابل اجرا داشته باشد. هر شیء، منحصر به فرد است و اگرچه ممکن است رونوشتی از شیء دیگری باشد اما متغیرهای آن می تواند متفاوت از متغیرهای هر شیء دیگری باشد.
در طراحی نرم افزار شیءگرا، اشیاء را می توان مانند اشیاء واقعی تصور کرد. به شیئی مانند ساعت مچی فکر کنید. ساعت مچی خصوصیاتی دارد؛ از فلز ساخته شده، سیاه است، وزن خاصی دارد. اما آن شیء کارهایی را هم انجام می دهد؛ زمان را نشان می دهد و همچنین می تواند با چرخاندن چرخ دنده ها به منظور تغییر موقعیت دست ها، بر روی خود تاثیر بگذارد.
یکی دیگر از ویژگی های اشیا این است که نیازی نیست همیشه نحوه عملکرد ساعت را بدانیم. فرض کنید آن ساعت خیلی خوب ساخته شده و بدون اینکه ما مجبور به دخالت در عملکرد داخلی آن شویم، زمان را به طور قابل اعتمادی نشان می دهد.
زبان های شیءگرا هم اشیایی شبیه به اشیای دنیای واقعی دارند. اشیایی که می توانند ویژگی و کارکرد داشته باشند. همچنین تمایل دارند از یک سری اصول خاص پیروی کنند.
اصول برنامه نویسی شیءگرا
زبان های شیءگرا دارای چهار اصل هستند. این چهار اصل، ویژگی های مشترکی هستند که زبان های شیءگرا را تعریف می کنند و به طور قابل توجهی آنها را کارآمد می سازند. برخی افراد این چهار اصل را ستون برنامه نویسی شیءگرا می نامند.
چهار ستون برنامه نویسی شیءگرا عبارت است از:
۱- کپسوله سازی
۲- تجرید
۳- وراثت
۴- چندریختی
چهار اصل
بیائید این چهار اصل را بیشتر بررسی کنیم.
- کپسوله سازی– کپسوله سازی یعنی اتصال داده به توابع، که به عنوان یک تابع امنیتی برای ایمن نگه داشته داده ها عمل می کند. به عنوان مثال، بسیاری از زبان های شیءگرا از هر چیزی به غیر از روش های خاص در کلاسِ دارای داده هایی برای دسترسی به آن داده، جلوگیری می کنند. این کار اغلب به طور صریح و برای ایمن نگه داشتن داده های معین انجام می شود.
- تجرید– تجرید ایده ای است به این معنی که اگر شما کاری را مرتبا انجام می دهید، آن کار باید موجودیتِ خودش باشد. به عنوان مثال، اگر برنامه نویس، تابع مشابهی را مکررا برای اشیاء مختلف بازنویسی می کند، می توان آن تابع را انتزاع کرد تا به موجودیتِ خودش تبدیل شود.
- وراثت– وراثت همان چیزی است که به نظر می رسد، و غالبا به صورت یک رابطه «هست» تعریف می شود. وراثت باعث می شود تا کلاس های خاصی زیر چتر کلاس های دیگر قرار بگیرند. این کلاس ها می توانند اطلاعات و قابلیت ها را از آن کلاس به ارث ببرند و در عین حال قادر هستند آن قابلیت ها را گسترش دهند. وراثت به ما این امکان را می دهد تا از کدی که قبلا در کلاس های دیگر تایپ کرده ایم، مجددا استفاده کنیم.
- چندریختی– چندریختی به معنای «داشتنِ بیش از یک شکل» است. در زبان های شیءگرا، چندریختی به توانایی مدیریت کردن متفاوت اشیاء با توجه به اینکه چه چیزی هستند، اشاره دارد. چندریختی به ما این امکان را می دهد تا برای اداره اشیاء، بر اساس کلاس مشتق شده آنها، روش های مختلفی را تعریف کنیم. به عنوان مثال، اگر لازم باشد اندازه چیزی را پیدا کنیم، می توانیم بر اساس اینکه آن چیز چه چیزی است، نحوه اندازه گیری را تغییر دهیم. اگر آن چیز یک تخته چوب باشد، آن را به اینچ اندازه می گیریم. اما اگر آن چیز آب باشد، وزن آن را اندازه می گیریم. اگر از چندریختی استفاده کنیم، می توانیم تابعی ایجاد کنیم که بتواند همه اشیاء را بپذیرد و باز هم اندازه گیریِ عاقلانه ای به ما بدهد.
زبان های محبوب برنامه نویسی شیءگرا
جاوا، پایتون، سی پلاس پلاس، لیسپ و پرل نمونههایی از زبان های محبوب برای برنامه نویسی شیءگرا هستند. این زبان ها با استفاده از پارادایم اشیاء و کلاس ها، از برنامه نویسی پشتیبانی می کنند.
پنج مورد از محبوب ترین زبان های شیءگرا عبارتند از:
۱- جاوا (Java)
۲- پایتون (Python)
۳- سی پلاس پلاس (C ++)
۴- روبی (Ruby)
۵- سی شارپ (C#)
- جاوا- جاوا در همه جا وجود دارد. جاوا یکی از پرکاربردترین و پرمخاطب ترین زبان ها در همه زمان ها است. شعار جاوا این است: «یک بار بنویس، همه جا اجرا شو». و این شعار در تعداد سیستم عامل هایی که روی آن اجرا می شد و مکان هایی که استفاده می شود، منعکس شده است.
- پایتون– پایتون هدفی عمومی دارد و در بسیاری از مکان ها استفاده می شود. با این حال، پایتون جایگاه محکمی در یادگیری ماشین و علم داده دارد. پایتون یکی از زبان های ارجح برای این زمینه جدید و همیشه در حال رشد، است.
- سی پلاس پلاس– سی پلاس پلاس دارای سرعت C با قابلی کلاس ها، است و پارادایم شیءگرا دارد. سی پلاس پلاس زبانی مدون، قدرتمند و قابل اعتماد است. درواقع حتی برای ساختن کامپایلرها و مترجم های زبان های دیگر هم از سی پلاس پلاس استفاده می شود.
- روبی– روبی یکی دیگر از زبان های برنامه نویسی عمومی است. روبی برای سادگی ساخته شده است. با این اوصاف، روبی، زبان فوق العاده قدرتمندی است. خالق روبی، یوکیهیرو «ماتز» ماتسوموتو، گفته: «روبی ظاهر بسیار ساده ای دارد اما درون آن بسیار پیچیده است، درست مانند بدن انسان».
- سی شارپ– سی شارپ یک زبان برنامه نویسی است که توسط مایکروسافت طراحی شده است. سی شارپ برای بهبود مفاهیم موجود در C طراحی شده است. سی شارپ، چارچوبِ Microsoft .NET را در کنار بسیاری از برنامه های وب، بازی ها، برنامه های دسکتاپ و برنامه های تلفن همراه، قدرتمند میسازد.
زبان های شیءگرای دیگری هم وجود دارد که در بالا به آنها پرداخته نشده است. پرل (Perl)، آبجکتیو سی (Objective-C)، دارت (Dart)، لیسپ (Lisp)، جاوا اسکریپت (JavaScript) و پی اچ پی (PHP) نیز یا شیءگرا هستند یا از اصول شیءگرا پشتیبانی می کنند.