data abstraction c
Все, що вам потрібно знати про абстракцію на C ++.
У цій серії підручників на C ++ ми вивчимо всі основні концепції об’єктно-орієнтованого програмування на C ++, які відомі як чотири стовпи ООП.
- Абстракція
- Капсуляція
- Спадщина
- Поліморфізм
У цьому підручнику ми розглянемо все про абстракцію даних у C ++.
=> Клацніть тут, щоб переглянути абсолютну серію навчальних програм C ++.
Що ви дізнаєтесь:
- Що таке абстракція?
- Впровадження абстракції в C ++
- Переваги абстракції
- Висновок
- Рекомендована література
Що таке абстракція?
Абстракція - це метод об’єктно-орієнтованого програмування, за допомогою якого ми приховуємо деталі реалізації від користувача і виставляємо лише необхідний інтерфейс.
Ми можемо взяти реальний приклад кондиціонера (AC). У нас є пульт дистанційного керування для управління різними функціями змінного струму, такими як запуск, зупинка, підвищення / зменшення температури, контроль вологості тощо. Ми можемо керувати цими функціями лише за допомогою годинника, але всередині існує складна логіка, яка реалізовані для виконання цих функцій.
Однак, як кінцевий користувач, ми зазнали лише віддаленого інтерфейсу, а не деталей реалізації всіх цих функцій.
Абстракція є одним із чотирьох основ об'єктно-орієнтованого програмування, і майже всі рішення ООП базуються на принципах абстрагування, тобто розділенні інтерфейсу та деталей реалізації в програмі.
На наведеній вище схемі ми показали об’єкт та його вміст у вигляді зображень. Ми бачимо, що найпотаємніший шар цього об’єкта - це його основна функціональність, за якою слідують деталі реалізації.
У ООП ці два шари (хоча в більшості випадків це лише один шар) не піддаються впливу зовнішнього світу. Зовнішній шар, інтерфейс, - це шар, який надається кінцевому користувачеві для доступу до функціональних можливостей об’єкта.
Як результат, будь-які зміни, внесені в найглибші шари об'єкта, не є очевидними для кінцевого користувача, якщо інтерфейс, якому користувач піддається, залишається незмінним.
Впровадження абстракції в C ++
C ++ підтримує абстракцію на великій глибині. У C ++ навіть бібліотечні функції, які ми використовуємо, можна розглядати як приклад абстракції.
Ми можемо представити реалізацію абстракції в C ++ наступним чином:
Як показано на малюнку вище, ми можемо реалізувати абстракцію на C ++ двома способами:
# 1) Використання класів та специфікаторів доступу
Клас, реалізований на C ++ із специфікаторами доступу public, private та protected, можна розглядати як реалізацію абстракції.
Як ми вже знаємо, використання специфікаторів доступу дозволяє нам контролювати доступ, що надається учасникам класу. Ми можемо зробити деяких учасників приватними, щоб вони були недоступні поза класом. Ми можемо мати деякі члени як захищені, щоб вони були доступні лише для похідних класів. Нарешті, ми можемо зробити деяких учасників загальнодоступними, щоб ці учасники мали доступ поза класом.
Використовуючи це поняття, ми можемо реалізувати абстракцію таким чином, що деталі реалізації приховані від зовнішнього світу, використовуючи специфікатор приватного доступу, тоді як інтерфейс може бути відкритий для зовнішнього світу за допомогою публічного специфікатора.
розпочати java-проект у eclipse -
Отже, ми можемо реалізувати абстракцію в 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
Введіть число2: 20
Сума двох чисел = 30
питання та відповіді на мобільні тестові співбесіди pdf
У наведеній вище програмі ми маємо зразок класу, який має дві цілочисельні змінні, num1 та num2. Він також має дві функції readNum і displaySum. Члени даних num1 та num2, а також функція readNum є приватними для класу.
Функція displaySum є загальнодоступною для класу. В основній функції ми створюємо об’єкт класу sample і викликаємо displaySum, який зчитує ці два числа, а також друкує їх суму.
Це реалізація абстракції. Ми виставляємо загальнодоступну лише одну функцію, зберігаючи інші члени даних та функції в таємниці. Хоча це лише приклад для демонстрації абстракції, в той час як реалізовуючи реальні проблеми, ми можемо мати багато рівнів абстракції в C ++.
# 2) Використання файлу заголовка
Ми використовуємо файли заголовків у програмі C ++ для імпорту та використання заздалегідь визначених функцій. Для цього ми використовуємо директиву #include, щоб включити в нашу програму файли заголовків.
Наприклад, у вищезазначеній програмі ми використовували функції cin і cout. Що стосується цих функцій, ми знаємо лише, як ними користуватися і які параметри вони приймають.
Ми не знаємо, що відбувається у фоновому режимі, коли ці функції викликаються, або як вони реалізовані у файлі заголовка iostream. Це ще один спосіб абстракції, який надає С ++.
Ми не знаємо деталей реалізації всіх функцій, які ми імпортуємо із заголовних файлів.
Ось ще один приклад для демонстрації абстракції.
#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
У цьому прикладі ми визначили працівника класу, який має приватні дані, такі як випуск, ім’я, дані про заробітну плату, такі як основні та надбавки. Ми також визначаємо приватну функцію 'CalcuSalary', яка обчислює заробітну плату з використанням основних та надбавок.
У нас є конструктор для ініціалізації всіх даних для певного об’єкта працівника. Ми також називаємо функцію 'CalcuSalary' від конструктора для обчислення зарплати поточного працівника.
Далі, ми маємо функцію 'відображення', яка відображає випуск, ім'я та заробітну плату. У головній функції ми створюємо об'єкт працівника класу і викликаємо функцію відображення.
Ми чітко бачимо рівень абстракції, який ми наводимо в цій програмі. Ми приховали всі дані про співробітників, а також обчислимо функцію зарплати від користувача, зробивши їх приватними.
Ми надали користувачеві лише один функціональний дисплей, який надає користувачеві всю інформацію про об'єкт працівника, і в той же час він також приховує такі деталі, як приватні дані та те, як ми розраховуємо зарплату працівника.
Роблячи це, у майбутньому, якщо ми хочемо додати більше деталей та змінити спосіб обчислення зарплати, нам не потрібно змінювати функцію відображення. Користувач не знатиме про ці зміни.
Переваги абстракції
Нижче наведено деякі переваги абстракції.
- Програмісту не потрібно писати код низького рівня.
- Абстракція захищає внутрішню реалізацію від зловмисного використання та помилок.
- Абстракція може запобігти дублюванню коду, і, отже, програміст повинен виконувати однакові завдання знову і знову.
- Абстракція сприяє повторному використанню коду та належним чином класифікує членів даних класу.
- Програміст може змінювати внутрішні деталі реалізації класу без відома кінцевого користувача, тим самим не впливаючи на операції зовнішнього рівня.
Висновок
Абстракція є однією з найважливіших концепцій ООП і реалізується на великій глибині в C ++. Використовуючи абстракцію, ми можемо зберігати деталі реалізації програми під таємницею та лише виставляти ті деталі, які ми хочемо, зовнішньому світу.
Використовуючи концепцію абстракції, ми можемо розробити абстрактні типи даних та класи, які виступають як скелет програмного рішення, поверх якого будується ціле рішення. По мірі просування тем з ООП ми дізнаємось більше про ці типи та класи.
У наших майбутніх навчальних посібниках ми дізнаємося про інший стовп ООП, тобто інкапсуляцію. Ми також разом зважимо абстракцію та інкапсуляцію.
=> Шукайте тут цілі навчальні серії C ++.
Рекомендована література
- Типи даних C ++
- Інкапсуляція в C ++
- 10 найкращих інструментів науки про дані в 2021 році для усунення програмування
- Об'єктно-орієнтоване програмування на C ++
- Вступ до структур даних на C ++
- 70+ НАЙКРАЩИХ підручників для C ++, щоб навчитись програмуванню на C ++ БЕЗКОШТОВНО
- Параметризація даних JMeter за допомогою користувацьких змінних
- 10+ найкращих інструментів збору даних із стратегіями збору даних