4967

Наследование как основа создания иерархии классов

Лекция

Информатика, кибернетика и программирование

Наследование как основа создания иерархии классов Наследование Наследование – создание новых классов на основе ранее созданных классов. Класс, на основании которого формируется новый класс, называют базовым (родительским) классом. Новый класс...

Русский

2012-11-30

22.18 KB

6 чел.

Наследование как основа создания иерархии классов

Наследование

Наследование – создание новых классов на основе ранее созданных классов.

Класс, на основании которого формируется новый класс, называют базовым (родительским) классом.

Новый класс, созданный на основе ранее созданного базового класса, называют производным классом.

Производный класс формируется путем добавления к элементам данных и функциям базового класса новых элементов данных и функций.

Главное достоинство наследования – отсутствие необходимости многократно переписывать функции, являющихся общими для многих классов.

Виды наследования

Различают два вида наследования:

От частного к общему. Такой вид наследования предполагает создание одного класса на базе нескольких.

От общего к частному. Такой вид наследования предполагает создание нескольких классов на базе одного.

Наиболее распространенным является способ наследования от общего к частному.

Наследование от общего к частному

При наследовании от общего к частному сначала разрабатывают базовый класс, который описывает объекты с наиболее общими свойствами. Затем на основе базового класса разрабатывают производные классы. Таким образом создается древовидная иерархия классов.

Например, за наиболее общий базовый класс можно принять класс Человек. От него могут быть образованы производные классы Работник, Студент. От класса Работник могут быть образованы классы Начальник отдела, Инженер.

Защищенный доступ к элементам данных базового класса

При организации новых классов путем наследования возникает необходимость доступа к элементам данных базового класса из функций производного класса. Если элементы данных базового класса имеют закрытый доступ, то доступ к ним из производного класса производного класса невозможен. Чтобы функции производного класса могли работать с элементами данных базового класса, элементы данных базового класса должны иметь защищенный вид доступа protected:. Функции, не имеющие отношения к производным классам, доступа к защищенным элементам данных базового класса не имеют.

Описание производного класса на языке С++

class имя_прозводного_класса : public имя базового класса

{

}

Служебная метка public перед именем базового класса означает, что в производном классе доступ к элементам базового класса остается без изменений.

Пример описания производного класса на С++

Настоящий пример содержит описание производного класса Sotrudnik на основании ранее созданного базового класса Person. В начало файла включена директива включения заголовочного файла базового класса person.h, чтобы элементы данных и функции базового класса были видны внутри производного класса. Таким образом, элементы данных и функции производного класса добавляются к элементам данных базового класса.

#pragma once

#include "person.h"

class Sotrudnik :

 public Person

{

public:

Sotrudnik(void);

~Sotrudnik(void);

private:

 // Зарплата

 float Zplata;

public:

 // Конструктор с параметрами

 Sotrudnik(char* Fio1, int Age1, float Zplata1);

 // конструктор копирования

Sotrudnik(Sotrudnik& S1);

 // Функция печати на экране

 void Print(void);

 // Ввод с клавиатуры

 void Input(void);

 // Измерение зарплаты

 void SetZplata(float Zplata1);

 // Извлечение значения элемента данных зарплата

 float GetZplata(void);

 // Измерение всех элементов данных

 void SetAll(char* Fio1, int Age1, float Zplata1);

};

#include "StdAfx.h"

#include ".\sotrudnik.h"

Sotrudnik::Sotrudnik(void)

: Zplata(0)

{

}

Sotrudnik::~Sotrudnik(void)

{

}

// Конструктор с параметрами

Sotrudnik::Sotrudnik(char* Fio1, int Age1, float Zplata1)

{

Zplata=Zplata1;

Person::SetAll(Fio1,Age1);

}

// конструктор копирования

Sotrudnik::Sotrudnik(Sotrudnik& S1)

{

Zplata=S1.Zplata;

Person::SetAll(S1.Fio,S1.Age);

}

// Функция печати на экране

void Sotrudnik::Print(void)

{

 //Person::Print();

 //printf("Zarplata %.2f\n",Zplata);

printf("Fio=%s Age=%d Zarplata %.2f\n",Fio,Age,Zplata);

}

// Ввод с клавиатуры

void Sotrudnik::Input(void)

{

Person::Input();

printf("Vvedite Zplata");

scanf("%f",&Zplata);

}

// Измерение зарплаты

void Sotrudnik::SetZplata(float Zplata1)

{

Zplata1=Zplata;

}

// Извлечение значения элемента данных зарплата

float Sotrudnik::GetZplata(void)

{

 return Zplata;

}

// Измерение всех элементов данных

void Sotrudnik::SetAll(char* Fio1, int Age1, float Zplata1)

{

Zplata1=Zplata;

Person::SetAll(Fio1, Age1);

}

#include "stdafx.h"

#include ".\person.h"

#include ".\sotrudnik.h"

main()

{

Person P1("Minin",23);

 

Sotrudnik S1;

Sotrudnik S2("Ivanov",25,100.7);

Sotrudnik S3(S2);

 

S1.Input();

S1.Print();

S2.Print();

S3.Print();

S2.SetAll("Sidorov",40,200.50);

S2.Print();

 P1.Print();

}

