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();

}

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

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

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


 

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

37947. Определение коэффициента Пуассона воздуха методом адиабати 445 KB
  1 Определение коэффициента Пуассона воздуха методом адиабатического расширения: Методические указания к лабораторной работе № 16 по курсу общей физики Уфимск. В работе определяется коэффициент Пуассона воздуха методом адиабатического расширения основанным на измерении давления газа в сосуде после последовательно происходящих процессов его адиабатического расширения и изохорного нагревания.8] Список литературы ЛАБОРАТОРНАЯ РАБОТА № 16 ОПРЕДЕЛЕНИЕ КОЭФФИЦИЕНТА ПУАССОНА ВОЗДУХА МЕТОДОМ АДИАБАТИЧЕСКОГО РАСШИРЕНИЯ 1. Цель работы Определение...
37948. ЭКСПЕРИМЕНТАЛЬНАЯ ПРОВЕРКА УРАВНЕНИЯ СОСТОЯНИЯ И ЗАКОНОВ ИДЕАЛЬНОГО ГАЗА 146.5 KB
  1 Экспериментальная проверка уравнения состояния и законов идеального газа: Методические указания к лабораторной работе № 17 по курсу общей физики Уфимск. В работе изучается взаимосвязь параметров задающих состояние идеального газа и закономерности их изменения. Контрольные вопросы [7] Список литературы ЛАБОРАТОРНАЯ РАБОТА № 17 ЭКСПЕРИМЕНТАЛЬНАЯ ПРОВЕРКА УРАВНЕНИЯ СОСТОЯНИЯ И ЗАКОНОВ ИДЕАЛЬНОГО ГАЗА 1.
37949. Определение коэффициента Пуассона воздуха акустическим методом 128 KB
  Обратимся к молярным теплоемкостям идеального газа при постоянном объеме и при постоянном давлении. Внутренняя энергия идеального газа это энергия теплового движения молекул и атомов в молекулах. Следовательно средняя энергия теплового движения молекулы идеального газа равна 2. Внутренняя энергия  молей газа равна 2.
37950. Определение коэффициента вязкости воздуха и кинематических характеристик теплового движения его молекул 888 KB
  1 Определение коэффициента вязкости воздуха и кинематических характеристик теплового движения его молекул: Методические указания к лабораторной работе №23 по курсу общей физики Уфимск. В работе на основе исследования одного из явления переноса внутреннего трения определяютcя коэффициент вязкости воздуха а также средняя длина свободного пробега и эффективный диаметр его молекул. Осипов ЛАБОРАТОРНАЯ РАБОТА № 23 ОПРЕДЕЛЕНИЕ КОЭФФИЦИЕНТА ВЯЗКОСТИ ВОЗДУХА И КИНЕМАТИЧЕСКИХ ХАРАКТЕРИСТИК ТЕПЛОВОГО ДВИЖЕНИЯ ЕГО МОЛЕКУЛ 1.2 Определение средней длины...
37951. ИЗУЧЕНИЕ ГАЗОВЫХ ЗАКОНОВ И ОПРЕДЕЛЕНИЕ КОЭФФИЦИЕНТА ПУАССОНА ГАЗА МЕТОДОМ КЛЕМАНА – ДЕЗОРМА 157.5 KB
  Теплоемкость и коэффициент Пуассона газа.14 лабораторная работа № 24 ИЗУЧЕНИЕ ГАЗОВЫХ ЗАКОНОВ И ОПРЕДЕЛЕНИЕ КОЭФФИЦИЕНТА ПУАССОНА ГАЗА МЕТОДОМ КЛЕМАНА ДЕЗОРМА Цель работы Изучение различных процессов изменения состояния газа и определение коэффициента Пуассона воздуха. Теплоемкость и коэффициент Пуассона газа Удельной теплоемкостью вещества называется величина равная количеству теплоты которую надо передать единице массы этого вещества для увеличения его температуры на 1К а молярной теплоемкостью количество теплоты которое...
37952. ОПРЕДЕЛЕНИЕ КОЭФФИЦИЕНТОВ ТЕПЛОПРОВОДНОСТИ МЕТАЛЛОВ 2.23 MB
  13 ЛАБОРАТОРНАЯ РАБОТА № 25 ОПРЕДЕЛЕНИЕ КОЭФФИЦИЕНТОВ ТЕПЛОПРОВОДНОСТИ МЕТАЛЛОВ Цель работы Изучение явления теплопроводности и определение коэффициентов теплопроводности чистых металлов и сплавов. Если в неравномерно нагретых жидкостях и газах тепловая энергия передается преимущественно за счет конвекции при которой происходит перемещение вещества между областями с различной температурой то в твердых телах тепло переносится только за счет теплопроводности. Распространение тепловой энергии путем теплопроводности обусловлено хаотическим...
37953. ИЗУЧЕНИЕ ВЗИМОСВЯЗИ ПАРМЕТРОВ СОСТОЯНИЯ ИДЕАЛЬНОГО ГАЗА И ГАЗОВЫХ ЗАКОНОВ 150.5 KB
  Экспериментальная проверка уравнения состояния идеального газа.13 лабораторная работа № 29 ИЗУЧЕНИЕ ВЗИМОСВЯЗИ ПАРМЕТРОВ СОСТОЯНИЯ ИДЕАЛЬНОГО ГАЗА И ГАЗОВЫХ ЗАКОНОВ Цель работы 1. Изучение взаимосвязи макропараметров определяющих состояние идеального газа. Экспериментальная проверка уравнения состояния идеального газа.
37954. Исследование электростатического поля и изображение его при помощи силовых линий и поверхностей равного потенциала 867.5 KB
  Исследование электростатического поля Цель работы Экспериментальное исследование электростатического поля и изображение его при помощи силовых линий и поверхностей равного потенциала. Напряженностью электрического поля называют силу действующую на единичный положительный пробный заряд. Если электрическое поле создается системой зарядов то напряженность поля в данной точке определяется по принципу суперпозиции...
37955. ИЗУЧЕНИЕ ЗАКОНОВ ПОСТОЯННОГО ТОКА 1.19 MB
  Электрическим током называют упорядоченное движение зарядов. Эти заряды называют носителями тока. Линия тока есть математическая линия, направление касательной которой в каждой точке совпадает с направлением скорости носителей тока. За положительное направление тока принято считать направление скорости положительно заряженных частиц.