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

Иерархия классов

Читайте также:
  1. Ассоциации классов
  2. Бесклассовый общественный строй с единой общенародной собственностью на средства производства, полным социальным равенством всех членов.
  3. Бесклассовый общественный строй с единой общенародной собственностью на средства производства, полным социальным равенством всех членов.
  4. БЛЕСК И НИЩЕТА КЛАССОВОГО ПОДХОДА
  5. Взаимоотношение классов и задачи с.-д. на новом этапе революции
  6. Вопрос 24. Методологическое значение концепций классического марксизма для современной ФП (классовая структура общества и свобода человека).
  7. Вычитание классов
  8. Глава III. Психологическая иерархия рас
  9. Государственно-правовое регулирование классово-политической борьбы
  10. Для средних классов
  11. Иерархия (соподчиненность) и взаимодействие желез внутренней секреции
  12. Иерархия в организации и ее звенность

На основе принципа наследования может быть построена иерархия классов.

Рассмотрим пример базы данных служащих некоторой компании. В ней существует три категории служащих: менеджеры, занимающиеся продажами, ученые, занимающиеся исследованиями и рабочие, занятые изготовлением товаров.

Иерархия будет состоять из базового типа: 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();


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |

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



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