2010-09-10 3 views

ответ

3

Вы можете просто рассматривать его как родной тип данных. В большинстве случаев нет причин делать что-то еще.

Здесь нет «правильных» или «неправильных». Единственные вопросы - вот что делает архитектуру более понятной для команды.

+2

Я полностью согласен. Стандарты, такие как UML, пытаются определить набор стандартных правил, которые упрощают объяснение архитектуры (как своего рода сборник передовой практики или здравого смысла). Но в конце концов, это ваша команда должна понять это, и если для того, чтобы сделать ее более четкой, требуется отклонение от стандартов, нет необходимости придерживаться стандартов. (Я просто понял: если бы мы все придерживались стандартов в компьютерной истории, мы все равно будем использовать Cobol). – Patrick

4

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

class MyEnclosingType { 
    std::map<int,MyEnclosedType*> m_map; 
}; 

MyEnclosingType <>-------------------------- MyEnclosedType 
         <<map>> 

В зависимости от инструмента, который вы используете, некоторые действительно признают это. Например BOUML, IIRC, автоматически нарисует что-то похожее на это:

MyEnclosingType <>-------------------------- MyEnclosedType 
          ^
           | 
           | << bind Key=int >> 
           | 
          map 

Я не думаю, что это было именно так, но как-то похоже. В конце UML - это инструмент для чтения людьми, а не для компьютеров. Если вы верите в создание кода (удачи), тогда возникает вопрос о том, какую странную конструкцию вам нужно использовать для вашего программного обеспечения, чтобы понять ваши намерения.

Некоторые другие инструменты будут иметь STL или позволяют добавлять параметризованные типы и вы можете использовать, чтобы представлять один и тот же код, как:

            Key=string 
               Value=MyEnclosedType 
MyEnclosingType <>-------------------------- map 

Где и MyEnclosingType и map будут окруженную твердыми коробками, и Key и Value будут представлены прерывистым ящиком, перекрывающим поле map, как и с другими параметризованными типами.

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

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