UML для непосредственных объектов OCaml - PullRequest
3 голосов
/ 16 марта 2009

Я создал непосредственный объект в OCaml.

let x = 
object (self)
val dataMember = 3
method aMethod = print_endline "Called a method"
end;;

Поскольку объект не имеет имени (считается ли он анонимным?), Как его можно правильно представить в UML?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 24 марта 2009

Вот что я нашел. Я бы просто следовал за изображением ниже (если вы можете), но сначала немного обсуждения. Наименование чего-либо в UML не означает, что оно не может быть анонимным в реализации. Я больше борюсь с тем, чтобы показать его «внутри» другого класса как сложный, таким образом, строка включения пакета / компонента, которая используется ниже. Вы также можете использовать инстанцированное соединение, чтобы показать, что вы ищете. Вы также можете использовать компоненты, так как они допускают включение. В конце концов, хотя я разрываюсь, почему вы бы смоделировали анонимный класс, поскольку он не является частью структуры, поскольку вы никогда не ссылаетесь на него вне класса (IN GENERAL), а скорее на поведение. Таким образом, почему экземпляры и свойства допускают анонимные элементы. Если вы начнете моделировать LISP и т. Д., Этот вопрос станет действительно веселым.

В актуальном состоянии для UML 2.0: Anonymous class example
(источник: informit.com )

Обратите внимание , что это рисунок 3.22 и что автор говорит «стереотип», что неверно, поскольку он не является частью языка, поэтому он является ключевым словом, что означает не часть формальной модели, любая старая строка. Не все инструменты поддерживают нотацию, но RSA / RSM, к моему удивлению, использует нечто похожее на нотацию.

Исходная страница - http://www.informit.com/articles/article.aspx?p=336264&seqNum=3

Из самой спецификации UML:

Для свойств - Может быть показан символ свойства, содержащий только одно имя (без двоеточия) в строке имени. Это подразумевает определение класса с анонимным именем, вложенного в пространство имен содержащего класса. У части есть этот анонимный класс как его тип. Каждое вхождение анонимного класса отличается от любого другого вхождения. Анонимно определенный класс имеет свойства, указанные с помощью символа части. Разрешено показывать отсеки, определяющие атрибуты и операции класса с анонимным именем.

Для экземпляров - (имена не обязательны для экземпляров) Стандартное обозначение для анонимной спецификации экземпляра безымянного классификатора - это подчеркнутое двоеточие (‘:’). Если спецификация экземпляра имеет спецификацию значения в качестве своей спецификации, спецификация значения отображается либо после знака неравенства («=») после имени, либо без знака равенства под именем. Если спецификация экземпляра показана с использованием вмещающей фигуры (например, прямоугольника), содержащей имя, спецификация значения отображается в пределах вмещающей фигуры.

3 голосов
/ 16 марта 2009

Вы можете дать ему nonce-name или какое-то другое формульное значение. «Правильно» в этом контексте действительно означает то, что будет ясно. Не существует «правильного ответа» от Международного органа по стандартам UML или чего-либо еще.

Если вам нужен более конкретный ответ, почему бы не назвать его чем-то вроде Anonymous_foo_mungler, где "foo_mungler" заменяется описательным именем, которое вы дали бы ему, если бы оно не было анонимным.

...