2009-11-18 2 views
2

Très nouveau dans la conception UML et système.Les comportements UML simples me déroutent!

Nous sommes à l'étape de faire un diagramme de classe dans la phase de conception et luttons pour comprendre comment mettre en œuvre un besoin. Voici le problème:

Nous avons une classe Person composée d'une classe Name et d'une classe ContactDetails. La classe de détails de contact est composée d'un MobileNumber et d'une classe EmailAddress.

Comment est-ce que je modéliserais mon diagramme de classes afin que ContactDetails doit avoir MobileNumber ou EmailAddress ou les deux?

Je suis sûr que c'est simple - mais il m'a jeté!

Merci

+0

btw: quel outil UML utilisez-vous? – rdmueller

Répondre

0

Commençons simple:

Modèle vos classes que vous écrivez votre programme. Créez une classe ContactDetails et ajoutez deux attributs "MobileNumber" et "EmailAddress", tous deux du type correspondant. Maintenant, créez vos méthodes de constructeur:

+ ContactDetails (mn numéro de téléphone portable)
+ ContactDetails (email EmailAddress)
+ ContactDetails (mn numéro de téléphone portable, email EmailAddress)

maintenant: comment voulez-vous ajouter la contrainte nécessaire dans code? En configurant le constructeur vide comme privé?

Fais le!

-ContactDetails()

En vérifiant que les paramètres ne sont pas vides? Ajoutez simplement un élément Constraint qui consiste simplement en une note de texte dans votre classe.

C'est tout.

+0

Donc, les attributs sont là et nous avons trois constructeurs: ContactDetails (MobileNumber, Email); ContactDétails (E-mail); ContactDetails (MobileNumber); L'un des trois doit être appelé pour remplir les attributs? J'ai compris! Vous ne savez pas exactement ce que vous voulez dire à propos de l'élément Contrainte - ceci? http://publib.boulder.ibm.com/infocenter/rsmhelp/v7r0m0/index.jsp?topic=/com.ibm.xtools.modeler.doc/topics/cconstrnt.html –

+0

Désolé, je pense que j'ai mal interprété: je dois scinder MobileNumber et Email en classes séparées. C'est la façon dont nous devons le faire - ils doivent être séparés. Comment le faire via le diagramme de classes? –

+0

les attributs ont des types. comme Chaîne s; Entier b; So s est implémenté dans la classe "String", b dans la classe "Integer". C'est comme ça que vous les mettez dans des classes séparées, mais référencez-les à partir de vos Détails de Contact. Dans les diagrammes de classes, vous avez deux relations principales. Celui-ci s'appelle "a un ..." relation.L'héritage (Généralisation) est appelé relation "est un ...". – rdmueller

1

alt text

En outre, si une association est facultative, ce n'est pas une composition. C'est tout au plus une agrégation, voire une simple association comme je le montre dans ce schéma.

+0

oui. c'est ce que je voulais dire par "ajouter une contrainte" :-) Le problème est que vous ne pouvez pas transformer cela directement en code. – rdmueller