Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций по курсу 'Информатика'.doc
Скачиваний:
7
Добавлен:
14.07.2019
Размер:
483.84 Кб
Скачать

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

Цель объектно-ориентированного программирования состоит в повторном использовании созданных классов. Это экономит время и силы.

Мы создали класс отрезок, совершенно логичным кажется то, что класс многоугольник является производным классом от базового класса отрезок. Он наследует многие его методы.

Наследование – возможность на основании существующих типов порождать новые.

Наследование используется, если два типа данных имеют что-то общее, тогда это общее следует организовать в виде отдельного базового типа, называемого предок, и далее использовать механизм наследования для получения нового класса – потомка. Потомок будет иметь свои дополнительные свойства, но и будет наследовать свойства базового типа.

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

Рассмотрим пример наследования на классах отрезок и многоугольник. Базовый класс отрезок ничем не будет отличаться от созданного нами ранее за исключением определения его объектов как protected. Создадим новый класс.

class cline {

protected : int x1, y1, x2, y2 ;

public : …

}

class cmanyline: public: cline // класс многоугольник

{

private : int n ; // объекты

int x[10][2] ;

// методы

public : cmanyline ( int r, int y[][2]) // конструктор многоугольника

{ n=k ;

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

for ( int j=0 ; j<2 ; j++)

x[i][j] = y[i][j] ;

for ( int d=0 ; d<n-1 ; d++)

cline ( x[d][0], x[d][1], x[d+1][0], x[d+1][1]) ; // использует конструктор

// отрезка (базового класса)

cline ( x[n-1][0], x[n-1][1], x[0][0], x[0][1]) ;

}

void drow () { …} // функция рисования многоугольника, можно создать используя

… // аналогичную функцию отрезка. Для многоугольника можно

// создать новую функцию – раскраска.

}

Создание более сложной иерархии классов осуществляется так. Возьмем в качестве базовых классов классы отрезок и круг и построим класс наследник – фигура. Можно использовать и дружественные функции. Т.о. может выстроится сложная система переплетенных классов.

Объекто-ориентированное программирование.

Три ключевых принципа определяют объектно-ориентированное программирование:

- инкапсуляция данных;

- наследование данных;

- полиморфизм.

Инкапсуляция – сокрытие данных. Пользователю абстрактного типа данных ( нового класса) не нужно знать, что находится внутри него. Ему достаточно знать какие действия можно выполнять.

Наследование – возможность на основании существующих типов порождать новые.

Полиморфизм – способность объекта изменять форму во время выполнения программы. Для создания полиморфного объекта программа должна использовать указатель на него.

Но это уже предмет другого разговора!