АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

УСПАДКОВУВАННЯ. ВИЗНАЧЕННЯ ПОХІДНОГО КЛАСУ._____________________________

Читайте также:
  1. XIV. 7. Вимірювання електрорушійних сил. Застосування методу вимірювання ЕРС для визначення різних фізико – хімічних величин
  2. Блок визначення мінімального або максимального значення MinMax
  3. Визначення абразивності порід
  4. Визначення базових умов для задоволення потреб покупців
  5. Визначення беззбиткового обсягу продажів і зони безпеки підприємства
  6. Визначення ваги бурового снаряду.
  7. Визначення величини резерва сумнівних боргів на основі класифікації дебіторської заборгованості
  8. Визначення виробничого циклу складного процесу
  9. ВИЗНАЧЕННЯ ВЛАДИ
  10. Визначення вмісту механічних домішок у моторному маслі
  11. Визначення ВООЗ
  12. Визначення впливу ризику на прибуток
Мета об'єктно-орієнтованого програмування полягає в повторному використанні створених класів, що економить час і сили. Успадковування – є найбільш значущою можливістю ООП після створення класів. Якщо ви вже створили деякий клас, то можливі ситуації, що новому класу потрібні багато або навіть всі особливості вже існуючого класу, але необхідно додати один або декілька елементів даних або функцій. У таких випадках C++ дозволяє вам будувати новий об'єкт, використовуючи характеристики вже існуючого об'єкту. Іншими словами, новий об'єкт успадковуватиме елементи існуючого класу – який називають базовим класом. Коли ви будуєте новий клас з того, що існує, цей новий клас часто називається похідним класом. Базовий клас при цьому залишається незмінним. Отже, успадковування - дозволяє розширити і/або змінити структуру вже існуючого (батьківського) класу, шляхом написання нового класу (нащадка). Далі можна створювати і використовувати в програмі нові об'єкти з розширеними можливостями. Важливим результатом повторного використання коду є спрощення розповсюдження бібліотек класів. Програміст може використовувати класи, створені кимось іншим, без модифікації коду, просто створюючи похідні класи, відповідні для приватної ситуації.
 
Ми розглянемо можливості спадкоємства детальніше після того, як познайомимося з деякими тонкощами, які можуть зустрітися при роботі із успадковуванням.
 
Успадкування - це співвідношення між класами, коли один клас використовує структурну або функціональну частину іншого (інших) класів (рис. 1.).
 

 


 

 

Рис. 1. Успадковування
 

 

 

Часто об'єкти одного класу насправді є також і об'єктами іншого класу. Прямокутник є також і чотирикутник (як і квадрат, і паралелограм, і трапеція). Таким чином, можна сказати, що клас Rectangle (прямокутник) є спадкоємцем класу чотирикутник. У цьому контексті клас чотирикутник є базовим класом, а клас Rectangle(прямокутник) - похідним класом. Прямокутник є спеціальним типом чотирикутника, але невірно стверджувати, що чотирикутник є прямокутником.
 

 

Опис успадковування має наступну форму:

Class назва_класу: список_базових_класів { // протокол похідного класу };
 
Приклад: class Base { // протокол базового класу }; class Derived: [ public / protected / private ] Base { //протокол похідного класу };
 
У першому рядку опису класу Derivedвказується, що він є похідним класом від Base. class Derived: [ public / protected / private ] Base Для цього використовується знак двокрапки (не плутати з подвійною двокрапкою, яка є операцією, що використовується для визначення області дії), за ним іде ключові слова public / protected / privateі ім'я базового класуBase. Таким чином, ми встановили відношення між класами. Іншими словами, цей рядок говорить нам про те, що Derived є спадкоємцем класу Base.
 
Отже, для початку розглянемо структуру звичайного класу, що представляє студентів коледжу або університету Пропонується така структура.
 
Class student { public: // рік навчання: новачок, другокурсник //молодший, старший, аспірант enum year { fresh, soph, junior, senior, grad }; student {char* nm, int id, double g, year x); //ім’я, номер, середній бал, рік void print() const; protected: int student_id; //номер студента double gpa; //середній бал year у; //рік навчання char name[30]; //ім’я };
 

Отже, ми можемо написати програму, яка допомогла б студентському відділу вести облік студентів. Оскільки інформація, що зберігається в змінних класу student, описує не-аспірантів, в ній відсутні важливі відомості, необхідні для обліку аспірантів. Ці відомості можуть включати інформацію про фінансову підтримку, кафедру, тему дисертації. Отже, успадковування дозволяє нам отримати відповідний клас grad_student з базового класу student.
 

 

Class grad_student: public student { public: // варіант фінансової підтримки: //за викладання, за дослідження, стипендія, інше enum support { ta, rа, fellowship, other }; grad_student(char* nm, int id, double g, year x, support t, char* d, char* th); //t — варіант фінансової підтримки //d — кафедра, th - тема дисертації void print() const; protected: support s; //варіант фінансової підтримки char dept[10]; //кафедра char thesis[80]; // тема дисертації   };
 

В даному прикладі grad_student - похідний клас, а student - базовий.

Використання в заголовку похідного класу ключового слова publi c, наступного за двокрапкою, означає, що захищені і відкриті (protected і public) члени класу student повинні успадковуватися як захищені і відкриті члени grad__student. Закриті члени базового класу недоступні похідному класу. Відкрите спадкоємство означає також, що похідний клас grad_student є підтипом student.

Тобто аспірант є студентом, але студент не обов'язково повинен бути аспірантом.
 

Таке відношення підтипів інтерфейсним спадкоємством.

Похідний клас є модифікацією базового класу; він успадковує захищені і відкриті члени базового класу. Не можуть успадковуватися тільки конструктори, деструктори.


Так, в прикладі з класом grad_student успадковуються наступні члени класу student: student_id, gpa, name, у іметод print ().
 

Часто в похідний клас додаються нові члени на додаток до членів базового класу. Це відбувається і у випадку з grad_student, який містить трьох нових членів даних і перевизначену функцію print(). Визначення функцій

student:: print () і grad_student:: print ()
 

Похідний клас може включати реалізацію функцій-членів, відмінну від базового класу.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)