﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://127.0.0.1/drupal"  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Assistance Projets Logiciels - Classes</title>
 <link>http://127.0.0.1/drupal/blog_des_ti/uml/faq_ea/theme_classes</link>
 <description>Foire aux questions EA limitée aux seules questions relatives au Diagramme de classes</description>
 <language>fr</language>
<item>
 <title>Modéliser une énumération</title>
 <link>http://127.0.0.1/drupal/blog_des_ti/uml/faq_ea/modeliser_une_enumeration</link>
 <description>&lt;div class=&quot;field field-name-field-logo-faq-ea field-type-image field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/drupal/blog_des_ti/uml/faq_ea/modeliser_une_enumeration&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://127.0.0.1/drupal/sites/default/files/default_images/logo_faq_ea_small.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt;&lt;p&gt;&lt;em&gt;Comment modéliser une énumération UML ?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;L&#039;&lt;strong&gt;énumération&lt;/strong&gt; UML est particulièrement adaptée pour modéliser un ensemble fini de valeurs possibles que peut recevoir l&#039;&lt;strong&gt;attribut d&#039;une classe&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Personnellement, j&#039;utilise systématiquement les &lt;tt&gt;énumérations&lt;/tt&gt; en phase d&#039;analyse des &lt;em&gt;objets métier&lt;/em&gt;, pour les &lt;tt&gt;attributs de classes&lt;/tt&gt; dont les valeurs possibles sont limitées, et traduisant une information qui n&#039;entre pas directement en jeu dans le comportement de la &lt;tt&gt;classe&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Je préfère même dans certains cas remplacer un &lt;tt&gt;attribut de classe&lt;/tt&gt; de type &lt;em&gt;booléen&lt;/em&gt; par une &lt;tt&gt;énumération&lt;/tt&gt; à 2 valeurs.&lt;br /&gt;
Dans une représentation métier, l&#039;&lt;tt&gt;énumération&lt;/tt&gt; m&#039;apparaît plus claire que le simple affichage du type &lt;em&gt;booléen&lt;/em&gt; d&#039;un &lt;tt&gt;attribut&lt;/tt&gt;.&lt;/p&gt;

&lt;div class=&quot;screenshot&quot; style=&quot;float:left;width:346px;&quot;&gt;&lt;img style=&quot;margin-right:15px;&quot; src=&quot;http://127.0.0.1/drupal/sites/default/files/images/30/ea_enumeration_association.png&quot; alt=&quot;association enumeration - enterprise architect&quot; /&gt;&lt;cite&gt;Exemple 1 : association d&#039;une classe à une énumération.&lt;/cite&gt;&lt;/div&gt;
&lt;p&gt;Par exemple, pour modéliser la localisation d&#039;une place assise dans le wagon d&#039;un train, je choisis de relier ma classe &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;text geshifilter-text&quot;&gt;PlaceAssise&lt;/code&gt;&lt;/span&gt; à l&#039;&lt;tt&gt;énumération&lt;/tt&gt; &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;text geshifilter-text&quot;&gt;Emplacement&lt;/code&gt;&lt;/span&gt; contenant les valeurs &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;text geshifilter-text&quot;&gt;FENETRE&lt;/code&gt;&lt;/span&gt; et &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;text geshifilter-text&quot;&gt;COULOIR&lt;/code&gt;&lt;/span&gt; plutôt que d&#039;ajouter un &lt;tt&gt;attribut&lt;/tt&gt; &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;text geshifilter-text&quot;&gt;coteFenetre&lt;/code&gt;&lt;/span&gt; de type &lt;em&gt;booléen&lt;/em&gt; à cette même classe.&lt;/p&gt;

&lt;p&gt;Une &lt;tt&gt;énumération&lt;/tt&gt; est représentée comme une &lt;tt&gt;classe&lt;/tt&gt;. Elle est reconnaissable à son &lt;strong&gt;stéréotype &lt;q&gt;enumeration&lt;/q&gt;&lt;/strong&gt; et ne contient que des attributs dont le nom correspond à chacune des valeurs possibles.&lt;br /&gt;
L&#039;&lt;tt&gt;énumération&lt;/tt&gt; est considérée comme un type de données pour l&#039;&lt;tt&gt;attribut de classe&lt;/tt&gt; concerné.&lt;/p&gt;

