Как реализовать ассоциации с одним классом посередине - человек, владеющий, авто - PullRequest
0 голосов
/ 21 декабря 2018

У меня проблема со следующей диаграммой классов.https://www.bilder -upload.eu / bild-3b1169-1545377131.png.html

В упражнениях у нас была связь между 2 классами.Например, Персона --- Резиденция с разной множественностью, однонаправленная и без указаний и так далее.Это изображение было показано как последнее в нашей лекции.И изображение говорит как «С этим (стрелка) реализация понятна».Но для меня это не так тривиально.У нас никогда не было примера такой реализации.Класс «собственные» в середине усложняет мне задачу.

Я пытался реализовать его, но моя реализация не имеет смысла.Я был бы в состоянии реализовать это, если бы класс «собственные» не был там.Я бы использовал тип контейнера (Связанный список) в Персоне для нескольких автомобилей.И в машине для нескольких человек.Для каждого класса есть метод получения (Коллекция) и методы добавления / удаления (двунаправленные).И я бы предоставил 2 разных конструктора автомобилей.Car (цвет строки, скорость int, владелец Person) и Car (цвет строки, скорость int, владельцы LinkedList. В первом случае я добавлю Person в LinkedList, а во втором добавлю все элементы владельцев LinkedList в LinkedList.объекта. И еще немного тривиального кода. Но для этого изображения выше я понятия не имею и надеюсь, что вы мне поможете.

PS: Я также был бы рад, если бы вы пришли мне ссылку, где реализации ассоциации, составление, обобщение и диаграммы классов UML объяснены. Я думаю, что наши лекции не очень информативны и не объясняют детали в деталях.: (

1 Ответ

0 голосов
/ 21 декабря 2018

В основном класс «владеет» используется для хранения данных, которые не принадлежат ни Person, ни Car, вместо этого он относится к отношениям между классами (в данном случае datePurchased).

Это полезно при разработкекак ваши данные сохраняются в базе данных.В этом случае «owns» будет содержать данные datePurchased.В реальной реализации ему также понадобится первичный ключ Person и Car.Так, например, если вы хотите найти автомобиль определенного человека, вы будете искать его в таблице «Owns», используя имя человека (при условии, что оно уникально и используется в качестве основного идентификатора).

Так что с этим дизайном ваш человек иКласс Car не будет содержать коллекцию или какие-либо данные друг о друге, вместо этого данные ассоциации между Person и Car хранятся в классе Owns.

...