|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Иерархия классовНа основе принципа наследования может быть построена иерархия классов. Рассмотрим пример базы данных служащих некоторой компании. В ней существует три категории служащих: менеджеры, занимающиеся продажами, ученые, занимающиеся исследованиями и рабочие, занятые изготовлением товаров. Иерархия будет состоять из базового типа: employee и трех производных классов: manager, scientist и laborer. #include <iostream> using namespace std; const int len=80; class employee { private: int nom; char name[len]; public: void getdata() { cout<<"vvod N: "; cin>>nom; cout<<"vvod FIO: "; cin>>name; } void putdata() {cout<<" N: " <<nom; cout<<"\n FIO: "<<name; } }; class manager:public employee { private: char title[len]; int kol; public: void getdata() { employee::getdata(); cout<<"vvod dolgnosty: "; cin>>title; cout<<"vvod kolvo: "; cin>>kol; } void putdata() { employee::putdata(); cout<<"\n dolgnosty: "<<title; cout<<"\n kol-vo prodag: " <<kol; } }; class scientist:public employee { private: int pubs; public: void getdata() { employee::getdata(); cout<<"vvod kolva pubs: "; cin>>pubs; } void putdata() { employee::putdata(); cout<<"\n publication: "<<pubs; } }; class laborer:public employee { }; int main(int argc, char *argv[]) { employee x; manager y; scientist z; laborer w; cout<<"vvod svedenij o 4 sotrudnikax:\n"; x.getdata(); y.getdata(); z.getdata(); w.getdata(); cout<<"vivod information about sotrudnikax:\n"; x.putdata(); y.putdata(); z.putdata(); w.putdata(); return 0; } Производный класс может являться базовым для других производных классов. Например: class A { … }; class B: public A { …}; class C:public B {…}; Здесь класс B является производным класса А, а класс С производным класса B. Класс может являться производным как одного базового класса, так и нескольких базовых классов (множественное наследование). Например: class A { … }; class B { …}; class C: public A, public B {…}; Базовые классы перечисляются через запятую после знака: Работа с объектами чаще всего производится через указатели, например: employee *р; Указателю на базовый класс можно присвоить значение адреса объекта любого производного класса: р = new laborer; или p=&y; Где y описана, как: manager y; Обращение к методу через указатель имеет вид: p->getdata(); P->putdata(); Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |