русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Class employee


Дата добавления: 2015-07-09; просмотров: 1494; Нарушение авторских прав


{

public:

employee(char *, char *, float);

void show_employee(void);

private:

char name[64];

char position[64];

float salary;

};

Здесь обратите внимание на описание классаemployee.

 

Далее предположим, что вашей программе требуется класс manager, который добавляет следующие элементы данных в класс employee:

float annual_bonus;

char company_car[64];

int stock_options;

В данном случае ваша программа может выбрать два варианта: во-первых, программа может создать новый класс manager, который дублирует многие элементы класса employee, или программа может породить класс типа manager из базового класса employee. Порождая класс manager из существующего класса employee, вы снижаете объем требуемого программирования и исключаете дублирование кода внутри вашей программы.

Для определения этого класса вы должны указать ключевое слово class, имя manager, следующее за ним двоеточие и имя employee, как показано ниже:

 

Производный класс //-----> class manager : public employee

{ <-------// Базовый класс

 

// Здесь определяются элементы базового класса

};

 

Ключевое слово public, которое предваряет имя класса employee, указывает, что общие (public) элементы класса employee также являются общими и в классе manager.

Например, следующие операторы порождают класс manager.

class manager : public employee

 

{

public:

manager(char *, char *, char *, float, float, int);

void show_manager(void);

private:

float annual_bonus;

char company_car[64];

int stock_options;

};

 

Когда вы порождаете класс из базового класса, частные элементы базового класса доступны производному классу только через интерфейсные функции базового класса. Таким образом, производный класс не может напрямую обратиться к частным элементам базового класса, используя оператор точку.



Следующая программа MGR_EMP.CPP иллюстрирует использование наследования в C++ , создавая класс manager из базового класса employee:

 

 

#include <iostream.h>

#include <string.h>

class employee

 

{

public:

employee(char *, char *, float);

void show_employee(void);

private:

char name [ 64 ];

char position[64];

float salary;

};

 

employee::employee(char *name, char *position,float salary)

 

{

strcpy(employee::name, name);

strcpy(employee::position, position);

employee::salary = salary;

}

 

void employee::show_employee(void)

 

{

cout << "Имя: " << name << endl;

cout << "Должность: " << position << endl;

cout << "Оклад: $" << salary << endl;

}

// Обратите внимание на запись

class manager : public employee

 

{

public:

manager(char *, char *, char *, float, float, int);

void show_manager(void);

private:

float annual_bonus;

char company_car[64];

int stock_options;

};

 

manager::manager(char *name, char *position, char *company_car, float salary, float bonus, int stock_options) : employee(name, position, salary)

 

{

strcpy(manager::company_car, company_car) ;

manager::annual_bonus = bonus ;

manager::stock_options = stock_options;

}

 

void manager::show_manager(void)

 

{

show_employee();

cout << "Машина фирмы: " << company_car << endl;

cout << "Ежегодная премия: $" << annual_bonus << endl;

cout << "Фондовый опцион: " << stock_options << endl;

}

// Запись главной функции

void main(void)

{

employee worker("Джон Дой", "Программист", 35000);

manager boss("Джейн Дой", "Вице-президент ", "Lexus", 50000.0, 5000, 1000);

worker.show_employee() ;

boss.show_manager();

}

 

Как видите, программа определяет базовый класс employee, а затем определяет производный класс manager. Обратите внимание на конструктор manager. Когда вы порождаете класс из базового класса, конструктор производного класса должен вызвать конструктор базового класса. Чтобы вызвать конструктор базового класса, поместите двоеточие сразу же после конструктора производного класса, а затем укажите имя конструктора базового класса с требуемыми параметрами:

 

manager::manager(char *name, char *position, char *company_car, float salary, float bonus, int stock_options) :

employee(name, position, salary) //————————————— Конструктор базового класса

 

{

strcpy(manager::company_car, company_car);

manager::annual_bonus = bonus;

manager::stock_options = stock_options;

}

Также обратите внимание, что функция show_manager вызывает функцию show_employee, которая является элементом класса employee. Поскольку класс manager является производным класса employee, класс manager может обращаться к общим элементам класса employee, как если бы все эти элементы были определены внутри класса manager.



<== предыдущая лекция | следующая лекция ==>
Наследование и полиморфизм | Представление о наследовании


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.963 сек.