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