Рассмотренный пример показывает следующие особенности создания классов путем наследования.

Конструктор с параметрами имеет в входные параметры как для заполнения элементов данных, определенных в производном классе, так и в базовом. Для заполнения элементов данных, определенных в базовом классе, вызываются готовые функции базового класса.

В остальных функциях также действия над элементами данных базового класса осуществляются с помощью функции базового класса.


 

А также другие работы, которые могут Вас заинтересовать

29593. Понятие индекса в медиапланировании. Расчет индекса 12.65 KB
  Понятие индекса в медиапланировании. Расчет индекса. экономический словарь ИНДЕКС от лат. Индекс исчисляется по отношению к базовому индексу базовой величине соответствующей определенному году принятому в качестве точки отсчета.
29594. Критерии характеристики медианосителя 19.63 KB
  Селективность аудитории избирательность ЦА udience selectivity свойство медианосителя доводить информацию до определенного сегмента потребителей при минимальном охвате незаданного сегмента потребителейт. Потенциал охвата rech potentil способность медианосителя собрать аккумулировать максимальное количество людей в качестве своей аудитории. Скорость аккумулирования аудитории speed of udience ccumultion показатель количества выходов или количества времени необходимых медианосителю для того чтобы охватить всю свою...
29595. Медиапланирование 12.03 KB
  Медианоситель конкретный представитель медиаканала где размещается рекламное сообщение. Медианоситель отбирается по качественным и количественным показателям. Медиамикс размещение рекламных материалов сразу в нескольких СМИ и как правило под типовым набором смеси из СМИ медиамикс понимается комбинация ТВ Радио Пресса Наружка. Долю охваченной и неохваченной аудитории при медиамиксе вычисляем формулам теории вероятности: 1Pb = 1P 1Pb где Pb охваченная медиамиксом аудитория P аудитория охваченная первым медиа Pb...
29596. Технологии нейро-лингвистического программирования (НЛП) 20.25 KB
  Технологии нейролингвистического программирования НЛП Изначально задумывалась как технология совершенствования личности. 5 моделей жизненных стратегий: иметь действовать знать относится к какомуто классу обществу принадлежать к быть кемто Техники НЛП: Мозг лучше справляется с позитивными целями негативные: не упади не пролей не проходите мимо Ярка творческая визуализации поставленной цели визуально запах звук Принцип уподобления приобщиться к карте реальности достичь целей как какойто человек которым...
29597. Психология памяти в медиапланировании. Исследования памяти в рекламе 15.49 KB
  При поступлении новых элементовстарые вытесняются последниезапоминаютсяэффект давности Во и Норман: Первичная система кратковременного хранения обладающая ограниченным объемом где инфо теряется за счет вытеснения старых элементов. Виды хранения: Акустическая Сенсорноеосуществление на этапе без участия сознания фотографичинфо сохраняется с фотографической точностью и не поддается контролю со стороны субъекта. 2 Для долговремен памяти характерно обращение к прошлому опыту поиска там инфо необходимой для понимания настоящего....
29598. Возникновение коммуникации. Социально-экономические факторы развития коммуникации 14.74 KB
  Возникновение коммуникации. Социальноэкономические факторы развития коммуникации. Выделяют два подхода к коммуникации: механистический однонаправленный процесс кодирования и передачи информации от источника и приема информации и получателем сообщения и деятельностныйсовместная деятельность участников коммуникации в ходе которой вырабатывается общий взгляд на вещи и действия с ними. Целями коммуникации являются: обмен и передача информации; формирование умений и навыков развитие профессиональных качеств; формирование отношения к себе к...
29599. Схема и сущность коммуникативного процесса. Виды шумов в коммуникации 44.59 KB
  Схемы Большое распространение получила линейная модель коммуникации разработанная Лассуэлом и включающая 5 элементов: Кто передает сообщение коммуникатор Что передается сообщение Как осуществляется передача канал Кому направлено сообщение аудитория С каким эффектом эффективность Р. К функциональным элементам относятся: источник информации продуцирующий сообщение; отправитель кодирующий сообщение в сигналы; канал проводящий это сообщение; получатель; цель или место назначения. Преимущество данной схемы состоит в...
29600. Виды и уровни коммуникации. Особенности массовой коммуникации 17.78 KB
  декодирование кодированиеобратная связь и тп особенности публичный характер открытость ограниченный и контролируемый доступ к средствам передачи опосредованность контактов множество реципиентов влияние институциональных предписаний особенности смк рассредоточение в пространстве многоконачльность СМК делятся на СМИ слухи и наружную рекламу 1. Слухи оказывают большое влияние на формирование общественного мнения благодаря обсуждению в малых приватных группах без освещения в СМИ. СМИ являются основным видом массовых...
29601. Массовая коммуникация в современном обществе: функциональный подход 15.29 KB
  Если это осуществляется в деятельности СМИ то таким образом ими реализуется важнейшая социальная функция интеграционная.фии МК: 1 обозрение окружающего мира: медиа расширяют горизонты познания индивида информационная функция; 2 корреляция с социальной структурой и ответственностью общества воздействие на него и его познание через обратную связь корреляционная функция проявляющаяся также в объяснении и интерпретации информационных сообщений в обеспечении поддержки существующим властям и господствующим нормам; 3 трансмиссия...