Возможности для рассмотрения при определении судоходности? - PullRequest
0 голосов
/ 16 сентября 2018

При принятии решения о том, может ли ClassA «перейти к» ClassB, учитываете ли вы только поля / атрибуты ClassA или также учитываете, действительно ли какие-либо методы ClassA «переходят» к каким-либо объектам ClassB?Или вы считаете, что некоторые методы ClassA просто временно содержат ссылку на какие-либо объекты ClassB?

Другими словами: допустим, у меня есть ClassA, в котором нет полей типа ClassB.Однако у меня есть метод ClassA.method1 (ClassB b).Когда метод вызывается, он извлекает информацию из b, вызывая b.method2 (), делает что-то соответствующим образом и затем выходит из области видимости, но ссылка на b не сохраняется постоянно в ClassA.Я указываю, что ClassA может перейти к ClassB?

Проще говоря, скажем, что ClassA.method1 (ClassB b) просто передает b другому объекту и никогда не вызывает никаких методов на b.Могу ли я указать, что ClassA может перейти к ClassB только потому, что он на мгновение содержит ссылку на ClassB?

Или я должен указать, что ClassA может перейти к ClassB если и только для ClassAимеет поле типа ClassB?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Навигация используется для обозначения того, что конкретному классу принадлежит свойство, через которое этот класс может получить доступ к типу этого свойства. Полная остановка. Это не имеет ничего общего с операциями или методами реализации.

Теперь навигация означает очень мало, и явная «шаровая» нотация говорит вам, что класс, а не ассоциация, владеет свойством. Причина изменения заключалась в том, что ничто не могло помешать классу ориентироваться, когда ассоциация владела свойством. (Например, рассмотрите возможность обращения к СУБД через таблицу отношений, представляющую ассоциацию.) Мне вообще не нравятся обозначения шаров, но это то, что есть.

0 голосов
/ 16 сентября 2018

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

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

...