-
Notifications
You must be signed in to change notification settings - Fork 0
ООП 05. Концепции информационного моделирования. Понятие атрибута. Типы атрибутов. Правила атрибутов. Понятие связи. Типы связей. Формализация связей. Композиция связей. Подтипы и супертипы. Диаграмма сущность связь.
С чего начинать разработку проекта:
- Разбили задачу на домены. Рассматриваем прикладной домен (наш).
- Разработка прикладного домена начинается с информационного моделирования. Мы начинаем всегда с физических объектов.
- Смотрим, какие объекты существуют.
- Пытаемся эти объекты сгруппировать по принципу одних и тех же характеристик.
- Выделяем, чем характеризуется объект - выделяем атрибуты объектов.
Разработка прикладного домена начинается с информационного моделирования.
Информационное моделирование включает в себя:
- Выделение сущностей, с которыми мы работаем
- Описание и анализ сущностей. Выделение их характеристик.
- Графическое представление сущностей.
Атрибуты - характеристики сущностей, переменные-члены объектов (данные). Каждая характеристика, которая является общей для всех экземпляров класса, выделяется как отдельный атрибут.
Идентификатор – то, что чётко определяет конкретный объект. Может состоять из одного или нескольких атрибутов.
Изменение атрибута не приводит к изменению самого объекта – объект просто меняет «имя», но остаётся тем же самым.
Типы атрибутов:
- Описательные атрибуты. Какая-то характеристика, внутренне присущая каждому объекту.
- Указывающие атрибуты. Которые используются как идентификатор, или как часть идентификатора.
- Вспомогательные атрибуты. Для формализации связи одного объекта с другими объектами. Для активных объектов будем выделять время жизни. Атрибут состояния.
Правила атрибутов:
- Один объект класса имеет одно единственное значение для каждого атрибута в любой момент времени. Значения всех атрибутов должны быть определены.
- Атрибут должен быть простым (не должен содержать никакой внутренней структуры). Сложный атрибут ⇒ новая сущность.
- Когда объект имеет составной идентификатор, каждый атрибут являющийся частью идентификатора, представляет характеристику всего объекта, а не его частей.
- Каждый атрибут, не являющийся указательным (частью идентификатора), должен характеризовать именно тот объект, который указан идентификатором, а не что-то другое.
Для каждого атрибута выделяем, какие значения может принимать атрибут. (Чтобы в дальнейшем определить тип для атрибута).
Каждый атрибут необходимо описать.
Из описания атрибута должно стать понятно, зачем мы выделили этот атрибут:
- Для описательного: показываем, какую характеристику хранит атрибут, как определяется и кто задает этот атрибут.
- Для идентифицирующего: показываем форму указания, кто назначает указание и степень, в которой идентифицирующий атрибут идентифицирует объект. Из группы идентифицирующих атрибутов выделяется привилегированный. (Если имя и фамилия - идентифицирующие атрибуты, из них фамилия - привилегированный).
- Для вспомогательного: показываем, какую связь формализует атрибут и почему мы так ее формализуем.
Связь – это абстракция отношений, которые возникают между объектами.
Задаём связь из перспективы каждого участвующего объекта.
Каждой связи присваивается уникальный идентификатор, который состоит из буквы и номера.
Типы связей:
- По множественности:
- Один к одному <---------> (Муж - жена)
- Один ко многим <--------->> (Преподаватель - студенты)
- Многие ко многим <<--------->> (Студенты - учебные курсы)
- По условности:
- Условные (один может не участвовать)
- Безусловные (оба участвуют)
- Биусловные (оба могут не участвовать) Если со стороны объекта связь условная, то у стрелки с его стороны ставится У.(не у всех преподавателей могут быть студенты, ставим
У
у студента)
Формализация связей:
- Один к одному: атрибут связи добавляется в главный из объектов, но если у связи динамическое поведение - с помощью ассоциативного объекта. Главный - наиболее осведомленный о всей системе.
- Один ко многим: атрибут связи добавляется со стороны многих (плохо, что связь держит зависимый объект, но если нам не важно, кто главнее, то и так сойдёт), но если у связи динамическое поведение или один главнее многих - с помощью ассоциативного объекта.
- Многие ко многим - с помощью ассоциативного объекта
Когда мы должны использовать ассоциативный объект:
- Если связь имеет динамическое поведение
- Если жизненные циклы объектов не совпадают
На информационной модели некоторые связи могут быть следствием другой связи. Такие связи мы обозначаем как композицию связей и не формализуем на диаграмме (потому что будет трудно разрулить ситуацию с несколькими ассоциативными объектами).
Если для объектов разных классов существует некий общий атрибут - объединяем их суперклассом.
Общие атрибуты для разных классов выносим в их суперкласс.
В объектно-ориентированном анализе суперкласс - всегда абстрактное понятие. Мы не рассматриваем возможность создания объектов суперкласса.
Связь суперкласса с подклассами обозначается номером, начинающемся со 100 (101, 102, 103...).
На диаграмме сущность-связь сущности располагаются в прямоугольнике.
Каждой сущности присваиваем и уникальный для домена номер.
Выделяем имя сущности (желательно существительное).
Для имени указываем ключевой литерал.
Указываем атрибуты:
- Привилегированный указывающий атрибут обозначаем “*”
- Все остальные атрибуты - просто перечисляем с “-”.
Между сущностями графически указываем связи.
Остальные правила и термины приведены выше.