Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
uml.docx
Скачиваний:
1
Добавлен:
26.09.2019
Размер:
328.34 Кб
Скачать
  1. Проектирование класса, атрибуты, операции. Наследование, шаблоны, вложенные классы.

Проектные классы – это классы, описания которых настолько полные, что они могут быть реализованы.При анализе источником классов является предметная область. Это набор требований, описывающий задачу, которую необходимо решить.

При переходе к проектированию все операции и атрибуты класса должны быть полностью описаны, поэтому нередко он становится слишком большим. Если это происходит, необходимо разбить его на два или более меньших классов.

При проектировании наследование играет намного более важную роль, чем при анализе. В анализе наследование использовалось, только если между классами анализа имело место четкое и явно выраженное отношение «является». Однако при проектировании наследование может применяться в тактических целях для повторного использования кода. Это совсем иная стратегия, поскольку наследование фактически используется для упрощения реализации дочернего класса, а не для выражения бизнес отношения между родителем и потомком.

Шаблоны (templates) позволяют параметризовать тип. Это означает, что вместо определения фактических типов атрибутов, возвращаемых значений операций и параметров операций можно описать класс с помощью структурных нулей (placeholder), или параметров. При создании новых классов они могут быть заменены фактическими значениями.

Вложенный класс – это класс, определенный внутри другого класса. Вложенный класс объявляется в пространстве имен его внешнего класса и доступен только для этого класса или объектов этого класса. Только внешний класс или его объекты могут создавать и использовать экземпляры вложенного класса.

  1. Отношения уровня проектирования. Агрегация и композиция.

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

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

Агрегация – это свободный тип отношения между объектами – как между компьютером и его периферийным оборудованием.

Композиция – это очень строгий тип отношения между объектами – как между деревом и его листьями.

  1. Отношения классов уровня анализа. Ассоциации: один-к-одному, один-ко-многим, многие-к-одному, многие-ко-многим.

При проектировании необходимо всегда пытаться достичь максимальной конкретизации и уточнить ассоциации до одного из отношений агрегации везде, где это возможно. Фактически ассоциация должна использоваться в проектировании, только если в противном случае в схеме агрегации образуется цикл.

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

В ассоциации многие к одному целое имеет кратность «много», а кратность части равна 1.

В ассоциации один_ко_многим со стороны части присутствует коллекция объектов. Чтобы реализовать такое отношение, необходимо использовать или поддержку коллекций, предоставляемую языком реализации, или классы коллекции. Большинство ОО языков программирования имеют минимальную встроенную поддержку коллекций объектов. В сущности, большинство языков предлагают только массивы. Массив – это индексированная коллекция объектных ссылок, обычно ограниченная некоторым максимальным размером. Преимущество встроенных массивов, как правило,

состоит в их высокой производительности. Однако это преимущество нивелируется их малой гибкостью в сравнении с другими типами коллекций.

Ни один из широко используемых ОО языков программирования не

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

  1. Коллекции классов, отношения классов-коллекций, композиция с использованием структурированных классов.

Класс коллекции – это класс, экземпляры которого специализируются на управлении коллекциями других объектов. В большинстве языков программирования есть стандартные библиотеки классов коллекций (и других утилит). Существует много типов коллекций, по разному обрабатывающих коллекции объектов. Важным аспектом ОО проектирования и реализации является правильный выбор типа коллекции. Классы коллекции реализуют ассоциации один ко многим.

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

  1. Проектирование интерфейса. Что интерфейс описывает. Классификаторы интерфейса. Порты интерфейсов.

Главная идея, лежащая в основе интерфейсов, – разделение описания функциональности (интерфейс) от ее реализации классификатором, таким как класс или подсистема.

Порт группирует семантически связанный набор предоставляемых и требуемых интерфейсов. Он указывает на конкретную точку взаимодействия классификатора и его окружения. Порты являются очень удобным способом структурирования предоставляемых и требуемых интерфейсов классификатора. Их также можно использовать для упрощения диаграммы.

  1. Компонент. Нотация компонента. Стереотипы компонентов.

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

Компоненты могут иметь атрибуты и операции и участвовать в отношениях ассоциации и обобщения. Компоненты – это структурированные классификаторы. У них может быть внутренняя структура, включающая части и соединители.

Компоненты – вероятно, наиболее богатые стереотипами элементы UML. Это объясняется тем, что компоненты могут использоваться для представления различных типов сущностей. UML 2 предоставляет небольшой набор стандартных стереотипов компонентов

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