Дизайн класса (UML Class Diagram) - PullRequest
       14

Дизайн класса (UML Class Diagram)

2 голосов
/ 22 февраля 2011

Может ли кто-нибудь дать свой вклад в следующий сценарий:

У меня есть класс Administrator и класс Technician (оба расширяют класс User, но это не имеет значения).У меня также есть класс RepairJob, который представляет элемент на разных стадиях его ремонта {получения | ремонта | ожидания части и т. Д.}.

Только пользователи-администраторы смогут добавлять новые задания по ремонту в систему, а также смогут просматривать состояние всех выполняемых в данный момент работ по ремонту.

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

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

Мой вопрос

Может ли кто-нибудь дать мне представление о том, как вы собираете вместе экземпляры RepairJob.Сначала я подумал, что, поскольку пользователь-администратор будет добавлять эти экземпляры, было бы неплохо смоделировать коллекцию внутри класса Administrator, однако классу Technician также нужно будет иметь доступ к ограниченному набору ремонтных работ.,Я также хотел создать класс RepairJobs, который имел бы список и был доступен для любого класса, но я не уверен, что это будет хороший дизайн.

Ответы [ 2 ]

2 голосов
/ 22 февраля 2011

Я думаю, что он должен быть отделен от классов Admin и Tech.RepairJob для одной задачи;то, что вы описываете, звучит как RepairJobManager, который поддерживает коллекцию RepairJobs и отслеживает их состояние.Он выполняет ваши правила в соответствии с ролью конкретного пользователя, который взаимодействует с ним.

package model;

public class RepairJobManager
{
    private Map<String, RepairJob> jobs;

    public void add(RepairJob job, Role role)
    {
        // Only allow Admin to do certain things.
    }

    public void update(RepairJob job, Status status, Role role)
    {
        // Only allow Admin to do certain things.
    }


}
1 голос
/ 22 февраля 2011

Мое представление DDD: вам нужен RepairJobRepository, который содержит коллекцию RepairJobs. Также вам нужен RepairService с такими операциями, как - create (RepairJob jobSpec) (добавить созданное задание в хранилище) - назначить (работа по ремонту, роль роли)

RepairJob нужен такой метод, как updateStatus (Status newStatus, Person p)
Вам нужно получить роль p, чтобы проверить, сможет ли он обновить статус.

...