&lt;div class=&quot;screenshot&quot; style=&quot;float:right;width:148px;&quot;&gt;&lt;img src=&quot;http://127.0.0.1/drupal/sites/default/files/images/30/ea_class_toolbox_enumeration.png&quot; alt=&quot;toolbox class enumeration - enterprise architect&quot; /&gt;&lt;/div&gt;
&lt;p&gt;Pour ajouter une &lt;tt&gt;énumération&lt;/tt&gt; à un &lt;strong&gt;diagramme de classes&lt;/strong&gt;, le plus simple est de glisser-déposer l&#039;icone &lt;em&gt;Enumeration&lt;/em&gt; depuis la &lt;em&gt;Toolbox&lt;/em&gt; vers le &lt;tt&gt;diagramme de classes&lt;/tt&gt; affiché dans l&#039;espace de travail de Enterprise Architect.&lt;/p&gt;

&lt;p&gt;Une fois l&#039;&lt;tt&gt;énumération&lt;/tt&gt; baptisée (même règle de nommage qu&#039;une &lt;tt&gt;classe UML&lt;/tt&gt;) et ses valeurs ajoutées (de préférence nommées en majuscule), elle peut être reliée à la &lt;tt&gt;classe&lt;/tt&gt; concernée par une simple &lt;strong&gt;association&lt;/strong&gt; orientée vers l&#039;énumération.&lt;/p&gt;
&lt;p&gt;L&#039;&lt;tt&gt;association&lt;/tt&gt; peut être complétée d&#039;une &lt;strong&gt;multiplicité&lt;/strong&gt; du côté de l&#039;&lt;tt&gt;énumération&lt;/tt&gt; pour préciser le nombre de valeurs auxquelles la &lt;tt&gt;classe source&lt;/tt&gt; fait référence.&lt;/p&gt;
&lt;p&gt;Dans l&#039;exemple 1, la classe &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;text geshifilter-text&quot;&gt;PlaceAssise&lt;/code&gt;&lt;/span&gt; se caractérise obligatoirement (multiplicité à 1) par un emplacement dont la valeur possible est soit &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;text geshifilter-text&quot;&gt;FENETRE&lt;/code&gt;&lt;/span&gt; soit &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;text geshifilter-text&quot;&gt;COULOIR&lt;/code&gt;&lt;/span&gt; et par un confort de &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;text geshifilter-text&quot;&gt;1ERECLASSE&lt;/code&gt;&lt;/span&gt; ou de &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;text geshifilter-text&quot;&gt;2EMECLASSE&lt;/code&gt;&lt;/span&gt;.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-field-theme field-type-taxonomy-term-reference field-label-inline clearfix&quot;&gt;&lt;h3 class=&quot;field-label&quot;&gt;Thème: &lt;/h3&gt;&lt;ul class=&quot;links inline&quot;&gt;&lt;li class=&quot;taxonomy-term-reference-0&quot;&gt;&lt;a href=&quot;/drupal/blog_des_ti/uml/faq_ea/theme_classes&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Classes&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
 <pubDate>Mon, 06 May 2013 20:39:02 +0000</pubDate>
 <dc:creator>Pascal MARTINEZ</dc:creator>
 <guid isPermaLink="false">30 at http://127.0.0.1/drupal</guid>
 <comments>http://127.0.0.1/drupal/blog_des_ti/uml/faq_ea/modeliser_une_enumeration#comments</comments>
</item>
<item>
 <title>Convertir une classe simple en classe d&#039;association</title>
 <link>http://127.0.0.1/drupal/blog_des_ti/uml/faq_ea/convertir_une_classe_simple_en_classe_d_association</link>
 <description>&lt;div class=&quot;field field-name-field-logo-faq-ea field-type-image field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/drupal/blog_des_ti/uml/faq_ea/convertir_une_classe_simple_en_classe_d_association&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://127.0.0.1/drupal/sites/default/files/default_images/logo_faq_ea_small.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt;&lt;div class=&quot;screenshot&quot; style=&quot;float:right;width:316px;&quot;&gt;&lt;img src=&quot;http://127.0.0.1/drupal/sites/default/files/images/29/ea_classe_d_association.png&quot; alt=&quot;association class - enterprise architect&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;Comment convertir une classe simple en classe d&#039;association ?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Il est parfois très appréciable de pouvoir transformer une classe en &lt;strong&gt;classe d&#039;association&lt;/strong&gt;, sans avoir à la recréer de toute pièce, particulièrement lorsqu&#039;on l&#039;a déjà documentée ainsi que ses attributs.&lt;/p&gt;

