- •1. Абстрактные типы данных
- •Пример 1
- •1.4. Разработка объектов
- •1.4.1. Объекты и композиция
- •Пример 3
- •1.4.3. Объекты и наследование
- •1.4.4. Наследование в программировании
- •1.4.5. Упорядоченные списки и наследование
- •1.4.6. Повторное использование кода
- •1.4.7. Спецификации класса SeqList и OrderedList
- •1.5. Приложения с наследованием классов
- •1.6. Разработка объектно-ориентированных программ
- •1.6.1. Анализ задачи/определение программы
- •1.6.2. Разработка
- •1.6.3. Кодирование
- •1.6.4. Тестирование
- •1.6.5. Иллюстрация программной разработки: Dice график
- •Замечание
- •Программа 2. Диаграмма бросания костей
- •1.7. Тестирование и сопровождение программы
- •1.7.1. Объектное тестирование
- •1.7.2. Тестирование управляющего модуля
- •1.7.3. Программное сопровождение и документирование
- •1.9. Абстрактные базовые классы и полиморфизм
- •1.9.1. Полиморфизм и динамическое связывание
- •2.1. Пользовательский тип — класс
- •2.1.1. Объявление класса
- •Пример 1.
- •2.1.2. Конструктор
- •2.1.3. Объявление объекта
- •2.1.4. Реализация класса
- •2.1.5. Реализация конструктора
- •2.1.6. Создание объектов
- •Пример 2.
- •2.2. Примеры классов
- •2.2.1. Класс Temperature
- •2.2.2. Реализация класса Temperature
- •2.2.3. Класс случайных чисел
- •Пример 3.
- •2.2.4. Реализация класса RandomNumber
- •2.3. Объекты и передача информации
- •2.3.1. Объект как возвращаемое значение
- •2.3.2. Объект как параметр функции
- •2.4. Массивы объектов
- •2.4.1. Конструктор умолчания
- •2.5. Множественные конструкторы
- •2.5.1. Реализация класса Date
- •2.6. Практическое применение: Треугольные матрицы
- •2.6.1. Свойства верхней треугольной матрицы
- •2.6.2. Хранение треугольной матрицы
- •Пример 4.
- •Пример 5.
- •2.6.3. Класс TriMat
- •2.6.5. Реализация класса TriMat
Пример 3
Определите геометрический объект, задавая фигуру, за которой следуют имя объекта и параметры для указания объекта.
Point Р (1,3 ); // объявляет объект point (1,3)
Point pl(4,2), р2(5,1);
Line 1(р1,р2); // линия: от (4,2) до (5,1)
Point pl(4,3), р2(6,4);
Rectangle r(pl,p2); // прямоугольник: от (4,3) до р2(6,4)
Метод 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). Используя аналогию семейного наследования, мы говорим о базовом и производном классах как о родительском классе и класее-наследнике, соответственно. В случае расширенной цепочки наследник наследует характерные черты своего родительского и прародительского класса.