Форум Сообщества Аналитиков

Дисциплины => Системный Анализ и Требования => Тема начата: kirka от 18 Октября 2015, 18:41:30

Название: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: kirka от 18 Октября 2015, 18:41:30
Приветствую всех!

Описываю программу по учету за предприятиями во всех странах мира. Вот готовлю диаграмму с атрибутами. Читал книгу по UML, но не понял когда применять белые стрелки. Понял что для установления связи с родителем можно применять линию с закрашенным ромбом на конце (Предприятие же не может существовать без страны? классификатоор точно не может существовать без предприятия, это мне понятно).

Вопросы:
1. Подскажите пожалуйста, правильно ли я установил связи между объектами?
2.Классификатор (в него пользователи могут добавлять новые продукцию) нужно отдельно описывать? Если да, то в диаграмме правильно изобразил?

Страна (Атрибуты)
•   Название страны – выбор из классификатора стран
•   Население - *число*

Промышленные предприятия (Атрибуты)
•   Название предприятия - *строка 1-100*
•   Количество работающих - *число*
•   Название страны – ссылка на название родительской страны
•   Выпускаемая продукция – ссылка на классификатор продукции

Энергетика (Атрибуты)
•   Название предприятия - *строка 1-100*
•   Количество работающих - *число*
•   Название страны – ссылка на название родительской страны
•   Выпускаемая продукция – ссылка на классификатор продукции

Классификатор продукции (пользователь может самостоятельно может добавлять новые продукты в этот классифиатор). Атрибуты классификатора:
•   Название продукции
•   Название предприятия – ссылка на название родительское предприятие

Название: Re: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: Galogen от 18 Октября 2015, 21:52:34
Здравствуйте.

1. Если уж следовать стандарту UML, то наименование классов нужно делать в единственном числе
2. Ромб заполненный - это композиция, разновидность агрегации, которая сама разновидность ассоциации. В вашем случае дотаточно иметь агрегацию, но я бы начал с простой ассоциации.
3. чем пром предприятие отличается от энергетики? По-моему, это виды предприятий, проще ввести атрибут: Вид предприятия. Можно создать абстрактный класс - Предприятие, от которого унаследовать разные виды предприятий. Но делать это нужно, если у разновидностей, есть какие-то особые атрибуты
4. Классификатор продукции - должен быть независимым классов. Между Предприятием и Классификатором продукции будет связь - многие ко многим, которую можно разрешить или промежуточным классом Выпускаемая продукция, или классом-ассоциацией Выпускаемая продукция.

А вообще мне к вам совет изучите нотацию рисования классов в UML: http://www.uml-diagrams.org/class-diagrams-overview.html
Название: Re: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: Sergasd от 19 Октября 2015, 00:10:13
1)Для начала рекомендую понять принципы ООП.
2) Разобраться с постановкой задачи. Просто текстом для себя распишите должно быть то то и то то. 1) 2) 3)...
3) Какая то странная у вас классификация: Предприятия и энергетика. Наверное энергетика это специализация предприятия?

Название: Re: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: kirka от 19 Октября 2015, 19:15:26
Спасибо большое что обратили внимание

Внес правки.

Вопросы следующие:
1. В родительском объекте "страна" атрибуты "Столица государства", "Крупные города страны" - используют 2  справочника классифакатор стран. городов. Я правильно указал связь со справочниками?
1.1 В каждом из объектов у атрибутов есть небольшие справочники. Пример: Дорога, атрибут "Тип" (грунтовая, асфальтовая), у мостов, атрибут грузоподъемность (1000, 2000, 3000, 5000). Стоит ли указывать такие мелкие классификаторы в диаграмме?

2. Инфраструктура - это дороги, мосты, аэродромы, Телекоммуникационные сети и т.д.
в диаграмме есть "Инфраструктура", у которо в принципе нет как таковых атрибутов, но есть у ее дочек атрибуты. Т.е.е у объектов "Дороги", "Мосты", "Аэродромы" и т.д. Я оставил пустым "инфраструктура", но сделал их зависимыми от "инфраструктура". Посмотрите пожалуйста правильно ли я нарисовал?
Название: Re: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: Galogen от 20 Октября 2015, 16:02:07
Учите матчасть. Неуд. ;)

Ниже пример моделирования утверждений:

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

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

Подумайте над примерами и попробуйте сделать аналогично. Рисуйте например в draw.io, чего в пайнте или где вы там рисуете мучиться.
Название: Re: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: Григорий Печенкин от 20 Октября 2015, 16:52:35
Давайте сначала выясним, с какой целью разрабатывается диаграмма классов. Я здесь вижу минимум три возможных применения:
1) описание структуры данных (например, для последующей реализации в базе данных)
2) описание структуры классов для объектно-ориентированного программирования (например, для реализации на языках типа C++ или Java)
3) описание предметной области - просто чтобы понять, что мы моделируем

