2017-01-08 2 views
0

Читаю Real Time UML: Advances in the UML for Real-Time Systems (3rd Edition) 3rd Edition by Bruce Powel DouglassUML: руководящее для видимости

В разделе 10.5, когда речь идет о на подробном добраться до нас на дизайн видимости. он говорит:

Выполнять только семантически соответствующие операции.

Это руководство стремится избежать патологическую связь между классами. Например, предположим, что класс использует класс контейнера. Должны ли операции быть GetLeft() и GetRight() или Prev() и Next()? Первая пара делает видимость реализации (двоичное дерево), а последняя пара фиксирует существенную семантику (упорядоченный список).

Я не могу понять, что он пытается сказать здесь, и особенно последняя строка.

Может кто-нибудь уточнить свою точку зрения?

ответ

2

Ну, это немного тонко. GetLeft и -Right имеют направления в их имени, которые получены из внутренней реализации в виде двоичного дерева. Таким образом, внутренняя структура данных видна в интерфейсе. И этого не должно быть. Лучше держать эти знания внутри по нескольким причинам. Во-первых, внешнему миру все равно, как все будет реализовано. Во-вторых, если вы решили реализовать его по-другому (например, через кольцевой буфер), то GetRight будет нечетным из внутреннего представления, если вы достигнете правой границы буфера. Prev и Next явно нацелены на бизнес/внешний аспект использования операций.