Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 часть прикладное до 17 урока.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
115.13 Кб
Скачать

Чистые виртуальные функции.

C++ поддерживает создание абстрактных типов данных с чистыми виртуальными функциями. Чистыми виртуальными функциями называются такие, которые инициализируются нулевым значением, например:

virtual void draw()=0;

Класс, содержащий чистые виртуальные функции, является АТД. Невозможно создать объект для класса, который является АТД. Попытка создания объекта для такого класса вызовет сообщение об ошибке во время компиляции. Помещение в класс чистой виртуальной функции будет означать следующее:

- невозможность создания объекта этого класса;

- необходимость замещения чистой виртуальной функции в производном классе.

Любой класс, произведенный от АТД, унаследует от него чистую виртуальную функцию, которую необходимо будет заместить, чтобы получить возможность создавать объекты этого класса.

Чтобы объявить класс как абстрактный тип данных, достаточно добавить в него одну или несколько чистых виртуальных функций. Для этого после объявления функции необходимо добавить =0, например:

Class share

{

Virtual void draw()=0; // чистая виртуальная функция

}

Выполнение чистых виртуальных функций

Обычно чистые виртуальные функции объявляются в абстрактном базовом классе и не выполняются. Поскольку невозможно создать объект абстрактного базового класса, как правило, нет необходимости и в выполнении чистой виртуальной функции. Класс АТД существует только как объявление интерфейса объектов, создаваемых в производных классах.

         Тем не менее все же иногда возникает необходимость выполнения чистой виртуальной функции. Она может быть вызвана из объекта, произведенного от АТД, например чтобы обеспечить общую функциональность для всех замещенных функций.

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

Подводя итог, перечислим каким целям должен служить абстрактный тип:

  [1] определять некоторое понятие таким образом, что в программе могут сосуществовать для него несколько реализаций;

  [2] применяя виртуальные функции, обеспечивать достаточно высокую степень компактности и эффективности выполнения программы;

  [3] сводить к минимуму зависимость любой реализации от других классов;

  [4] представлять само по себе осмысленное понятие.

Урок 12.Диаграмма объекта.

Диаграммы классов и объектов — самые распространенные диаграммы, используемые в моделировании объектно-ориентированных систем. Диаграммы классов используются для представления классов любого типа, в том числе шаблонных и интерфейсных классов. Эти диаграммы могут содержать члены класса (атрибуты и операции). В диаграммах классов и объектов отображаются типы данных, значения переменных и типы значений, возвращаемых функциями. В диаграммах объектов можно отобразить имя объекта. В диаграммах обоих типов можно указать количество классов или объектов, используемых в системе, а также отношения между классами и объектами.

Одним из самых важных понятий объектно-ориентированного программирования является понятие объекта (object). Объект есть экземпляр класса. Объект обладает набором состояний, в которых он может находиться и строго определенным поведением, структура и поведение схожих объектов определяется в их общем классе.

Объекты могут исполнять определенные роли. Роль определяет отношение между классом и его экземплярами, выделяя определенное их подмножество. Считается, что все эти объекты похожи по своему поведению и состояниям, которые они могут принимать.

На диаграмме объект представляется как прямоугольник с двумя секциями Верхняя секция содержит в себе имя объекта и его класса, подчеркнутое сплошной линией и имеющего синтаксис:

<имя объекта>:<имя класса>

Имя класса, при необходимости, может содержать в себе полный путь к данному классу. Имена пакетов должны следовать перед именем класса и разделяются парами двоеточий. Например:

display_window : WindowingSystem : : GraphicWindows : : Window

Имя объекта может быть опущено. В этом случае в первой секции пишется двоеточие и имя класса. Имя класса данного объекта также может быть опущено (вместе с двоеточием).

Вторая секция содержит в себе список имен атрибутов с их типами и значениями. Каждая строка из списка имеет синтаксис:

<имя атрибута>:<тип>=<значение>

Указание типа атрибута и его значение является необязательным. Некоторые из атрибутов, не представляющие интереса, также могут быть опущены.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]