LINUX.ORG.RU

[UML] Зависимость или ассоциация

 


0

1

Делаю тут курсовой проджект. Есть у меня классы «Преподаватель» и «УчетПреподавателей»
Первый содержит различную информацию о преподавателе (имя, звание, должность, ...), второй позволяет удалять, добавлять, изменять информацию о преподавателе.
В связи с отсутствием опыта, не могу определиться, какое отношение использовать: зависимость или навигацию?
Так как при изменении структуры класса «Преподаватель» (добавили поле квалификация, изменилась-ли спецификация класса? что под ней понимать? все публичные поля, методы?), придется менять структуру класса «УчетПереподавателей», можно использовать зависимость.
Но первоначально объектов класса «Преподаватель» может не существовать, и на жизнедеятельность объекта «УчетПреподавателей» это не повлияет, можно использовать навигацию.
Разъясните пожалуйста ситуацию.
И еще, Буч пишет, что «Зависимостью называется отношение использования, определяющее, что изменение в спецификации одной сущности может повлиять на другую сущность, которая ее использует»
Так вот, практически везде, где используется ассоциация, изменение в одном классе влечет за собой изменение в другом. Тогда ведь нужно использовать зависимость вместо ассоциации? Не могу понять четкой границы между этими двумя видами отношений. Читать и перечитывать литературу конечно буду, но сейчас нет на это времени.


Есть у меня классы «Преподаватель» и «УчетПреподавателей»

«УчетПреподавателей» - какое-то кривое название, ни о чём

В связи с отсутствием опыта, не могу определиться, какое отношение использовать: зависимость или навигацию?

я бы использовал ассоциацию

//что Вы называете навигацией?

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

с чего бы это?

Так как при изменении структуры класса «Преподаватель» (добавили поле квалификация, изменилась-ли спецификация класса? что под ней понимать? все публичные поля, методы?), придется менять структуру класса «УчетПереподавателей», можно использовать зависимость.

1. задаёте правильные вопросы, но ответьте себе на них самостоятельно (изучите матчасть, так сказать, для начала), это легко в случае задаваемых Вами вопросов

2. каким образом придётся менять структуру «учёта»?

shty ★★★★★
()

если между классами есть связь, то это уже ассоциация и можно забить :)

из написанного я так и не уловил, какая между сущностями связь, если правильно понимаю «УчетПреподавателей» содержит множество «Преподавателей», а также (если говорить не в категориях объектов, а в категориях классов):

Но первоначально объектов класса «Преподаватель» может не существовать, и на жизнедеятельность объекта «УчетПреподавателей» это не повлияет

тогда агрегация например.

x0r ★★★★★
()
Ответ на: комментарий от shty

Я уже кажется разобрался, здесь нужно использовать зависимость.
http://ompldr.org/vNmd1dQ

что Вы называете навигацией?

я так не совсем верно обозвал однонаправленную ассоциацию

каким образом придётся менять структуру «учёта»?

Из картинки выше можно догадаться, что если изменить что-либо в Teacher, то, к примеру, структуру метода AccountingTeacher.Add() тоже нужно будет менять, ибо она завязана на данных из Teacher.

JN
() автор топика
Ответ на: комментарий от JN

Из картинки выше можно догадаться

Подключив libastral? Совершенно не ясно почему метод Add должен опираться на детали реализации Teacher.

baverman ★★★
()
Ответ на: комментарий от JN

Из картинки выше можно догадаться, что если изменить что-либо в Teacher, то, к примеру, структуру метода AccountingTeacher.Add() тоже нужно будет менять, ибо она завязана на данных из Teacher.

1. что такое «структура метода»???

2. менять надо будет не мифическую «структуру», а реализацию метода, но при рисовании диаграмм на это надо положить

shty ★★★★★
()
Ответ на: комментарий от baverman

Совершенно не ясно почему метод Add должен опираться на детали реализации Teacher.

я бы сказал совершенно ясно что не должен опираться

shty ★★★★★
()

Книга Domain-Driven Development Эрика Эванса вам поможет! Об ассоциациях там очень подробно написано.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.