2009-09-14 7 views
2

Lorsque j'ai une classe avec un membre Map, je ne souhaite pas dessiner un objet classe/interface distinct pour représenter la map elle-même, mais je préfère traiter la map comme s'il s'agissait d'un type natif plutôt que un objet complexe.Comment puis-je représenter un membre de classe Map dans UML?

Prenons l'exemple suivant

public class IndexManagerImpl implements IndexManager { 
    /* ... */ 

    private static Map<Searcher, Integer> searcherCache; 
} 

Je voudrais souligner le fait qu'une IndexManagerImpl détient des références (bien qu'indirectement) à Searcher cas. Ce serait génial si la représentation pouvait également montrer les paramètres de type searcherCache.

Répondre

2

Un désaccord avec Martin ... MAP est la structure de base de données que nous apprenons dans n'importe quel cours de graduation d'ordinateur! Il existe dans la plupart des langues modernes et constitue une ressource de conception importante pour les analystes. Une carte peut être dessinée comme une association dans certaines situations, mais une sorte d'extension (stéréotypes) sera nécessaire OU vous pouvez définir une classe de modèle. Je n'aime pas l'approche modèle - elle cache les associations entre les principaux acteurs. La dernière ressource est l'AssociationClass, une classe UML spéciale utilisée pour définir des relations nxn avec des attributs, ce qui, selon moi, convient à votre problème, où le champ "integer" est une sorte de compteur de Searchers lié à indexManager. Rappelez-vous également que par code, vous ne pouvez pas voir l'autre côté de la relation, tandis que UML est conçu pour montrer les deux côtés, les problèmes de navigation et ainsi de suite.

0

En fait, les objets de collection indiquent une association un-à-plusieurs entre deux classes. Par conséquent vous devriez avoir une classe IndexManagerImpl sur votre diagramme qui a une association un-à-plusieurs avec une classe Searcher

+0

Je suis d'accord avec vous et utiliser un-à-plusieurs si je devais faire face à une simple liste (ou un ensemble, aussi bien). Une carte est, à mon avis, plus compliquée avec cela: si j'utilisais une association, je perdrais la nature clé-valeur des cartes. – abahgat

+1

Je ne suis pas sûr s'il existe une manière standard d'afficher une carte en tant qu'association mais je pense que vous pouvez utiliser un stéréotype pour créer un type d'association personnalisé pour les cartes – Beatles1692

+1

Un modèle UML est une abstraction et ne doit pas être lié à un langage idiome . Dans ce cas, MAP est un langage idiome (construit en partie de Java). La plupart des outils prennent en charge l'utilisation de Profils pour les langages d'implémentation, qui fourniront les types complexes intégrés. –

-1

Les cartes ne peuvent pas être considérées comme des collections car elles ont des propriétés différentes de celles des collections. En fait, une carte est multiple de collection avec une relation spécifique (mapping). À mon avis, la représentation de la carte dépend fortement de l'exigence et il pourrait y avoir plusieurs représentations UML en fonction de vos besoins. Ainsi, dans une forme simple, une relation de mappage peut être représentée, une association de plusieurs à un élément de jeu de clés et une association un à un d'un ensemble de jeu de clés à un élément de valeur. Lorsque l'élément clé et l'élément valeur sont des wrappers aux éléments d'origine, l'association ne correspond pas aux éléments d'origine.

Hope this helps ....

+0

UML ne doit pas être lié à la structure de données. – ForceMagic

Questions connexes