Обектно ориентирано програмиране: Кои са основните принципи в него?
За да навлезеш по-дълбоко в спецификите на езика C++, неминуемо трябва да овладееш принципите на обектно-ориентираното програмиране. В курса за напреднали C++ OOP - февруари 2025 ще обърнеш внимание на особеностите на ООП, ще работиш с конструктори, класове и обекти:
Не се колебай да се включиш още сега, а по повод началото на обучението ще видим които са основните принципи в ООП. Обектно-ориентираното програмиране (или както ще го срещаш по-често ООП) се явява наследник на процедурното (или наричано още „структурно“) програмиране, при което програмата представлява съвкупност от процедури, които се извикват една друга.
Това обаче е доста тромав подход, тъй като само процедурите могат да се преизползват, а дори и те трудно могат да бъдат направени гъвкави и общи. Затова на помощ идва обектно-ориентираното програмиране, което залага на малко по-различен подход.
При него водеща е парадигмата, че данните могат да описват определени същности, които можем да срещнем и в реалния живот. Тук идват обектите. Обектът описва поведението и характеристиките, които тук се наричат „методи“ и „свойства“.
Освен това, за да бъде един език обектно-ориентиран, не е достатъчно той да позволява работа с класове и обекти. ООП включва и други концепции като абстракция, наследяване, капсулация, полиморфизъм и други.
Източник: JavaTPoint
Абстракция
Абстракцията е процесът на скриване на ненужни подробности от потребителя. Например, когато изпращаш съобщение, просто въвеждаш текста и натискаш бутона за изпращане. Телефонът ти показва, че съобщението е изпратено, но какво всъщност се случва във фонов режим, когато докоснеш „изпрати“, е скрито от теб, тъй като няма никаква необходимост да го знаеш.
С други думи, абстракцията ти позволява да опростиш максимално сложни концепции и да боравиш с по-опростения вариант. Именно затова абстракцията стои в основата на ООП – можеш да мислиш за много сложни обекти като за прости такива и да улесниш процеса на работа.
Капсулиране
Капсулирането (известно още и като „information hiding, „скриване на информация“) е един от основните принципи на обектно-ориентираното програмиране. При него един обект трябва да предоставя на ползващия го само пряко необходимите му средства за управление.
Например един офис служител използва единствено периферията на едно PC. Той няма нужда да познава модела на процесора, неговата архитектура, начина на връзка с дънната платка и т.н. Тези компоненти и знанията за тях (процесор, дънна платка) се явяват скрити за него.
Този, който създава класовете, определя какво да е скрито и какво да е публично видимо. Това става чрез изрично дефиниране като private (скрит) на всяко поле или метод, които не искаме да се ползват от друг клас.
Наследяване
Наследяването също е основен принцип в обектно ориентираното програмиране. Чрез него един клас може да „наследява“ методи и свойства от друг, по-общ клас. Позволи ми да приведа метафоричен пример с животни.
Вълкът е от семейство „Canidae” (което се превежда „кучеви“). Всички вълци са четириноги, бозайници, хищници. Тези характеристики на вълка могат да се зададат на някой по-общ клас, ако следваме асоциацията с животните – на ниво „клас“ или „разред“ в йерархията на животинския свят.
Към този по-висок клас се свързват всички отговарящи на тази характеристика класове. Това означава, че те черпят тази обща информация от този по-висок клас, което спестява необходимостта да я изписваш всеки път, за всеки клас, който искаш да има тези качества. Този клас, който се наследява, се нарича клас-родител, или още базов клас (base class, super class).
Полиморфизъм
Още един от важните принципи на обектно-ориентираното програмиране е т.нар. полиморфизъм. Нека се върнем на примера с животните. Дефинирали сме даден клас – семейство „Canidae“. Само че в това „семейство“ има много и разнообразни хищници – от вълци, през лисици и стигайки до всички кучета. Те имат различно поведение по отношение на лова.
Полиморфизмът ни позволява да третираме кое да е от тези животни като член на семейство „Canidae“ и да му зададем команда да извърши улов, без значение какво точно е „животното“, на което задаваме командата. За да извърши това, полиморфизмът използва пренаписване на методи в наследените класове, с цел промяна на първоначалното им поведение, което е прихванато от базовия клас. Именно това дава възможност за множество различни реализации за едно и също нещо.
Тези и други принципи, залегнали в обектно-ориентираното програмиране, спомагат за реализирането на неговата цел – да позволи по-бърза разработка на сложен софтуер, по-лесната му поддръжка след това, както и интуитивното преизползване на кода в други приложения. Предстоящият курс ще те запознае с гореспоменатите концепции в дълбочина и практическото им приложение.
Курсът е подходящ за всички преминали курса „C++ Advanced“ или с еквивалентно ниво на знания. Занятията започват скоро, затова се запиши C++ OOP - февруари 2025 още сега, ако искаш да продължиш да надграждаш уменията си!