encapsulation c
Пълен преглед на капсулирането в C ++:
Обсъдихме подробно абстракцията в предишния ни урок. Както знаем, абстракцията скрива подробностите за изпълнението от потребителя и излага само интерфейса, който се изисква от потребителя.
В този урок ще обсъдим още една важна характеристика на ООП, т.е.капсулиране. Абстракцията и капсулирането вървят ръка за ръка. Всъщност можем да кажем, че капсулираният код ни помага в абстракцията. С други думи, капсулирането и абстракцията са тясно свързани помежду си.
=> Посетете тук за пълния курс на C ++ от експерти.
По този начин можем да обсъдим тези две концепции заедно, тъй като има много тънка граница между капсулиране и абстракция.
Какво ще научите:
- Какво е капсулиране?
- Прилагане на капсулиране
- Разлика между капсулиране и абстракция
- Заключение
- Препоръчително четене
Какво е капсулиране?
Капсулирането на данни се отнася до процеса на свързване на данни и функции или методи, работещи с тези данни в една единица, така че да бъдат защитени от външна намеса и злоупотреба.
Това е важна обектно-ориентирана концепция за програмиране и води до още една концепция за ООП, известна като „ Скриване на данни ”. Инкапсулацията скрива данни и нейните членове, докато абстракцията излага само необходимите детайли или интерфейси на външния свят.
как да отворите dat файла в pdf
В известен смисъл абстракцията представя „абстрактния изглед“ на скритите данни пред външния свят. По този начин вече направихме изявление, че капсулирането и абстракцията вървят ръка за ръка.
Клас в C ++ е този, при който обединяваме членовете на данните и функциите, работещи върху тези членове на данни, заедно с спецификатори за достъп като частни, публични и защитени представляват капсулиране. Вече обсъдихме спецификаторите за достъп в нашия предишен урок за класове и обекти.
Също така знаем, че по подразбиране членовете на класа са частни. Когато декларираме членовете на класа като частни и методите за достъп до членовете на класа като публични, ние наистина прилагаме капсулиране. В същото време ние предоставяме абстрактна представа за данните на външния свят под формата на публични методи.
Прилагане на капсулиране
Инкапсулацията в C ++ е реализирана като клас, който обединява данни и функциите, работещи с тези данни. Повечето данни се декларират като частни, така че да не са достъпни извън класа. Методите или функциите са декларирани като публични и могат да бъдат достъпни с помощта на обекта на класа.
Ние обаче не можем да осъществим пряк достъп до частни членове и това се нарича скриване на данни. Когато това се направи, данните са защитени и до тях може да се осъществи достъп само чрез функции от конкретния клас, в който се декларират данните.
// Example program #include #include using namespace std; //example class to demonstrate encapsulation class sampleData{ int num; char ch; public: //getter methods to read data values int getInt() const{ return num; } char getCh() const{ return ch; } //setter methods to set data values void setInt(int num) { this->num = num; } void setCh(char ch){ this->ch = ch; } }; int main() { sampleData s; s.setInt(100); s.setCh('Z'); cout<<'num = '< Изход:
num = 100
ch = Z
В горната програма сме събрали две променливи-членове заедно с методите getter и setter в клас. и това е пример за капсулиране.
Декларирахме две променливи, т.е. num и ch като частни променливи, така че да не са достъпни за външния свят. Те са достъпни само за функциите, които сме обявили за обществени. По този начин имаме скрити членове на данни като частни променливи в клас.
Нека вземем друг пример за по-добро разбиране на капсулирането в C ++.
#include #include using namespace std; //Accounts class: includes salary info for a particular employee class Accounts{ int empId; double salary, basic, allowances, deductions; public: Accounts(int empId):empId(empId){} //read salary info void readEmployeeInfo(int empId){ cout<<'Enter basic for the employee'< basic; cout<>allowances; cout<>deductions; } //calculate salary double calculateSalary(){ salary = basic+ allowances - deductions; return salary; } //display details void display(){ salary = calculateSalary(); cout<<'Employee: '< Изход:
Въведете основно за служителя1: 10000
надбавки: 4324,43
удръжки: 1000
Служител: 1
Заплата: 13324.4
Това е още един пример за капсулиране. Както е показано по-горе, имаме акаунти от клас, които обединяват данни за акаунти и всички функции, които работят с тези данни, в един акаунт от клас. В основната функция можем да създадем обект от този клас и функции за достъп, за да получим желаната информация.
Сега, ако някои други класове казват, че данните на служителите искат да имат достъп до данните на акаунтите, тогава той не може да го направи директно. Ще трябва да създаде обект от акаунти в клас и ще има достъп само до онези елементи, които са публични. По този начин, използвайки капсулиране, ние гарантираме контрола на достъпа на данните и също така гарантираме целостта на данните.
какво да използвам за отваряне на jar файлове
Разлика между капсулиране и абстракция
Абстракцията и капсулирането са тясно свързани помежду си. Капсулирането подпомага абстракцията чрез групиране на данни и методи, работещи върху тези данни заедно.
Капсулиране Абстракция Скрива данните Скрива изпълнението Обединява данни и методи заедно Предоставя абстрактен интерфейс на потребителя, излагащ само това, което се изисква Помощ при абстракция Помага за повторно използване и сигурност на кода. Внедрен като клас с спецификатори за достъп, дефиниращи достъпа до членове и методи на данни Реализиран като абстрактен клас и интерфейси, които не могат да бъдат създадени.
Заключение
Капсулирането е една от най-важните характеристики на ООП, тъй като ни предоставя начин да скрием данните. Това от своя страна прави данните по-сигурни и ги предпазва от злонамерена употреба.
Капсулацията помага за абстракция, така че да можем да изложим само необходимия интерфейс на крайния потребител и съответно да скрием други подробности. В този урок разгледахме концепциите за абстракция и капсулиране в C ++.
В нашия предстоящ урок ще обсъдим наследяването в C ++ с примери.
=> Посетете тук за ексклузивната поредица за обучение на C ++.
Препоръчително четене
- Абстракция на данни в C ++
- Типове данни на C ++
- Най-добрият БЕЗПЛАТЕН урок за C #: Най-доброто ръководство за C # за начинаещи
- 70+ НАЙ-ДОБРИ уроци за C ++, за да научите БЕЗПЛАТНО програмиране на C ++
- Библиотечни функции в C ++
- Обектно-ориентирано програмиране в C ++
- Въведение в структурите на данни в C ++
- Списъци за инициализация в C ++