* Накратко за обектно-ориентираното програмиране
Публикувано на 06 ноември 2008 в раздел С/С++.
За да обясним понятието "обектно-ориентирано програмиране" е добре да опишем какви програми писахме на езика за програмиране С досега:
1. Скриптови програми: Последователно изпълнение на предварително зададена поредица от операции.
2. Процедурно програмиране: Възможност за "разклоняване" на програмата, така че тя да извършва различни последователности от операции (процедури или както споменахме в т.1 - скриптове), в зависимост от въведени данни от потребителят. След изпълнение на дадена процедура програмата се "връща" на мястото, където процедурата е извикана.
3. Модулно-процедурно програмиране: Предоставя възможност за обединяване на различни процедури в т.нар. "модули". По този начин разделяме програмата на различни логически части, които се свързват почежду си чрез т.нар. "procedure calls".
Обектно-ориентираното програмиране е подход, при който данните и алгоритмите за работа с тях се комбинират в цялостен “обект”, който може да бъде използван в множество програми. Основните концепции на ООП са обекти, класове, наследственост, полиморфизъм и динамично заделяне на памет.
Разпространена е тенденцията, че в разработката на софтуер ние се стремим да използваме колкото се може повече готови разработени функционалности и по този начин да "сглабяме" програми, а не да ги пишем наново. Така ние всъщност използваме готови обекти и работим с тях чрез "интерфейс". Предоставянето на достъп до обекта само чрез неговия интерфейс от съобщения се нарича капсулация. Това е подход, при който ние показваме само функциите и данните от даден обект, които трябва да бъдат видими при работа с него. Всичкият останал код се "капсулира", т.е. скрива и защитава.
Класовете описват конструкцията на обектите и методите на работа с него. Класът сам по себе си не е обект, а просто шаблон, който показва как ще изглежда даден обект. Ние можем да създаваме множество обекти по шаблона на един клас. Схемата за достъп прилича много на тази при вече познатите структури. Може да се каже, че класовете всъщност са естествено продължение на идеята за структурния тип.
Наследяването е друга основна черта на обектно ориентираното програмиране. Тя е именно споменатата вече възможност да не пренаписваме код, а да го използваме наготово. Чрез наследяването ние взимаме кода на вече написан клас и единствено разширяваме или променяме неговата функционалност. Така ние моделираме и изграждаме системи от обекти.
Полиморфизмът ни дава възможност да разглеждаме един обект в различни форми. В C++ полиморфизмът се реализира чрез виртуалните функции.
Добави коментар