&lt;p&gt;Cette conversion s&#039;opère de la manière suivante :&lt;/p&gt;
&lt;div class=&quot;screenshot&quot; style=&quot;float:left;width:230px;&quot;&gt;&lt;a class=&quot;colorbox&quot; href=&quot;http://127.0.0.1/drupal/sites/default/files/images/29/create_association_class.png&quot;&gt;&lt;img style=&quot;margin-right:30px;&quot; src=&quot;http://127.0.0.1/drupal/sites/default/files/images/29/create_association_class_small.png&quot; alt=&quot;create association class - enterprise architect&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;ul&gt;&lt;li&gt;Sélectionner depuis le &lt;em&gt;diagramme de classe&lt;/em&gt;, la &lt;tt&gt;classe&lt;/tt&gt; à convertir.&lt;/li&gt;
&lt;li&gt;Afficher le menu contextuel de la &lt;tt&gt;classe&lt;/tt&gt; par un clic droit, puis choisir l&#039;élément de menu &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;text geshifilter-text&quot;&gt;Advance | Make Association Class...&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Choisir ensuite parmi les &lt;em&gt;associations&lt;/em&gt; présentées dans la liste, celle à laquelle vous souhaitez rattacher la &lt;tt&gt;classe&lt;/tt&gt;, puis activer le bouton &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;text geshifilter-text&quot;&gt;OK&lt;/code&gt;&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-field-theme field-type-taxonomy-term-reference field-label-inline clearfix&quot;&gt;&lt;h3 class=&quot;field-label&quot;&gt;Thème: &lt;/h3&gt;&lt;ul class=&quot;links inline&quot;&gt;&lt;li class=&quot;taxonomy-term-reference-0&quot;&gt;&lt;a href=&quot;/drupal/blog_des_ti/uml/faq_ea/theme_classes&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Classes&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
 <pubDate>Mon, 06 May 2013 19:36:38 +0000</pubDate>
 <dc:creator>Pascal MARTINEZ</dc:creator>
 <guid isPermaLink="false">29 at http://127.0.0.1/drupal</guid>
 <comments>http://127.0.0.1/drupal/blog_des_ti/uml/faq_ea/convertir_une_classe_simple_en_classe_d_association#comments</comments>
</item>
<item>
 <title>Ajouter une association qualifiée entre 2 classes</title>
 <link>http://127.0.0.1/drupal/blog_des_ti/uml/faq_ea/ajouter_une_association_qualifiee_entre_2_classes</link>
 <description>&lt;div class=&quot;field field-name-field-logo-faq-ea field-type-image field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/drupal/blog_des_ti/uml/faq_ea/ajouter_une_association_qualifiee_entre_2_classes&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://127.0.0.1/drupal/sites/default/files/default_images/logo_faq_ea_small.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt;&lt;p&gt;&lt;em&gt;Comment représenter une association qualifiée entre deux classes ?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Une &lt;strong&gt;association&lt;/strong&gt; entre deux &lt;strong&gt;classes&lt;/strong&gt; A et B, dont le nombre d&#039;objets de classe B est restreint par rapport à un objet de classe A sur la base d&#039;un ou plusieurs attributs, peut être représentée en UML par la définition d&#039;&lt;strong&gt;attributs qualifiants&lt;/strong&gt; (nommé &lt;q&gt;&lt;em&gt;qualifier&lt;/em&gt;&lt;/q&gt; en anglais).&lt;/p&gt;

&lt;div class=&quot;screenshot&quot; style=&quot;float:left;margin-right:15px;&quot;&gt;&lt;img src=&quot;http://127.0.0.1/drupal/sites/default/files/images/28/ea_association_qualifiee.png&quot; alt=&quot;association qualifiee - enterprise architect&quot; /&gt;&lt;/div&gt;

&lt;p&gt;Par exemple, dans la relation pouvant exister entre une banque et ses clients, le &lt;em&gt;numéro de compte&lt;/em&gt; constitue un &lt;tt&gt;attribut qualifiant&lt;/tt&gt; qui identifie de manière unique, un client particulier de la banque où le compte bancaire a été ouvert.&lt;/p&gt;

&lt;p&gt;En effet, un client est identifié dans sa banque par l&#039;intermédiaire de son &lt;em&gt;numéro de compte&lt;/em&gt;. Au plus, il n&#039;existe qu&#039;un seul client pour une banque et un &lt;em&gt;numéro de compte&lt;/em&gt; donnés.&lt;/p&gt;

