UML-диаграммы

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

Модератор: Преподаватели

UML-диаграммы

Сообщение Telnov » 05 сен 2011, 06:12

Здесь предлагается обсуждать вопросы проектирования софта. В частности, такой вопрос. UML-диаграммы - насколько они необходимы в практической работе?

ScreenHunter_06 Sep. 05 07.14.gif
ScreenHunter_06 Sep. 05 07.14.gif [ 69.53 KiB | Просмотров: 6838 ]
ScreenHunter_07 Sep. 05 07.16.gif
ScreenHunter_07 Sep. 05 07.16.gif [ 43.04 KiB | Просмотров: 6838 ]


Для разминки, читателям форума предлагается решить задачу "Пять едоков".
Призовые 5 баллов к рейтингу студента за каждое оригинальное решение (их несколько).
В.Тельнов
Аватар пользователя
Telnov
Преподаватель
 
Сообщений: 324
Изображения: 5
Зарегистрирован: 05 сен 2011, 00:19
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.

Re: UML-диаграммы

Сообщение Иван » 15 дек 2013, 13:56

Идея такова. Есть циклический список из с указателями на объекты класса Eater. Он представляет из себя круглый стол. Объект Eater включает в себя атрибуты, отвечающие за состояние объекта. Есть ли в правой или левой руке вилка, есть ли вилки слева или справа. Вообще класс Clist на языке C++ - это структура, являющаяся атрибутом класса Table. Взаимодействие самое элементарное. Захотели взять вилку с одной из сторон - проверили, есть ли она.
Захотели положить - проверили, имеется ли она в руке.

Visual Paradigm ругалась на деструкторную тильду. Поэтому ее пришлось заменить на приставку Del.

В целом идея решения задачи не сложная. Но писанины нужно много.

http://uploads.ru/xDtV1.jpg

Наверное стоит подойти с распечаткой?

Пока нет. Ваше решение непонятно. С классом Eater ещё можно согласиться, а назначение Table и Clist не ясно. Почему нет класса вилок?
Обратите внимание: всё, что происходит в этой задаче - это едоки берут вилки со стола. У некоторых едоков может оказаться по две вилки, у других - ни одной. То есть возникают (или не возникают?) отношения между конкретными вилками и едоками. Данный факт следует явно отразить на диаграмме классов, у вас этого нет.
Подсказка: правильное решение данной задачи не зависит от числа едоков и вилок, т.е. число пять можно заменить на любое другое.

В.Тельнов
Аватар пользователя
Иван
Студент
 
Сообщений: 49
Зарегистрирован: 06 сен 2013, 08:41
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: UML-диаграммы

Сообщение Иван » 17 дек 2013, 16:12

Согласен, что решение не зависит от количества едоков и вилок.

Объектов вилок нет потому, что в данном решении их наличие в руке или на столе справа/слева определено в атрибутах класса Eater. Можно, конечно, создать отдельный класс объектов вилок. Вот только зачем выделять лишнюю память(возможно я и не прав, т.к. опыта тестирования не имею) ?

На счет класса Clist. Бредятина действительно. В условиях поставленной задачи вообще достаточно нуль конструктора. И в атрибуты класса table занести наш циклический список.

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

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

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

В.Тельнов
Аватар пользователя
Иван
Студент
 
Сообщений: 49
Зарегистрирован: 06 сен 2013, 08:41
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.


Вернуться в Вопросы программирования

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2