UML - метод объекта возвращает коллекцию - PullRequest
5 голосов
/ 30 мая 2010

Как я могу указать, что метод будет возвращать коллекцию объектов в UML? Есть ли лучший способ объяснить отношение, чем иметь класс коллекции в качестве возвращаемого типа?

Ответы [ 4 ]

7 голосов
/ 06 августа 2010

Я подхожу к этому немного поздно, так как я искал ответ на аналогичный вопрос. Я пишу это, если кто-то другой ищет аналогичный ответ.

Хотите ли вы указать, что метод возвращает коллекцию определенного типа? Если да, то для метода вы должны иметь возможность установить тип возвращаемого параметра и кратность возвращаемого параметра равным 0 .. * или 1 .. *. Это будет означать, что метод возвращает указанный тип и что он имеет любую кратность, которую вы указали.

например. используя пример Library <> --- Book, предположим, что в Library есть метод GetBooks, который принимает строковый параметр, имя автора и возвращает коллекцию экземпляров Book. UML будет выглядеть примерно так:

Библиотека + GetBooks (authorName: string): Book [0 .. *]

Ваш инструмент для построения диаграмм UML должен поддерживать это; Я использую Magic Draw. В этом UML говорится, что GetBooks возвращает 0 или несколько экземпляров Book. Теперь программист должен решить, как реализовать возвращаемый параметр на языке реализации (как указано выше Саймоном).

4 голосов
/ 30 мая 2010

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

Обычно ассоциации выражаются соединением двух классов линией. Композиция и агрегация имеют ромбовидный символ на стороне композита / агрегата. Композит / агрегат состоит из одной или нескольких частей. (См. вики-статью )

Пример:

Представьте, что у вас есть два класса: Библиотека, Книга. Мы можем сказать, что Библиотека - это целое, а Книга - часть. Мы могли бы записать это так (в ASCII, пожалуйста, Google для реальных диаграмм).

Библиотека (Совокупность) <> --- Книга (Часть)

Если вы хотите выразить эти отношения, ассоциация станет вашим другом.

EDIT:

Как я уже сказал в комментарии, я не думаю, что есть специальная запись для возвращенных коллекций. Тем не менее, вы правы, возвращая коллекцию в некотором роде. Но вы можете рассмотреть возможность возврата массива (String[]), который является более общим способом представления набора значений и должен быть более независимым от языка, чем коллекция. Затем программист сам решает, как он это реализует. Он может использовать Collection, вектор C ++ STL ... смысл в следующем: вернуть набор значений.

0 голосов
/ 30 мая 2013

Существует косвенный способ представления этого.

Вы можете определить другой составной класс, который имеет составное отношение 1 .. *, с вашим конкретным типом возврата и использовать этот новый составной класс в качестве типа возврата.

Например, если вы хотите вернуть коллекцию класса Book, создайте новый класс Books с ассоциацией 1 .. * с Book и используйте класс Books в качестве типа возврата.

0 голосов
/ 31 мая 2010

Хм, это правда, что в диаграммах классов UML нет явного способа выражения типов коллекций. Я читал книгу, где они критиковали UML за это, но упоминали, что в некоторых более ранних версиях UML были типы коллекций. Еще одна вещь - это Object Constraint Language (OCL), который интегрирован с UML (как стандарт OMG) и имеет свои собственные типы коллекций с хорошими операциями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...