|
Программирование >> Программирование на языке c++
производный базовый базовый 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. Взаимоотношения между объектами и классами
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |