Відкриті і закриті члени класу. Просте спадкування

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2013
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Комп’ютерні системи

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Національний університет “Львівська політехніка” Кафедра САП  Звіт до лабораторної роботи № 10 Відкриті і закриті члени класу. Просте спадкування з курсу “Проблемно-орієнтоване програмування” для студентів спеціальності "Комп’ютерні системи проектування" Львів 2013 1. МЕТА РОБОТИ Метою даної роботи є ознайомлення з реалізацією ієрархії класів у мові програмування С++ на основі простого спадкування. 2. ТЕОРЕТИЧНІ ВІДОМОСТІ Спадкування - один з наріжних каменів об’єктно-оріентованого програмування, тому що воно дозволяє створювати ієрархічні класифікації. Використовуючи спадкування, можна створювати загальні класи, що визначають властивості, характерні для всієї сукупності родинних класів. Ці класи можуть успадковувати властивості друг у друга, додаючи до них свої власні унікальні характеристики. Відповідно до стандартної термінології мови C++ клас, що лежить в основі ієрархії, називається базовим (base class), а клас, що успадковує властивості базового класу, - похідним (derived class). Похідні класи, у свою чергу, можуть бути базовими стосовно інших класів. У мові C++ передбачений потужний і гнучкий механізм спадкування. Керування доступом до членів базового класу При спадкуванні члени базового класу стають членами похідного класу. Як правило, для спадкування використовується наступна синтаксична конструкція. class ім'я-похідного-класу : рівень_доступу ім'я-базового-класу { // тіло класу }; Параметр рівень_доступу визначає статус членів базового класу в похідному класі. Як цей параметр використовуються специфікатори public, private або protected. Якщо рівень доступу не зазначений, то для похідного класу за замовчуванням використовується специфікатор private, а для похідної структури public. Розглянемо варіанти, що виникають у цих ситуаціях. (Специфікатор protected буде описаний нижче.) Якщо рівень доступу до членів базового класу задається специфікатором public, то всі відкриті й захищені члени базового класу стають відкритими й захищеними членами похідного класу. При цьому закриті члени базового класу не міняють свого статусу й залишаються недоступними членам похідного. Як демонструє наступна програма, об'єкти класу derived можуть безпосередньо посилатися на відкриті члени класу base. Якщо властивості базового класу успадковуються за допомогою специфікатора доступу private, всі відкриті й захищені члени базового класу стають закритими членами похідного класу. Наприклад, що випливає програма навіть не буде скомпільована, тому що обидві функції set() і show() тепер є закритими членами класу derived. При закритому спадкуванні всі відкриті й захищені члени базового класу стають закритими членами похідного класу. Це значить, що вони залишаються доступними членам похідного класу, але недоступні іншим елементам програми, що не є членами базового або похідного класів. Спадкування й захищені члени Специфікатор protected підвищує гнучкість механізму спадкування. Якщо член класу оголошений захищеним (protected), то поза класом він недоступний. Із цього погляду захищений член класу нічим не відрізняється від закритого. Єдине виключення із цього правила стосується спадкування. У цій ситуації захищений член класу істотно відрізняється від закритого. Як вказувалося раніше, закритий член базового класу недоступний іншим елементам програми, включаючи похідний клас. Однак захищені члени базового класу поводяться інакше. При відкритому спадкуванні захищені члени базового класу стають захищеними членами похідного класу й отже, доступні іншим членам похідного класу. Іншими словами захищені члени класу стосовно свого класу є закритими й у той же час, можуть успадковуватися похідним класом. Якщо похідний клас є базовим стосовно іншому похідному класу, то будь-який захищений член вихідного базового класу, відкрито наслідуваний першим похідним класом, також може успадковуватися другим похідним класом як захищений член. Навіть якби до класу base застосовувалося закрите спадкування, клас derived1 як і раніше мав би доступ до його відкритих і захищених членів Однак ці привілеї іншим спадкоємцям не передаються. Захищене спадкування До базового класу можна застосовувати механізм захищеного спадкування. При цьому всі відкриті й захищені члени базового класу стають захищеними членами похідного класу. ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ(1 варіант) Описати базовий клас з функціями присвоєння і виводу (cout) двох змінних цілого типу. Використовуючи принцип наслідування, описати похідний клас з функцією присвоєння і виводу однієї змінної. В головній функції main описати елемент похідного класу розмірності 3 і вивести на екран 1 елемент базового і три елементи похідного класу. КОД ПРОГРАМИ #include <iostream> using namespace std; class BaseC { int a,b; public: void setab(int a,int b) {this->a = a; this->b = b;} void print() {cout<<"a: "<<a<<" b: "<<b<<endl;} }; class DerrivedC: public BaseC { int c; public: void setc(int c) {this->c = c;} void print() { BaseC::print(); cout<<"c: "<<c<<endl;} }; int main(){ DerrivedC c[3]; c[0].setab(25,35); c[0].setc(45); c[1].setab(55,65); c[1].setc(75); c[2].setab(85,95); c[2].setc(100); cout<<"Derived print() c[0]"<<endl; c[0].print(); cout<<"Derived print() c[1]"<<endl; c[1].print(); cout<<"Derived print() c[2]"<<endl; c[2].print(); cout<<"Base print() c[0]"<<endl; c[0].BaseC::print(); cin.get(); cin.get(); return 0; } РЕЗУЛЬТАТ ВИКОНАННЯ  ВИСНОВОК На основі лабораторної роботи я ознайомився з реалізацією ієрархії класів у мові програмування С++ на основі простого спадкування.
Антиботан аватар за замовчуванням

29.09.2014 20:09-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!