В разных случаях у нас получатся разные диаграммы.

Использование атрибутов public/private имеет смысл только во втором случае (по крайней мере, я не знаю других способов применения).
Название: Re: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: Григорий Печенкин от 20 Октября 2015, 16:54:15
Учите матчасть. Неуд. ;)

Город. Название: int
Дивный новый мир, в котором все города пронумерованы ;)
Название: Re: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: Galogen от 20 Октября 2015, 22:44:35
Город. Название: int
Дивный новый мир, в котором все города пронумерованы ;)
Ладно стебаться, просто ЕА по умолчанию ставит int. Кстати у каждого города есть код, буде тебе известно. ))
Название: Re: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: Vadim от 21 Октября 2015, 10:12:34
В Class Model1.png и Сlass Model2.png разные ситуации:
   1) КАЖДЫЙ город является крупным ровно для ОДНОЙ страны;
   2) город МОЖЕТ быть крупным для ЛЮБОГО набора стран.
Название: Re: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: Sergasd от 21 Октября 2015, 12:03:31
В Class Model1.png и Сlass Model2.png разные ситуации:
   1) КАЖДЫЙ город является крупным ровно для ОДНОЙ страны;
   2) город МОЖЕТ быть крупным для ЛЮБОГО набора стран.

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

Атрибут список крупные городов в стране можно рассматривать как элемент оптимизации. (Возможно преждевременной)
Название: Re: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: Sergasd от 21 Октября 2015, 12:07:57
Внес правки.

Повторюсь: постановка задачи -"учет  предприятий во всех странах мира" слишком абстрактная.  Бессмысленно смотреть ваши потуги сделать нечто, если вы даже сами не понимаете что вы хотите сделать.
Название: Re: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: Vadim от 21 Октября 2015, 17:24:27
Замена ассоциации атрибутом эквивалентна только тогда, когда кратность убираемого полюса ассоциации 0..* (чтобы заменить ассоциацию "крупные города страны" можно ввести в Город атрибут Страна, но нельзя ввести в Страну атрибут Крупные Города).
Название: Re: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: Galogen от 21 Октября 2015, 23:57:38
В Class Model1.png и Сlass Model2.png разные ситуации:
   1) КАЖДЫЙ город является крупным ровно для ОДНОЙ страны;
   2) город МОЖЕТ быть крупным для ЛЮБОГО набора стран.
Да, Вадим, Вы правы. Если подходить более точно, то и мои модели не верны. Я просто хотел показать топикстартеру, что такое ассоциация, и как она связана с атрибутом. Что между двумя классами - могут быть несколько связей.
Название: Re: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: Galogen от 22 Октября 2015, 00:01:52
Замена ассоциации атрибутом эквивалентна только тогда, когда кратность убираемого полюса ассоциации 0..* (чтобы заменить ассоциацию "крупные города страны" можно ввести в Город атрибут Страна, но нельзя ввести в Страну атрибут Крупные Города).
Ну я действительно поспешил и не внес атрибут страна в Город. Однако Ваше утверждение о невозможности ввести атрибут крупные города в Страну не считаю верным.
Это зависит от направления навигации с одной стороны и возможностей реализации в коде с другой, но в виде UML, препятствий нет.
Название: Re: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: Galogen от 22 Октября 2015, 00:16:23
Используем Magic Draw
Три этапа преобразований - переход от ассоциаций к атрибутному составу. В город перетащена страна 1 раз, нет смысла перетаскивать ее дважды.Обратите внимание на стрелку навигации.
Название: Re: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: kirka от 22 Октября 2015, 11:04:47
Спасибо большое. За рекомендацию программы также!

1.Вы внутри объектов указали атрибуты со знаком -. Это вы просто перечисляли  так? или же действительно обозначили видимость этих атрибутов?
2. Galogen, вы представили 3 схемы. А какаая из них подходит под мою диаграмму, подскажите пожалуйста?

ЗЫ:
Страна
+Столица (город)
+Крупные города
+Население страны

Город
+Название
+Население города
Название: Re: Диаграмма классов (объекты, атрибуты, связи) - правильно ли установлены связи?
Отправлено: Galogen от 22 Октября 2015, 15:22:13
2. Galogen, вы представили 3 схемы. А какаая из них подходит под мою диаграмму, подскажите пожалуйста?

Все три одинаковые. Вам лучше использовать первую. Но на самом деле проблема не в этом.

Вы ведете учет предприятий. Потому главный объект - это предприятие, все остальное - атрибуты. Например, предприятие имеет тип, месторасположение и т.п.
Место расположение = адрес, адрес содержит город, город входит в страну. И т.п.

Опишите то, что вы планируете хранить и для чего использовать