Форум Сообщества Аналитиков
Общий раздел => Примеры => Тема начата: dimaxz от 12 Января 2011, 13:23:48
-
Есть модели пользователь и новость, у пользователя три роли автор, инициатор и куратор, скажите:
1. при реализации классов будут два класса пользователь и новость, а у новости будут атрибуты автор,инициатор и куратор через которые будет происходить связь с пользователем.
2.Как тогда будет показываться связь этих двух классов с указанием ролей на концах ассоциации??
-
классы
-
Лучше самому сгенерить код и посмотреть )
Вот тут Эдуард писал про то, как генериться композиция в разных средах:
http://galogenit.livejournal.com/1732.html
-
Я не про это IA сгенерит как надо class Автор extends Пользователь
но не правильно будет создавать классы автор, инициатор и куратор так. как это роли
-
Нужно разделять физическое и логическое представление.
На логическом уровне у Вас все правильно нарисовано. На физическом будет просто 3 связи между Пользователем и Новостью, с соответствующими идентификаторами.
-
получается так?
-
получается так?
Понимаете, как это передать на логическом уровне не так важно возможно, как потом спроектировать решение -вопрос интересный и открытый.
Предложенная вами схема плохая с точки зрения объектно-ориентированного проектирования. Подобная схема сложная, плохо подается изменениям и ее невозможно использовать повторно.
Здесь нужно исходить из принципов проектирования и искать решение снижающее количество зависимостей, реализующие принципы открытости-закрытости, Лисков и т.п.
Здесь повидимому следует поискать готовый шаблон для подобной ситуации, либо разработать собственное решение. Например выделить абстрактный класс роль.
Кроме того пока не ясны требвания предъявляемые к реализации. Что значит что у новости есть автор, инициатор и куратор? В чем различие этих ролей, какое влияние они оказывают на новость, что быдет если завтра потребуется ввести еще одну роль или убрать имеющуюся?
-
Пользователь-автор имеет возможность создать новость указав обязательно пользователя-инициатора данной новости, и при желании пользователя-куратора (имеющего возможность проверить эту новость на корректность).