Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Абстрактные классы.rtf
Скачиваний:
6
Добавлен:
10.07.2019
Размер:
2.25 Mб
Скачать

Пример 3

Определите геометрический объект, задавая фигуру, за которой следуют имя объекта и параметры для указания объекта.

  1. Point Р (1,3 ); // объявляет объект point (1,3)

  2. Point pl(4,2), р2(5,1);

Line 1(р1,р2); // линия: от (4,2) до (5,1)

  1. Point pl(4,3), р2(6,4);

Rectangle r(pl,p2); // прямоугольник: от (4,3) до р2(6,4)

  1. Метод Draw в каждом классе делает наброски рисунка на поверхности рисования.

р.Draw(); l.Draw(); г.Draw();

1.4.2. C++ геометрические классы

Далее следуют объявления C++ для классов Point и Line. Заметьте, что конструктору для класса Line передаются координаты двух точек, определяющих линию. Каждый класс имеет функцию-член Draw, отображающую рисунок в области рисования.

Спецификация класса Point

ОБЪЯВЛЕНИЕ

class Point

private:

float x, у; public: // горизонтальная и вертикальная позиция

Point (float h, float v) ;

float GetX(void) const; // возвратить координату х

float GetY(void) const; // возвратить координату у

void Draw(void) const; // нарисовать точку (х,у)

Класс посредством композиции Line включает два объекта Point. Эти объекты инициализируются конструктором.

Спецификация класса Line

ОБЪЯВЛЕНИЕ

class Line

{

private:

Point PI, P2; // две конечные точки отрезка

public:

Line (Point a, Point b);// инициализировать P1 и Р2

void Draw(void) const; // нарисовать отрезок

};

1.4.3. Объекты и наследование

Наследование – это интуитивное понятие, из которого мы можем извлекать примеры, основанные на каждодневном опыте. Все из нас наследуют характерные черты от своих родителей такие, как раса, цвет глаз и тип крови. Мы можем думать о родителе как о базе, из которой мы наследуем характерные черты. Взаимосвязь иллюстрируется двумя объектами, связанными стрелкой, острие которой направлено к базовому объекту.

Зоология формально изучает наследование у животных. На рис. 1.2 показана иерархия животных для млекопитающих, собак и колли. Млекопитающее – это теплокровное животное, которое имеет шерсть и вскармливает своих детенышей молоком. Собака – это млекопитающие, которое имеет клыки, ест мясо, имеет определенное строение скелета и является общественным животным. Колли – это собака с заостренной мордой, имеющая белый с рыжим окрас и хорошо развитые пастушеские инстинкты.

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

Колли есть собака. Собака есть млекопитающее

Млекопитающее

Теплокровное животное, имеет шерсть, вскармливает детенышей молоком

Собака

Имеет клыки, ест мясо, имеет определенное строение скелета, является общественным животным

Колли

Имеет заостренную морду, белый с рыжим окрас, хорошо развитые пастушеские инстинкты

Рис. 1.2. Цепочка наследования у животных

В этой цепочке класс млекопитающих определяется в качестве базового класса (base class) для собаки, а собака называется производным классом (derived class). Используя аналогию семейного наследования, мы говорим о базовом и производном классах как о родительском классе и класее-наследнике, соответственно. В случае расширенной цепочки наследник наследует характерные черты своего родительского и прародительского класса.