&lt;p&gt;La déclaration d&#039;un &lt;tt&gt;attribut qualifiant&lt;/tt&gt; est à effectuer au niveau de l&#039;&lt;tt&gt;association&lt;/tt&gt; qui relie les deux &lt;tt&gt;classes&lt;/tt&gt; et non pas au niveau de la &lt;tt&gt;classe&lt;/tt&gt; du côté de laquelle sont affichés les &lt;tt&gt;attributs qualifiants&lt;/tt&gt; (voir le rectangle accolé à la classe &lt;q&gt;Banque&lt;/q&gt; et contenant l&#039;&lt;tt&gt;attribut qualifiant&lt;/tt&gt; &lt;q&gt;numCompte&lt;/q&gt;).&lt;/p&gt;

&lt;div class=&quot;screenshot&quot; style=&quot;float:right;width:315px;&quot;&gt;&lt;a class=&quot;colorbox&quot; href=&quot;http://127.0.0.1/drupal/sites/default/files/images/28/ea_association_properties_dialog.png&quot;&gt;&lt;img src=&quot;http://127.0.0.1/drupal/sites/default/files/images/28/ea_association_properties_dialog_small.png&quot; alt=&quot;association properties - enterprise architect&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;Dans &lt;abbr title=&quot;Enterprise Architect&quot;&gt;EA&lt;/abbr&gt;, pour ajouter un &lt;tt&gt;attribut qualifiant&lt;/tt&gt; à une &lt;tt&gt;association&lt;/tt&gt;, depuis le &lt;tt&gt;diagramme de classes&lt;/tt&gt; concerné, afficher les propriétés de l&#039;&lt;tt&gt;association&lt;/tt&gt; à qualifier en la double-cliquant.&lt;br /&gt;
L&#039;autre cheminement possible consiste à sélectionner l&#039;&lt;tt&gt;association&lt;/tt&gt;, à afficher le menu contextuel par un clic droit, puis à sélectionner &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;text geshifilter-text&quot;&gt;Association Properties...&lt;/code&gt;&lt;/span&gt; dans le menu.&lt;/p&gt;
&lt;p&gt;Sélectionner ensuite l&#039;onglet &lt;em&gt;Source Role&lt;/em&gt; ou &lt;em&gt;Target Role&lt;/em&gt; selon le côté de l&#039;&lt;tt&gt;association&lt;/tt&gt; devant porter les &lt;tt&gt;attributs qualifiants&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Dans le champ &lt;em&gt;Qualifier(s)&lt;/em&gt;, indiquer le nom de l&#039;&lt;tt&gt;attribut qualifiant&lt;/tt&gt;. Le type de l&#039;attribut peut être ajouté à sa droite (séparé par deux points &lt;q&gt; : &lt;/q&gt;).&lt;br /&gt;
Si plusieurs &lt;tt&gt;attributs qualifiants&lt;/tt&gt; doivent être ajoutés, les séparer par un point-virgule (&lt;q&gt; ; &lt;/q&gt;) pour qu&#039;ils soient affichés les uns en dessous des autres.&lt;br /&gt;
Par exemple &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;text geshifilter-text&quot;&gt;ligne:int;colonne:int&lt;/code&gt;&lt;/span&gt; pour afficher les deux &lt;tt&gt;attributs qualifiants&lt;/tt&gt; &lt;q&gt;ligne&lt;/q&gt; et &lt;q&gt;colonne&lt;/q&gt;, tous les deux étant de type &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;text geshifilter-text&quot;&gt;int&lt;/code&gt;&lt;/span&gt;.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-field-theme field-type-taxonomy-term-reference field-label-inline clearfix&quot;&gt;&lt;h3 class=&quot;field-label&quot;&gt;Thème: &lt;/h3&gt;&lt;ul class=&quot;links inline&quot;&gt;&lt;li class=&quot;taxonomy-term-reference-0&quot;&gt;&lt;a href=&quot;/drupal/blog_des_ti/uml/faq_ea/theme_classes&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Classes&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
 <pubDate>Mon, 06 May 2013 08:49:20 +0000</pubDate>
 <dc:creator>Pascal MARTINEZ</dc:creator>
 <guid isPermaLink="false">28 at http://127.0.0.1/drupal</guid>
 <comments>http://127.0.0.1/drupal/blog_des_ti/uml/faq_ea/ajouter_une_association_qualifiee_entre_2_classes#comments</comments>
</item>
</channel>
</rss>
