Ваше решение в порядке.Возможно, вам следует переименовать некоторые классы, например, Digital Publication
, потому что кто-то может подумать, что Digital
не является специальным Publication
.
Чтобы сделать его еще лучше, вы должны рассмотреть возможность использования Generalization Sets
.В настоящее время все четыре обобщения являются одним набором по умолчанию, хотя они показаны с двумя деревьями.Этот набор по умолчанию перекрывается и не является полным.Это означает, что экземпляр Publication
может быть экземпляром всех четырех специализаций одновременно или быть чем-то совершенно другим.Я думаю, что для вашей цели потребуются два Generalization Sets
:
- PublicationKind с
Book
и Magazine
- PublicationMeans с
Digital Publication
и Hard Publication
Оба будут отмечены свойствами {disjoint, complete}.
Многократное обобщение имеет свои преимущества.Просто используйте это с умом.