UML
Chapitre 1. Introduction
Chapitre 2. Les concepts objets
2.1. Les objets
2.2. Les classes
2.2.1. La démarche d'abstraction
2.2.2. Représentation graphique des classes
2.2.3. Description des classes
2.3. Les relations entre classes
2.4. Les hiérarchie des classes
Chapitre 3. La conception d'un système
Chapitre 4. Le modèle fonctionnel
Chapitre 5. Le modèle statique
Chapitre 6. Le modèle dynamique
Chapitre 7. UML et la gestion de projet
Chapitre 8. La phase de conception
Chapitre 9. Modèles d'implémentation
Exercices
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivanteWebographie du moduleGlossaire du module

2.2.3. Description des classes

Visibilité des attributs et des opérations

Public : + rend l'élément visible à tous les clients de la classe.
Protégé : # rend l'élément visible aux sous-classes de la classe.
Privé : - rend l'élément visible à la classe seule.

Certains attributs et certaines opérations sont visibles globalement, il sont représentées comme un objet par un nom souligné (objet partagé par les instances de la classe).

Maquette des attributs et des opérations au sein d'une classe


En POO, le nom de l'attribut correspond grossièrement au nom d'un champ dans un langage de programmation. De la même façon, le type de l'attribut correspond au type d'un champ dans un langage de programmation.

Prenons l'exemple de la classe personne

Les deux attributs "nom" et "age" ont une visibilité de type privé, ils sont de type respectivement chaîne et entier. L'opération "getAge()" a une visibilité publique. Le code ci-dessous correspond à la traduction C++ du diagramme de la classe Personne :

Remarque : on parlera de la visibilité protégée quand on abordera l'héritage (la spécialisation/généralisation) dans le paragraphe "les relations entre classes".
Pour illustrer l'utilisation des attributs et opérations statiques, prenons un exemple. Si on désire connaître le nombre de personnes qui existent dans notre système on devra consever ce nombre dans un attribut propre à la classe et non aux instances de la classe Personne. Ce nombre devra être partagé par toutes les instances de la classes Personne, c'est un attribut statique, il est aussi appelé attribut de classe. Il est représenté en souligné. Toute modification d'un attribut statique doit se faire dans une opération statique. De la même façon l'opération statique est représentée en souligné. On pourraît ajouter dans le diagramme de la classe personne un attribut nombre que l'on souligne auquel correpondrait le code en C++ : " static int nombre ;", de la même façon on pourrait imaginer une opération compteur sans paramètre qui met à jour le nombre de personne, ce qui se traduirait en UML par l'ajout de l'opération compteur() qui sera soulignée et en C++ du code suivant : "static void compteur();".

Les types d'opération :
UML définit une requête comme une opération qui permet d'extraire une valeur d'une classe sans modifier l'état du système.
Les modificateurs : sont les opérations qui modifient l'état du système. Il est d'usage, en UML, de ne pas prévoir de retour pour les opérations de type modificateur.
Les accesseurs : ce sont des opérations qui retournent la valeur d'un champ (c'est l'exemple de l'opération getAge() dans la classe Personne.
Les mutateurs : ce sont des opérations qui affectent une valeur à un champ (Si on imagine que l'on puisse changer l'age d'une Personne on ajoute alors une opération publique qu'on peut appeler "setAge(ageDesire : entier)" à la classe Personne, ce qui se traduirait par le code suivant en C++ :

public : ... void setAge(int ageDesire){ age = ageDesire ; }; ...

Les classes paramétrables, les classes utilitaires et les interfaces

Les classes paramétrables :
Les classes génériques d'Eiffel.
Les templates de C++.
Elles ne peuvent être utilisées telles quelles, il convient de les instancier.


Les classes utilitaires :
Regroupement d'éléments (par exemple : fonctions mathématiques).


Les interfaces :
Une interface fournit une vue totale ou partielle d"un ensemble de services offerts par un ou plusieurs éléments.

Généralisation d'une interface

Exemple d'interface

Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivanteWebographie du moduleGlossaire du module