data abstraction c
Всичко, което трябва да знаете за абстракцията в C ++.
В тази серия уроци за C ++ ще научим всички основни концепции на обектно-ориентираното програмиране в C ++, които са известни като четирите стълба на ООП.
- Абстракция
- Капсулиране
- Наследяване
- Полиморфизъм
В този урок ще разгледаме всичко за абстракцията на данни в C ++.
=> Щракнете тук за абсолютната серия за обучение на C ++.
компании, които ви плащат, за да тествате техните продукти
Какво ще научите:
- Какво е абстракция?
- Внедряване на абстракция в C ++
- Предимства на абстракцията
- Заключение
- Препоръчително четене
Какво е абстракция?
Абстракцията е техника на обектно-ориентирано програмиране, с помощта на която скриваме подробностите за изпълнението от потребителя и излагаме само необходимия интерфейс.
Можем да вземем реалния пример за климатик (AC). Разполагаме с дистанционно управление, за да контролираме различните функции на променлив ток като стартиране, спиране, увеличаване / намаляване на температурата, управление на влажността и др. внедрени за изпълнение на тези функции.
Като краен потребител обаче това, на което се изложихме, е само отдалеченият интерфейс, а не подробностите за изпълнението на всички тези функции.
Абстракцията е един от четирите стълба на обектно-ориентираното програмиране и почти всички OOP решения се базират на принципите на абстракция, т.е. разделяне на интерфейса и подробностите за изпълнението в програмата.
В горната схема сме показали обект и съдържанието му като изобразително представяне. Виждаме, че най-вътрешният слой на този обект е неговата основна функционалност, последвана от подробностите за изпълнението.
В ООП тези два слоя (макар че в повечето случаи това е само един слой) не са изложени на външния свят. Най-външният слой, интерфейсът, е слоят, който се предоставя за крайния потребител, за да има достъп до функционалността на обекта.
В резултат на това всички промени, направени в най-вътрешните слоеве на обекта, не са очевидни за крайния потребител, стига интерфейсът, на който е изложен потребителят, да остане същият.
Внедряване на абстракция в C ++
C ++ поддържа абстракция на голяма дълбочина. В C ++ дори библиотечните функции, които използваме, могат да се разглеждат като пример за абстракция.
Можем да представим изпълнението на абстракция в C ++, както следва:
Както е показано на горната фигура, можем да реализираме абстракция в C ++ по два начина:
изпълнение на балон сортиране c ++
# 1) Използване на класове и спецификатори за достъп
Клас, реализиран в C ++ с спецификатори за достъп public, private и protected, може да се разглежда като изпълнение на абстракция.
Както вече знаем, използването на спецификатори за достъп ни позволява да контролираме достъпа, даден на членовете на класа. Можем да направим някои членове частни, така че да са недостъпни извън класа. Можем да имаме някои членове като защитени, така че те да са достъпни само за производни класове. И накрая, можем да направим някои членове публични, така че тези членове да са достъпни извън класа.
Използвайки това понятие, можем да реализираме абстракция по такъв начин, че подробностите за изпълнението да са скрити от външния свят, като използваме частен спецификатор за достъп, докато интерфейсът може да бъде изложен на външния свят, използвайки публичния спецификатор.
Следователно можем да реализираме абстракция в C ++, като използваме клас за обединяване на данни и функции в една единица и използваме спецификатори за достъп за контрол на достъпа до тези данни и функции.
Нека да приложим следния пример, за да демонстрираме това.
#include #include using namespace std; class sample { int num1,num2; void readNum(){ cout<>num1; cout<>num2; } public: void displaySum() { readNum(); cout<<'
Sum of the two numbers = '< Изход:
Въведете число1: 10
Въведете num2: 20
Сума от двете числа = 30
В горната програма имаме примерен клас, който има две целочислени променливи, num1 и num2. Той също така има две функции readNum и displaySum. Членовете на данните num1 и num2, както и функцията readNum, са частни за класа.
Функцията displaySum е публична за класа. В основната функция създаваме обект от клас sample и извикваме displaySum, който чете двете числа, както и отпечатва тяхната сума.
Това е изпълнението на абстракцията. Ние излагаме само една функция на обществеността, като същевременно държим останалите членове на данните и функции в тайна. Въпреки че това е само пример за демонстриране на абстракция, докато изпълняваме реални проблеми, можем да имаме много нива на абстракция в C ++.
# 2) Използване на изпълнение на заглавен файл
Използваме заглавни файлове в програма C ++, за да импортираме и използваме предварително дефинирани функции. За целта използваме директивата #include, за да включим заглавни файлове в нашата програма.
Например, в горната програма използвахме функциите cin и cout. Що се отнася до тези функции, ние знаем само как да ги използваме и какви са параметрите, които те приемат.
Не знаем какво се случва във фонов режим, когато тези функции са извикани, или как те се изпълняват в заглавния файл на iostream. Това е друг начин за абстракция, предоставен от C ++.
Не знаем подробности за изпълнението на всички функции, които импортираме от заглавните файлове.
Ето още един пример за демонстрация на абстракция.
къде да намеря своя мрежов ключ
#include #include using namespace std; class employee{ int empId; string name; double salary,basic,allowances; double calculateSalary(int empId){ salary = basic+allowances; return salary; } public: employee(int empId, string name,double basic,double allowances): empId(empId),name(name),basic(basic),allowances(allowances){ calculateSalary(empId); } void display(){ cout<<'EmpId = '< Изход:
EmpId = 1 Име = Ved
Заплата на служителя = 18245,4

