Программирование >>  Программирование на языке c++ 

1 ... 6 7 8 [ 9 ] 10 11 12 ... 159


производный

базовый базовый 4/ >а


Производный

Самый общий

---класс

базовый класс

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

производный

производный

базовый

базовый

Множественное / наследование;

производный

производный

производный

>

Простое (не множественное) наследование Множественное наследование Рис.13. Пример иерархической структуры

ЭТОЙ библиотеки и можем расширять эту подструктуру, используя принципы наследования. Окончательно полученная подструктура (подграф) и является иерархией классов для нашей программы.

Дадим теперь определение объектно-ориентированному языку программирования. Язык является объектно-ориентированным, если: -♦ он поддерживает абстрактные типы данных, которыми являются объекты с определенными интерфейсами (средствами взаимодействия с внешней средой) и скрытым внутренним состоянием;

объекты имеют связанные с ними типы (т. е. классы); поддерживаются механизмы наследования классов. Язык не является объектно-ориентированным, если он не поддерживает наследование и полиморфизм.

При разработке объектно-ориентированной программы различают этапы анализа и проектирования [2].



Объектно-ориентированный анализ - это метод проверки требований, предъявляемых к программе с позиций классов и объектов [2, с. 39].

Объектно-ориентированное проектирование - это метод, основанный на объектно-ориентированной декомпозиции, отражающей различные уровни (модели) представления программы [2, с. 39]. Такими уровнями (моделями) являются: логический (структуры классов и объектов); физический, выражающий архитектуры модулей и процессов; статический; динамический.

Рассмотрение вопросов объектно-ориентированного анализа и проектирования выходит за рамки данной книги. Детальное описание этих этапов с практическими примерами приведено в работе [2].

1.6. Базовые конструкции

объектно-ориентированных программ

Базовыми строительными блоками объектно-ориентированной программы являются объекты и классы. Класс описывает множество объектов, для каждого из которых можно рассмотреть интерфейс и реализацию. Интерфейс определяет средства взаимодействия объекта с внешней средой.

На рис. 1.4 показаны взаимоотношения между объектами и классом. Когда мы объявляем класс, например,

class my ciass { ..................... };

мы вводим новый АТД. Когда мы описываем объекты, например:

my class оЫ,...,оЬп;

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



значить адрес ее начала соответствующему указателю (см. объект п на рис. 1.4). Значения некоторых компонентов-данных объекта могут остаться неопределенными (см. объ-ект п на рис. 1.4).

Следует различать объявление класса (class declaration) и описание объектов класса (object definition). При объявлении класса мы описываем его компоненты-данные и объявляем и описываем его компоненты-функции.

Объявление компонента-функции содержит описание имени функции, типов ее параметров и типа возвращаемого значения. Описание функции задает имена параметров и тело

Объект 1

ФУНКЦИИ

ДАННЫЕ


Описание у-

ФУНКЦИИ

ДАННЫЕ

Объект п

адрес

Рис. !. 4. Взаимоотношения между объектами и классами



1 ... 6 7 8 [ 9 ] 10 11 12 ... 159

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.002
При копировании материалов приветствуются ссылки.
Яндекс.Метрика