Что значит в UML, что экземпляр может реализовывать более 1 классификатора? - PullRequest
2 голосов
/ 26 марта 2012

Предоставляет ли какой-либо язык программирования такую ​​вещь?

Где это можно использовать?

Например:

enter image description here

обратите внимание, чтоЧто-то - это не класс, это его экземпляр (подчеркнутый), а это объектная диаграмма

Spec (раздел 7.3.22) гласит:

Спецификация экземпляра изображается с использованием той же записи, что иего классификатор, но вместо имени классификатора появляется подчеркнутая конкатенация имени экземпляра (если есть), двоеточия (':') и имени или имен классификатора.

Соглашение о показе нескольких классификаторов:разделить их имена запятыми.

Так что я застрял с "несколько классификаторов".

Ответы [ 4 ]

0 голосов
/ 27 марта 2012

UML позволяет объекту быть экземпляром нескольких разных классов (даже если они не связаны) одновременно.Тот факт, что это не является обычным соглашением и не поддерживается языками программирования, является другой проблемой.UML старается быть максимально широким, даже если конкретные технологии могут реализовать только его часть.

0 голосов
/ 26 марта 2012

Это множественное наследование, если вы ссылаетесь на классы (за исключением того, что вы должны использовать сплошные ребра для обобщения), в этом нет ничего плохого ;)

Обратите внимание, что интерфейс также является классификатором, поэтому текст вашего вопроса нуждается в некоторой доработке - в конце концов, нет ничего плохого в обобщении более чем одного интерфейса.

0 голосов
/ 26 марта 2012

Любой язык с экстенсионной, а не интенциональной типизацией допускает такие конструкции.

Например, в RDF два источника могут заявлять о веб-ресурсе, которые полностью конфликтуют, или на языке «утиного типа» объект может иметь все характеристики двух иначе не связанных типов.

Языки расширения классифицируют объекты по их свойствам - если у них есть зубцы, это вилка, если у них есть ручка и чаша, это ложка, если у них есть и зубцы, и чаша, это и вилка, и ложка.

Разница между такими языками и ориентированными на классы интенциональными языками, такими как C ++ / Java / C #, к которым чаще всего применяется UML, заключается в том, что вам не нужен класс spork для определения вещей, которые являются как ложками, так и вилками - будь то принадлежность к классификатору определяется тем, соответствуют ли они требованиям классификатора.

0 голосов
/ 26 марта 2012

Это Dependency.Зависимость - это более слабая форма отношений, которая указывает, что один класс зависит от другого, потому что он использует его в определенный момент времени.Один класс зависит от другого, если последний является переменной параметра или локальной переменной метода первого.Это отличается от ассоциации, где атрибут первого является экземпляром второго.

Другими словами, ваш класс somethingStance будет использовать как Cat, так и Panzer

Ниже это просто пример того, как это может выглядеть

Public class SomethingStrange{
     public Cat CatDependency{get;set;}
     public Panzer PanzerDependency{get;set;}   

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