- •2 Выделение объектов проблемной области: объектно-ориентированная модель задачи, информационная и математическая модели объектов Пример. Представление доски в аудитории в виде объекта
- •Выводы:
- •3 Концептуальная модель класса объектов
- •4 Инкапсуляция атрибутов и методов в классе объектов Понятие инкапсуляции
- •Инкапсуляция в концептуальной модели ооп
- •Реализация членов-функций
- •Указатель this: назначение и использование
- •Проблема защиты членов-данных класса
- •Защита на уровне уровня доступа
- •Защита на уровне значений
- •10 Защита членов-данных, заданных указателями и ссылками
- •11 Защита членов-данных объекта, передаваемого в качестве параметра функции или возвращаемого функцией
- •Реализация и семантика (смысл) чдодвоКов
- •2.11.2 Инициализация чдодвоКов
- •14 ??? Использование членов класса, общих для всех объектов класса, для учета и идентификации объектов класса.
- •15 ??? Использование членов класса, общих для всех объектов класса, для обеспечения тестирования и отладки оо программ
- •2.12.1 Свойства ctorов, предназначенные для реализации модели ооп
- •Автоматический вызов ctorа
- •18 ??? Создание объектов прямым заданием значений членов-данных
- •19 ??? Создание объектов копированием и преобразованием
- •20 ??? Создание объектов класса, использующего объекты других классов в качестве членов-данных
- •22 Проектирование класса по контракту
- •23 Отношение наследования в концептуальной модели ооп.
- •25 Управление доступом в производном классе к членам базового класса
- •27,28 Создание объектов производного класса и задание их начальных состояний
- •29 Назначение виртуальных функций
- •Назначение вф
- •30 Задание виртуальных функций
- •31 Вызов виртуальных функций.
- •32 Виртуальные деструкторы
- •33 Организация вычислений в концептуальной модели ооп
- •Преимущества и недостатки множественного наследования
- •38 Понятие "полиморфизм" в модели ооп. Виды полиморфизма
- •Виды полиморфизма
1 Основные идеи ООП. Концептуальная модель объекта
Основные идеи ООП
-
Основными сущностями программы являются объекты, всеми своими свойствами со-ответствующие сущностям решаемой задачи.
-
Программа есть описание обмена сообщениями между объектами.
Основные подмодели ООП
-
Модель объекта
-
Модель класса (частный вид абстрактного типа данных)
-
Модель наследования
-
Модель инкапсуляции
-
Модель полиморфизма
-
Модель обмена сообщениями
Концептуальная модель объекта
Определение объекта
Объект — сущность, которая:
-
отличима от себе подобных;
-
содержит в себе атрибуты и методы;
-
обладает состоянияем, задаваемым атрибутами;
-
обладает поведением, задаваемым методами;
-
динамическая по природе.
Атрибут — сущность, отражающая какое-либо свойство объекта и имеющая значение
Метод — сущность, описывающая действие, которое можно совершить с объ-ектом.
Поведение — последовательность действий, которая может быть выполнена с объектом.
Динамическая по природе — может быть создана или уничтожена
Состояние — совокупность значений атрибутов.
Отличимость — объект может идентифицироваться по:
-
имени;
-
значению атрибута или совокупности значений атрибута.
Методы
-
Каждый объект может иметь произвольное количество методов.
-
Каждый метод обязательно имеет следующую структуру:
-
селектор (средство отличения одного метода от другого) — например, имя;
-
указание на объект, которому он принадлежит;
-
возможно, параметры.
-
-
Метод при выполнении своего действия может использовать атрибуты.
-
Метод может использовать другие методы этого же объекта без указания имени объек-та, для котрого вызываются другие методы. (Если других объектов — имя указывать надо).
-
Метод объекта имеет право изменять атрибуты
-
Результатом выполнения метода может быть изменение состояния объекта.
-
Изменение состояния зависит от назначения метода, состояния до вызова метода, зна-чений параметров метода.
-
Метод, вызываемый вне объекта, которому он принадлежит, вызывается с именем объекта.
-
В объекте могут быть специальные методы, предназначенные для передачи сообще-ний. Результатом вызова их является прием либо передача сообщений.
-
Результатом выполнения метода может быть посылка сообщения.
2 Выделение объектов проблемной области: объектно-ориентированная модель задачи, информационная и математическая модели объектов Пример. Представление доски в аудитории в виде объекта
ПР1. Выбираем, что рассматривать:
ПР1.1 центральную часть реальной доски в аудитории — неинтересно (что в ней такого? прямоугольник как прямоугольник)
ПР1.2 полный комплект досок — длинно и трудно
ПР1.3 центральную доску со створками (2 штуки) — существенно. Створки можно открывать и закрывать. При желании мы потом сможем расширить модель на доски с большим количеством створок.
Вывод: принимаем последний вариант.
ПР2. Состав атрибутов:
-
левая створка
-
правая створка
-
центральная часть
Предполагаем, что левая и правая створка прикреплены к центральной части.
ПР3. Состав методов:
-
повесить доску; створки закрыты
-
снять
-
написать на доске
-
стереть с доски
-
закрыть обе створки
-
открыть обе створки
-
закрыть левую
-
закрыть правую
-
открыть правую
-
открыть левую
ПР4. Из ПР3 убрать «закрыть обе створки» и «открыть обе створки». Обоснование: можно реализовать с помощью методов открытия и закрытия отдельных створок
Рассмотрение объекта «доска 5143» привело к тому, что надо упорядочить процесс выделения объекта. Методика выделения объекта:
-
Основные части методики — шаги, приводящие к ОО-модели.
-
Выделяем проблемные сущности решаемой задачи. Например: сущность «доска 5143».
-
Представляем «наглядно» свойства сущностей проблемной задачи. Например:
-
доска 5143
-
левая створка
-
правая створка
-
маленькую доску слева от основной доски не рассматриваем
-
добавляем основное поле (до этого момента мы о нем не вспомнили)
-
Используем наглядные формы представления сущностей, их отношений и действий. Например:
левая створ-ка
основное поле
правая створка
-
Определяем действия с сущностями задачи. Например:
-
Доска
-
повесить
-
снять
-
написать на доске
-
стереть с доски
-
Основное поле
-
написать в основном поле
-
стереть с основного поля
-
Створка (и левая, и правая)
-
открыть, если закрыта
-
закрыть, если открыта
-
написать на створке
-
стереть со створки
-
Провести анализ полученных решений и сопоставить их друг с другом (анализ на взаимосвязь и определенность). Например: вопросы про объект «доска»:
-
Где написать, если мест несколько (на основном поле, на левой створке с внешней стороны (если она закрыта), на левой створке с внутренней стороны (если она открыта) и т.д.
-
Когда все створки закрыты, есть ли щель между створками и основной частью? В реальности есть, но учитывать ли это в модели?
-
Что значит «написать», если учитывать части доски?
-
Что значит «открыто» и «закрыто»?
-
Чем отличается левая створка от правой, кроме названия? [Ответ: они открываются в разные стороны: разная семантика (смысл) действий]
-
Пересматриваем проектные решения по результатам анализа.
-
Разрабатываем математические модели сущностей, претендующих быть объекта-ми. В них нужно отразить специфику предметной области. Модели могут быть избыточными — это лучше, чем недостаточными. Например:
-
прямоугольник по трем точкам — это недостаточная модель (нужно хотя бы алгоритм вычисления четвертой точки, условие на нее — что-нибудь в этом роде).
-
Прямоугольник по четырем точкам и четырем сторонам — модель избыточная, но по крайней мере, она соответствует предметной области (геометрии).
– Доска состоит из прямоугольников одинаковой высоты
– Правая верхняя граница левой створки = левая верхняя граница основного поля
– Левая верхняя граница правой створки = правая верхняя граница основного поля
– Длина любой створки равна половине длины основного поля (доска закрыва-ется без щелей)
– Открыть — отразить створку относительно соответствующей стороны, совпадающей с ближайшей вертикальной стороной основного поля
Математическая модель точно определяет действия и помогает формулировать пред- и постусловия.