برنامهنویسی شیءگرا درمقابل برنامهنویسی رویهای
برنامهنویسی حوزهی وسیعی است که بهصورت پیوسته تکامل پیدا میکند. باتوجهبه فناوریها و فریمورکهای کنونی، افراد تازهکار با شک و سردرگمی زیادی روبهرو میشوند. بر کسی پوشیده نیست که برای تبدیلشدن به برنامهنویس موفق و صرفنظر از اینکه قصد دارید چه زبانی را انتخاب کنید، باید در درجهی اول مبانی را یاد بگیرید. یکی از این مبانی، درک الگوها یا مدلهای اصلی برنامهنویسی و تفاوت آنها است. در این مقاله، به برنامهنویسی شیءگرا و رویهای و تفاوت این دو نگاهی میاندازیم.
برنامهنویسی رویهای
مدل برنامهنویسی رویهای برگرفته از برنامهنویسی ساختیافته است که از انتخاب و توالی و تکرار استفاده میکند. برنامهنویسی رویهای از رویهها برای دستوردادن به کامپیوتر استفاده میکند. این رویهها میتوانند بهشکل توابع یا روتینها یا زیرروتینها ظاهر شوند. هر برنامه یا هر بخشی از آن میتواند این روتینها را در زمان اجرا فراخوانی کند.
به برنامهنویسی رویهای، «برنامهنویسی درونخطی» هم گفته میشود که از روش بالا به پایین برای اجرای دستورالعملها و حل مسائل استفاده میکند. برنامهای ساده که تعدادی از روتینها را برای عملیات مختلف فرامیخواند، از ساختار رویهای پیروی میکند.
برنامهنویسی شیءگرا
برنامهنویسی شیءگرا مدل برنامهنویسی جذابی است که از مفهوم اشیاء استفاده میکند. این مدل بهجای استفاده از منطق و توابع، طرح نرمافزاری را حول محور اشیاء یا دادهها سازماندهی میکند. درنتیجه توسعهدهندگان میتوانند از برنامهنویسی شیءگرا برای تغییر اشیاء استفاده کنند نه منطق برنامه.
برنامههای پیچیده و بزرگ اغلب بهصورت برنامههای شیءمحور طراحی میشوند؛ زیرا این کار به شکل چشمگیری قابلیت استفادهی مجدد، کارایی، مقیاسپذیری و توسعهی مشارکتی را بهبود میدهد. اپلیکیشنهای موبایل iOS و اندروید معمولاً با زبانهای برنامهنویسی شیءگرا مثل جاوا طراحی میشوند. برنامهنویسی شیءگرا مبتنیبر اصول انتزاعی دادهای، کپسولهسازی، وراثت و چندریختی است.
هر برنامهی شیءگرا حداقل یک کلاس و اشیائی دارد که درواقع نمونههای کلاس نامیده میشوند. هر شیء مشخصههای خود را دارد و هر کلاس از متدها یا توابعی بهره میبرد که میتوان روی هر شیء برای اجرای عملیاتی مشخص فراخوانی کرد.
در کد ذیل، برنامهی شیءگرای ساده از خودروهای ثبتشده در شهری کوچک را میبینید. هر خودرو مشخصههایی مثل تولیدکننده، مدل، رنگ، ظرفیت موتور و شمارهی ثبت دارد. در کد نمونهی بالا، کلاس Cars و هر نمونه از این کلاس مجموعهی منحصربهفردی از مشخصهها را دارد. همچنین، متدی ایجاد شده است که متدهای updateRegistration را برای بهروزرسانی شمارهی ثبت دربارهی خودروهای فروشی فراخوانی میکند.
تفاوت زبان برنامهنویسی شیءگرا و رویهای
حالا که به درکی از دو الگوی برنامهنویسی شیءگرا و رویهای رسیدیم، نگاهی دقیقتر به تفاوتهای آنها میاندازیم. در برنامهنویسی رویهای، برنامهی اصلی به بخشهای کوچکی به نام تابع تقسیم میشود؛ درحالیکه در برنامهنویسی شیءگرا برنامه به اشیاء تقسیم میشود.
برنامهنویسی شیءگرا برخلاف برنامهنویسی رویهای از روش پایین به بالا استفاده میکند. تفاوت عمدهی دیگر استفاده از تعریفگرهای دسترسی در برنامههای شیءگرا است. تعریفگر دسترسی از دادهها دربرابر دسترسی غیرمجاز جلوگیری میکند و درواقع نوعی پیادهسازی از اصل کپسولهسازی دادهها است. برنامههای شیءگرا بهدلیل اصول انتزاع و کپسولهسازی بسیار ایمنتر هستند.
تقریباً کل زبانهای برنامهنویسی از برنامهنویسی ساختیافته پشتیبانی میکند. برخی از این زبانها عبارتاند از: سی و فرترن و بیسیک. زبانهایی مثل C++، جاوا، سی شارپ و پایتون نیز از زبانهای محبوب برنامهنویسی شیءگرا هستند.
درک مبانی
امروزه، بسیاری از افراد تازهکار بر فریمورکهای محبوبی مثل ریکت یا Node.js متمرکز هستند و مفاهیم اصلی برنامهنویسی مثل ساختارهای دادهای و برنامهنویسی شیءگرا را نادیده میگیرند. در مصاحبههای شغلی، اغلب سؤالهایی مثل مفاهیم برنامهنویسی پایه مطرح میشود که اگر با مبانی برنامهنویسی آشنا نباشید، ممکن است برایتان مشکلساز شود.