2010-05-29 3 views
5

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

+0

Нет реальной альтернативы использованию возвращаемых типов, как описано в ответах. Но, возможно, тег «pattern» немного вводит в заблуждение. – ShiDoiSi

ответ

4

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

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

Пример:

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

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

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

EDIT:

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

+0

Правильно, но как бы я указал, что метод возвращает эту связь? – derekerdmann

+0

Обычно метод определяет __behaviour__ класса. Таким образом, нет способа выразить, что метод возвращает коллекцию с использованием диаграммы классов (за исключением указания его возвращаемого значения). – Simon

+0

Итак, я бы просто сказал, что метод возвращает Collection (на Java)? Я думал, что использование такого рода языковых обозначений, как правило, было исключено в UML. – derekerdmann

0

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

7

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

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

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

Библиотека + GetBooks (AUTHORNAME: String): книга [0 .. *]

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

0

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

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

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

Смежные вопросы