برنامه نویسی شی گرا و ساختیافته دو سبک برنامه نویسی برای طراحی و پیادهسازی برنامههای کامپیوتری هستند. هرکدام از این روشها مزایا و معایب خود را دارند و انتخاب بین آنها باید با توجه به نیازها، موارد استفاده، پیچیدگی پروژه، تجربه برنامهنویس و توانمندی تیم انجام شود.
برای اینکه بخواهیم تفاوت برنامه نویسی شی گرا و ساخت یافته را توضیح دهیم ابتدا باید به تعریف هرکدام بپردازیم:
برنامه نویسی شی گرا (Object-Oriented Programming یا OOP) :
شیءگرایی یا برنامه نویسی شیءگرا یک سبک برنامه نویسی است که بر اساس مفهوم اشیاء و ارتباطات بین آنها استوار است. در این روش، برنامهها به صورت مجموعهای از اشیاء (objects) مدلسازی میشوند که هر کدام دارای ویژگیها (attributes) و رفتارها (behaviors) خاص خود هستند.
مثال ساده شی گرایی در دنیای حقیقی
برای توضیح بهتر، بگذارید یک مثال ساده را بررسی کنیم. فرض کنید میخواهید یک برنامهای بنویسید برای مدیریت یک دستگاه تلفن همراه. در برنامهنویسی شیءگرا، شما میتوانید یک کلاس به نام “تلفن همراه” تعریف کنید. این کلاس شامل ویژگیهایی مانند مدل، سیستم عامل، و باتری است که برای هر تلفن همراه باید داشته باشیم. همچنین، شما میتوانید رفتارهایی مانند “تماس گرفتن”، “ارسال پیامک”، و “بازی” را برای این کلاس تعریف کنید.
اکنون، وقتی شما میخواهید یک تلفن همراه جدید بسازید، میتوانید یک شیء از کلاس “تلفن همراه” ایجاد کنید و به آن ویژگیها و رفتارهای مورد نیاز را اختصاص دهید. به عنوان مثال، شما میتوانید برای تلفن همراهی که سیستم عامل اندروید دارد، مدل را به “Samsung Galaxy” و سیستم عامل را به “Android” تنظیم کنید. سپس میتوانید با استفاده از این شیء، تماس بگیرید، پیامک ارسال کنید و بازیهای مختلفی را اجرا کنید.
با استفاده از شیءگرایی، برنامهنویسان قادر خواهند بود برنامهها را به صورت ماژولار و قابل تعمیم طراحی کنند. همچنین، این روش به آنها امکان میدهد تا از ویژگیهای مشابه در برنامههای دیگر استفاده کنند و کد را مجدداً استفاده کنند. این یکی از دلایلی است که شیءگرایی به عنوان یکی از روشهای پرکاربرد برنامهنویسی در صنعت محسوب میشود.
در ادامه مقاله تفاوت برنامه نویسی شی گرا و ساخت یافته به اینکه کلاس چیست و مثالی در موردش پرداخته خواهد شد:
کلاس چیست؟
بهطور ساده، کلاس در سبک برنامه نویسی شیءگرا مانند یک قالب یا نمونه برای ساختن اشیاء است. یک کلاس دارای ویژگیها (متغیرها) و رفتارها (متدها) است که مشخص میکند اشیاءی که بر اساس آن ایجاد میشوند چه ویژگیها و عملکردهای خاصی دارند.
قطار را در نظر بگیرید. فرض کنید میخواهید یک کلاس به نام “قطار” بسازید. این کلاس شامل ویژگیهایی مانند “تعداد واگنها”، “سرعت ماکزیمم” و “مقصد” است که برای هر قطار باید داشته باشیم. همچنین، متدهایی مانند “حرکت”، “توقف” و “نمایش اطلاعات” را میتوانید برای این کلاس تعریف کنید.
حالا، وقتی میخواهید یک قطار جدید بسازید، میتوانید از کلاس “قطار” استفاده کنید. با ایجاد یک شیء از این کلاس، میتوانید ویژگیهای مورد نیاز را به آن اختصاص دهید. به عنوان مثال، میتوانید تعداد واگنها را تنظیم کنید، مقصد قطار را مشخص کنید و متدهای مربوط به حرکت و توقف قطار را فراخوانی کنید.
بنابراین، با استفاده از این کلاس “قطار”، میتوانید قطارهای مختلفی را ایجاد کنید و با آنها تعامل کنید، مانند حرکت دادن قطارها، توقف دادن آنها و نمایش اطلاعات مربوط به آنها.
اصول برنامه نویسی شی گرا
در اینجای مقاله تفاوت برنامه نویسی شی گرا و ساخت یافته می خواهیم از اصول برنامه نویسی شی گرا صحبت کنیم:
انتزاع یا Abstraction چیست؟
انتراع در سبک برنامه نویسی شیءگرا به معنای مخفف کردن یا سادهتر کردن مفاهیم پیچیده است. این اصل به ما اجازه میدهد تا جزئیات پیچیده را پنهان کنیم و به جای آن، فقط به ویژگیهای مهم و قابل فهم توجه کنیم.
برای مثال در مورد استفاده از تلویزیون، برای شما در انتخاب و استفاده از تلویزیون، اهمیتی ندارد که از چه روشهایی در تلویزیون استفاده شده است. آنچه برای شما مهم است، این است که با استفاده از کلید تلویزیون را روشن یا خاموش کنید و همچنین با استفاده از کلیدهای مربوطه، کانال تلویزیون را تغییر دهید یا صدا را تنظیم کنید. جزئیات دقیق و فنی برنامههای داخلی تلویزیون برای شما اهمیتی ندارد.
بنابراین میتوان گفت که در کلاس تلویزیون، اصل شیءگرایی انتزاع رعایت شده است.
در بخش بعدی از مقاله تفاوت برنامه نویسی شی گرا و ساخت یافته به کپسول سازی می پردازیم:
کپسول سازی یا Encapsulation چیست؟
کپسول سازی در برنامه نویسی شی گرا به معنی قرار دادن دادهها، ویژگیها، متدها و اعضای دادهها در یک واحد است. در واحد یا کپسول، دادهها و عملیات مربوط به آنها گروهبندی میشوند و به طور کامل از بیرون قابل دسترسی نیستند.
برای مثال، فرض کنید شما یک بازی ساده کامپیوتری ساختهاید که بازیکنان میتوانند بازی کنند. در این بازی، شما نیاز دارید تا دادههای مربوط به بازیکنان و عملیات مربوط به بازی را مدیریت کنید.
حالا میتوانید از کپسول سازی استفاده کنید. در اینجا دو کپسول اصلی داریم: “بازیکن” و “بازی”.
کپسول “بازیکن”:
– دادهها: نام بازیکن، امتیاز، سطح و وضعیت بازیکن (آنلاین یا آفلاین) و …
– عملیات: ثبت نام بازیکن، بروزرسانی امتیاز، تغییر سطح و وضعیت بازیکن و …
کپسول “بازی”:
– دادهها: نوع بازی، نتیجه، زمان شروع و پایان بازی و …
– عملیات: شروع بازی، پایان بازی، ثبت نتیجه و …
و همینطور میتوانیم برای سایر قطعات نیز کپسولهای مربوطه ایجاد کنیم.
مورد بعدی از مقاله تفاوت برنامه نویسی شی گرا و ساخت یافته از وراثت خواهیم گفت:
وراثت یا Inheritance چیست؟
وراثت یکی از اصول اساسی برنامهنویسی شی گرا است که به ارثبری و انتقال ویژگیها و رفتارهای یک کلاس (یا شیء) به کلاس دیگر اشاره دارد. در این مدل برنامهنویسی، یک کلاس میتواند ویژگیها و روشهایی را که در کلاس دیگر تعریف شدهاند، به ارث ببرد و آنها را استفاده کند. کلاسی که ویژگیها و روشها را به ارث میبرد، کلاس والد یا پدر میباشد و کلاسی که ویژگیها و روشها را به ارث میبرد، کلاس فرزند یا فرزند میباشد.
به طور مثال، فرض کنید یک برنامه سادهای برای مدیریت ماشینها ایجاد کردهاید. شما میتوانید یک کلاس پایه به نام “ماشین” ایجاد کنید که ویژگیهایی مانند “سرعت”، “ظرفیت سوخت” و “رنگ” را دارد. سپس، میتوانید کلاسهای دیگری مانند “اتومبیل” و “موتورسیکلت” را تعریف کنید که از کلاس “ماشین” ارث بردهاند. این کلاسها میتوانند ویژگیها و روشهای خاص خود را داشته باشند. به عنوان مثال، کلاس “اتومبیل” میتواند ویژگیهایی مانند “تعداد دربها” و “ظرفیت باربری” را داشته باشد و کلاس “موتورسیکلت” میتواند ویژگیهایی مانند “تعداد چرخها” و “نوع سوخت” را داشته باشد. با استفاده از وراثت، میتوانید ویژگیها و روشهای مشترک بین این کلاسها را در کلاس پدر یعنی “ماشین” تعریف کنید و از آنها در کلاسهای فرزند استفاده کنید.
در ادامه مقاله تفاوت برنامه نویسی شی گرا و ساخت یافته به چند ریختی می پردازیم:
چندریختی یا Polymorphism چیست؟
چند ریختی در برنامه نویسی شی گرا به مفهوم داشتن بیش از یک شکل یا نام برای یک شی یا متد اشاره دارد. به عبارتی دیگر، میتوان یک شی را با استفاده از چند نام مختلف یا متدها را با استفاده از همان نام، اما با رفتار یا عملکرد متفاوت در نظر گرفت.
برای مثال، فرض کنید که دستگاه موبایل ما از دو برند مختلف، یعنی “برند آ” و “برند ب” تولید میشود. این دو برند موبایل به شکل مختلفی ساخته شده اند و قابلیتها و ویژگیهای متفاوتی دارند.
اکنون فرض کنید شما از یک موبایل با برند “برند آ” استفاده میکنید. وقتی که میخواهید به موبایل اشاره کنید، شما به سادگی میتوانید به آن “موبایل” بگویید، به جای استفاده از نام برند آن. چرا که در این حالت، شما به موبایل به عنوان یک دستگاه کلی اشاره میکنید و نیازی به اشاره به برند خاص آن ندارید.
بنابراین میتوان گفت که این مفهوم نشاندهنده چندریختی است. همچنین میتوان این مفهوم را “عمومیت بخشی” (Generalization) نیز نامید؛ زیرا یک نام کلی وجود دارد که میتواند برای همه زیرکلاسهایی که از آن مشتق شدهاند، اعمال شود.
بخش بعدی از مقاله تفاوت برنامه نویسی شی گرا و ساخت یافته به تعریف برنامه نویسی ساخت یافته می پردازیم:
برنامه نویسی ساخت یافته (Structured Programming)
برنامهنویسی ساخت یافته یک سبک برنامه نویسی است. ساختیافته به این معنی است که ما در حین نوشتن برنامه، از قبل برنامه را به بخشهای کوچکتر و قابل تکرار تقسیم میکنیم. این بخشهای کوچکتر که به آنها “ماژول” یا “تابع” میگوییم، برای انجام یک وظیفه خاص طراحی میشوند.
میتوانیم برنامه نویسی ساخت یافته را با ساختن یک لگوی بزرگ تخیلی مقایسه کنیم. هر لگو، یک قسمت کوچک و خاص از ساختمان را میسازد که میتواند در ساخت چیزهای مختلف مورد استفاده قرار گیرد. همچنین، میتوانیم این قطعات را به صورت ترکیبهای مختلف به هم بچسبانیم تا ساختمانهای بزرگتر و پیچیدهتری بسازیم.
در برنامه نویسی ساخت یافته، ما همچنین از مفهوم “تابع” استفاده میکنیم. تابعها بخشهایی از برنامه هستند که وظایف مشخصی را انجام میدهند. به عنوان مثال، فرض کنید میخواهیم برنامهای بنویسیم که دو عدد را جمع کند. به جای اینکه کل عملیات جمع را در مکانی واحد انجام دهیم، یک تابع جمع تعریف میکنیم که دو عدد را به عنوان ورودی دریافت کرده و نتیجه جمع را برمیگرداند. در ادامه، هر جا که نیاز به جمع دو عدد داشته باشیم، از این تابع استفاده میکنیم. این رویکرد، برنامه را بهبود میبخشد و کد قابل استفادهتر و قابل تغییر و اصلاح میشود.
به طور کلی، برنامه نویسی ساخت یافته به ما کمک میکند تا برنامههای پیچیده را به برنامههای کوچکتر، خواناتر، و مدیریتپذیرتر تقسیم کنیم.
در ادامه مقاله تفاوت برنامه نویسی شی گرا و ساخت یافته از مزایای برنامه نویسی ساخت یافته خواهیم گفت:
مزایای برنامه نویسی ساخت یافته
برنامه نویسی ساخت یافته دارای مزایای زیادی است که میتوان به صورت ساده توضیح داد. در ادامه، چند مزیت اصلی برنامه نویسی ساخت یافته آوردهام:
۱. سادگی: با استفاده از برنامه نویسی ساخت یافته، برنامه نویسی به شکلی سادهتر و قابل فهمتر تبدیل میشود. به جای نوشتن یک برنامه بزرگ و پیچیده، برنامه را به بخشهای کوچکتر تقسیم کنید که هر بخش یک وظیفه خاص را انجام میدهد. این کار کمک میکند تا برنامه نویسی به راحتی قابل فهم و قابل انجام باشد.
۲. قابلیت استفاده مجدد: با استفاده از برنامه نویسی ساخت یافته، میتوانید بخشهایی از برنامه را که قبلاً نوشتهاید، مجدداً استفاده کنید. به عنوان مثال، اگر یک تابع برای جمع دو عدد تعریف کرده باشید، هر بار که نیاز به جمع دارید، از آن تابع استفاده کنید. این قابلیت استفاده مجدد کمک میکند تا برنامه را سریعتر و بهینهتر بنویسید.
۳. انعطافپذیری: با استفاده از برنامه نویسی ساخت یافته، میتوانید برنامه را به راحتی تغییر و تنظیم کنید. اگر نیاز به اصلاح یا بهبود بخشی از برنامه دارید، کافی است فقط آن بخش را تغییر دهید و سایر قسمتها تحت تأثیر قرار نخواهند گرفت. این انعطافپذیری به شما اجازه میدهد به راحتی به نیازها و تغییرات برنامه پاسخ دهید.
۴. ترتیب و ترکیبپذیری: با برنامه نویسی ساخت یافته، میتوانید قطعات کوچکتر را به ترتیب و ترکیبهای مختلف با هم ترکیب کنید تا برنامههای بزرگتر و پیچیدهتری بسازید. این قابلیت به شما اجازه میدهد تا برنامههای متنوعی را ایجاد کنید و با استفاده از قطعاتی که قبلاً ساختهاید، برنامه جدیدی بسازید.
این مزایا نشان میدهد که برنامه نویسی ساخت یافته به برنامه نویسان، از جمله کودکان، ابزارها و امکاناتی میدهد تا برنامههای ساده و پیچیده را به شکل بهینه بنویسند و از آنها بهرهبرداری کنند.
سخن پایانی
در نهایت، میتوان گفت که تفاوت بین شی گرا و ساخت یافته در رویکرد و طراحی نرمافزار است. در شی گرایی، برنامه به صورت اشیاء تعریف میشود و همه عملکردها و وظایف به اشیاء منتسب میشوند. این روش باعث میشود کد قابل استفاده مجدد، قابل تغییرپذیر و سازگار باشد.
از طرف دیگر، در ساخت یافته، برنامه به صورت لایهای طراحی میشود که هر لایه دارای وظایف خود است. این روش باعث جداسازی قسمتهای مختلف برنامه شده و امکان تغییرات در چندین لایه را فراهم میکند.
بنابراین، هم شی گرا و هم ساخت یدافته روشهای مناسب برای طراحی نرمافزار هستند، اما با توجه به نوع پروژه و نیازهای آن، ممکن است یکی از این روشها مناسبتر باشد. در نهایت، تصمیمگیری بر عهده تیم توسعه و مدیران پروژه است که باید با توجه به شرایط و محدودیتهای موجود، بهترین روش را انتخاب کنند.
دیدگاه ها
0 دیدگاه