Профессор просит нарисовать диаграмму классов с указанием множественности и взаимосвязи для следующего сценария:
A student taking subjects borrow some textbooks as listed in subject syllabus and some reference books which are not listed in subject syllabus.
Я умею рисовать ассоциативные отношения между учеником и предметом. Но я не уверен, следует ли мне сгенерировать класс Book и сделать два подкласса для учебника и справочника. Мое оправдание состоит в том, что я считаю, что в учебниках и справочниках используются одни и те же атрибуты и методы. В обобщении может не быть необходимости.
Поразмыслив несколько минут, я могу создать класс Book с общим атрибутом (название, ISBN и т. д.) И создать еще один класс BookType для указания типа книги. Но я думаю, что BookType может быть атрибутом класса Book.
Поскольку у меня нет конкретной идеи, мог бы кто-нибудь дать совет?
В целом ответ зависит от функциональных требований, но я был бы ориентирован на то, чтобы не указывать разницу между учебной программой и справочниками, потому что в конце они все еще остаются книгами без каких-либо конкретных спецификаций или методов. также добавление атрибута типа. В лучшем случае, если вам нужно различать два типа книг, вы можете сказать, что Ученик содержит два разных списка заимствованных книг, учебный план и Справочная литература.
Трудно сказать, какое решение является лучшим, вопрос не определяет каких-либо функциональных требований, но я отказался от обобщения, чтобы оставить самую широкую гибкость. Последнее предложенное мной решение связано с возможным сценарием, в котором пользователю необходимо выполнить разные действия с двумя подмножествами книг.
Я не думаю, что дифференциация атрибутов «Студент» дала бы какое-то преимущество. Либо (я думаю) это должно быть обобщением, либо вообще ничего.