MODULE No 09-Addendum |
Titre : De l’ensemble à la classe |
But : Montrer le passage des objets d’un ensemble à la classe |
Antécédents : Module 09 |
Corps : Note Ce module à été ajouté « à la volée » en classe suite à des questions des étudiants. Fin de la note. Mais… mais… mais qu’est-ce qu’une classe ? Voici la définition tirée (et adaptée) du manuel d’UML : « Un descripteur d’un ensemble d’objets qui partagent les mêmes attributs, les mêmes opérations, le mêmes relations et le même comportement. » Dans ce module nous n’allons que considérer les attributs. La figure suivant présente un ensemble qui contient 8 éléments (objets)
Est-ce que les 8 éléments (objets) de la figure ci-dessus, partagent les mêmes attributs ? Ça dépend de ce qu’est un attribut : un attribut est une caractéristique d’un élément de l’ensemble ayant un nom et pouvant assumer différents valeurs. Dans le cas de notre ensemble les 8 éléments ont la même forme et ont des valeurs différentes pour les attributs : Couleur, Taille, Épaisseur. Si on représente en UML la classe Plus qui décrit les huit éléments de notre ensemble on a :
Les trois attributs ont un type qui fixe les valeurs possibles des attributs. Imaginons d’avoir un autre élément qui a la forme d’un plus mais dont les deux lignes ne sont pas de la même longueur :
Est-ce que ce nouvel objet peut être considéré comme faisant partie de la classe Plus que nous venons de définir ? Non, parce que l’attribut taille est un entier et il ne permet donc pas de représenter un plus qui a deux lignes de longueur différente. Note Le fait d’avoir une seule taille, dans notre cas, implique non seulement que les deux lignes ont la même longueur mais qu’elles se croisent à la moitié. Fin de la note Et l’objet suivant peut-il faire partie de la classe Plus ?
Non, parce que le type de couleurs possibles de la classe Plus ne contient pas le violet. Comment faire pour intégrer ces deux nouveaux objets dans la classe. Il suffit d’ajouter le violet aux couleurs et de mettre l’attribut : TailleVert et Taille Horiz (on suppose que les lignes se croisent (!?) toujours à moitié).
(En passant le type des tailles et de l’épaisseur ont été changés en « réel » pour rendre la classe proche d’une vraie classe où les dimensions ne sont généralement pas des entiers). Mais est-ce que le nom de la classe « Plus » est encore bon ? Ou, dit d’une autre façon : est-ce que l’objet suivant est un « Plus » ?
Bien sûr, on peut l’appeler « plus » mais toute personne parlant le français normalement dirait plutôt « croix » (couchée dans ce cas-ci !). Changeons donc de nom à notre classe :
Et reprenons la vielle version de Plus :
Entre les deux classes il y a une certaine similitude. On pourrait dire que Plus est une spécialisation de Croix car elle impose que les deux lignes soient de la même longueur et les valeurs possibles de la couleur sont un sous-ensemble des valeurs possibles de la couleur de la croix. Une autre façon de le dire : la classe Croix est plus générale que la classe Plus (tous les objets qui sont des Plus sont aussi des Croix mais l’inverse n’est pas vrai). Deux classes (deux concepts) qui sont en relation de généralisation/spécialisation sont représentées en UML avec une association ayant un triangle côté classe « générale » (ce que vous connaissez très bien… et vous n’aurez aucune hésitation lors de l’examen).
Et l’association se lit : « classe plus spécialisée est une (ou est un type de) classe plus générale » Dans le cas de notre Croix et de notre Plus on aura :
Qui se lit ainsi : un Plus est une Croix. Mais si on veut qu’un Plus soit une Croix tous les attributs de la Croix doivent exister dans Plus et donc on doit changer les attributs de notre vieux Plus. Voici la nouvelle « version » :
Dans la classe Plus il y aura la contrainte que TailleVert = TailleHoriz. |
Conséquents : Ne plus avoir des doutes sur la différence entre objets d’un ensemble et classe |
Note : |