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

Вопрос 12. Отношение между классами. Типы отношений.

Класс и объект тесно связаны Хотя объект - это конкретная сущность определенная но времени и пространстве То класс - определяет лишь абстракцию существенного в объекте (класс млекопитающее - объект бегемот )

Класс - это некое множество объектов имеющих общую структуру и общее повеление

Любой объект - это экземпляр класса Объекты, не связанные общностью нельзя объединит в класс Существуют сложные абстракции которые нельзя выразить классом (графический интерфейс база данных, система учета) даже вложенностью классов В таких системах классы выступают как компоненты А совокупность кластеры - категориями классов

Интерфейс и реализация

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

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

Интерфейс класса можно разделить на три части открытую (public) - видимую всем клиентам защищенную (protected) видимую самому классу, его подклассам классам и друзьям (friends)

Закрытую {private) - видимую только самом) классу и его друзьям В различных языках предусматривается различная комбинация этих частей Состояние объекта задается в его классе через определение констант или переменных, помещаемые в его защищенной или закрытой части, например Displayltem

Жизненный цикл класса

Внутри объектов происходит взаимодействие разных операции (как в машине ее части) Снаружи виден только результат взаимодействия - поведение объекта

Языки поддерживают следующие виды отношений

  • ассоциация

  • наследование альтернатива -> делегирование своего поведения родственным объектам

  • Агрегация

  • Использование

  • Инстанцирование

  • Метакласс

Наиболее обшее и неопределенное отношение ассоциация

Наличие ассоциаций это значит проект находится на стадии уточнения

Рис 3.4 Ассоциация

Класс Product - это то. что мы продали в некоторой сделке, а класс Salt сама сделка, в которой было продано V товаров Ассоциация здесь один ко многим

Семантика.

Ассоциация - смысловая связь, по умолчанию она не имеет направление, подразумевает 2-х стороннюю связь Фиксируются на первой стадии разработки участники и их роли (мощность отношения)

Мощность. Мы имели ассоциацию "один ко многим", т.е. указали ее мощность (количество участников) существует три вида мощности

  • один-к-одному

  • один-ко-многим

  • многне-ко-многим

Наследование

Одиночное наследование когда класс повторяет структуру и поведение другого класса {одиночное) или других (множественное наследование) классов Наследуемый класс называется суперклассом(TelemetryDatd) для произвольного (подкласса) ElectricalData Здесь соблюдается иерархия общего - частного Наличие механизма наследование отличает языки объектно-ориентированные от объектных

Рис 3-5 Одиночное наследование

Такой тип иерархии характерен для семантических сетей которые используются для распознавания образцов и искусственного интеллекта, для организации баз знаний - это вопрос логической иерархии Самые специализированные классы называют конкретными классам, или листьями иерархического дерева Промежуточные (SensorData) - называются абстрактными Самый общий класс базовый Таких в системе бывает несколько У класса бывает обычно два вида клиентов

  • экземпляры.

  • подклассы

Полезно для них иметь разные интерфейсы Внешнее видимое по­ведение - это для клиентов - экземпляров, открытые служебные функции - это для клиентов подклассов

В C++ иерархия типов совпадает с иерархией классов. Но здесь большая опасность если переопределить суперкласс, то его потомки могут оказаться вне закона, с точки зрения типов Меняется его положение в иерархии наследования