Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_ раб_5(наследование).doc
Скачиваний:
0
Добавлен:
09.08.2019
Размер:
61.95 Кб
Скачать

Лабораторная работа №5

ОПИСАНИЕ И ИСПОЛЬЗОВАНИЕ НАСЛЕДОВАНИЯ.

Цель работы: Изучить принципы описания, возможности и механизм наследования классов.

Требования к выполнению работы:

Для приведенных ниже заданий составить программы на языке С++, в которых производится формирование, обработка и вывод результатов преобразований матриц или массивов. В программе должно быть предусмотрено:

  1. Массивы должны быть объявлены как классы;

  2. Один из массивов объявляется как базовый класс, содержащий данные и функции, позволяющие произвести решение по отношению этого массива;

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

5.1 Теоретические положения

При использовании наследования базовый класс и производный объявляются следующим образом:

Class Nameclass_1

{

переменные_1 – члены ;

функции_1 – члены ;

};

Class Nameclass_2 : Nameclass_1

{

переменные_2 – члены ;

функции_2 – члены ;

замещенные функции_1 – члены ;

};

Для получения доступа к данным или функциям-членам базового класса используют спецификаторы доступа:

Class Nameclass : private Nameclass_1

Class Nameclass_2 : public Nameclass_1

Class Nameclass_2 : protected Nameclass_1

Конструкторы не наследуются и объвляются :

Class Nameclass_2::Class Nameclass_2() : Class Nameclass_1

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

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

//Базовый класс

class Array

{

public:

Array ();

~Array ();

void Printed (void);

void Find_Summa (void);

void Find_Max(void);

void Printed_Summa (void);

void Printed_Max(void);

protected:

float *x; //указатель на массив

int n; //размер массива 

float max,s; //максимальное значение и сумма

};

//==============================

Array::Array () //Конструктор без параметров

{ cout <<"ВВедите длину массива  \n";

cin >> n;

x = new float [n];

for (int i = 0; i < n; i++)

x[i] = random (21)-10;

cout <<"работал конструктор 1"<<endl;

}

//==============================

Array::~Array ()//Деструктор

{

cout<<"работал деструктор 1\n";

delete [] x;

}

//==============================

void Array::Printed (void)

{

for (int i = 0; i < n; i++)

cout <<x[i]<<" ";

cout <<endl;

}

//==============================

void Array::Find_Max(void)

{ max=-1000;

for (int i=0; i<n; i++)

{

if (x[i]>max)

{

max=x[i];

}

}

}

//==============================

void Array::Find_Summa(void)

{

s=0;

for (int i=0; i<n; i++)

s=s+x[i];

}

//==============================

void Array::Printed_Max (void)

{

cout << "max=" << max <<endl;

}

//==============================

void Array::Printed_Summa (void)

{

cout <<"summa="<<s<<endl;

}

//==============================

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]