В този пример дефинирахме служител в класа, който има лични данни като empId, име, данни за заплата като основни и надбавки. Ние също така дефинираме частна функция „CalcuSalary“, която изчислява заплатата, като използва основни и надбавки.
Имаме конструктор за инициализиране на всички данни за определен обект на служител. Ние също така наричаме функцията 'CalcuSalary' от конструктора, за да изчислим заплатата на текущия служител.
След това имаме функция „дисплей“, която показва изписани, име и заплата. В основната функция създаваме обект на служител в класа и извикваме функцията за показване.
Можем ясно да видим нивото на абстракция, което сме предоставили в тази програма. Скрихме всички данни за служителите, както и функцията за изчисляване на заплата от потребителя, като ги направим частни.
Изложили сме само един функционален дисплей на потребителя, който предоставя на потребителя цялата информация за обект на служител и същевременно скрива подробности като лични данни и как изчисляваме заплатата на служителя.
Правейки това, в бъдеще, ако искаме да добавим повече подробности и да променим начина, по който се изчислява заплатата, не е нужно да променяме функцията за показване. Потребителят няма да знае за тези промени.
Предимства на абстракцията
По-долу са изброени някои от предимствата на абстракцията.
- Програмистът не трябва да пише код на ниско ниво.
- Абстракцията защитава вътрешната реализация от злонамерена употреба и грешки.
- Абстракцията може да предотврати дублирането на код и по този начин програмистът трябва да изпълнява едни и същи задачи отново и отново.
- Абстракцията насърчава повторното използване на кода и правилно класифицира членовете на данните от класа.
- Програмистът може да променя вътрешните детайли на изпълнението на класа без знанието на крайния потребител, като по този начин не засяга операциите на външния слой.
Заключение
Абстракцията е една от най-важните концепции в ООП и се прилага на голяма дълбочина в C ++. Използвайки абстракция, можем да запазим подробностите за изпълнението на програмата и да изложим на външния свят само детайлите, които искаме.
Използвайки концепцията за абстракция, можем да проектираме абстрактни типове данни и класове, които действат като скелет на програмното решение, върху което е изградено цяло решение. Докато напредваме през темите за ООП, ще научим повече за тези видове и класове.
В предстоящите ни уроци ще научим за друг стълб на ООП, т.е. капсулиране. Там също ще преценим абстракцията и капсулирането.
=> Потърсете тук цялата серия за обучение на C ++.
Препоръчително четене
- Типове данни на C ++
- Капсулиране в C ++
- Топ 10 на инструментите за наука за данни през 2021 г. за премахване на програмирането
- Обектно-ориентирано програмиране в C ++
- Въведение в структурите на данни в C ++
- 70+ НАЙ-ДОБРИ уроци за C ++, за да научите БЕЗПЛАТНО програмиране на C ++
- Параметризиране на данни на JMeter, използвайки дефинирани от потребителя променливи
- 10+ най-добри инструменти за събиране на данни със стратегии за събиране на данни