De l’objet à la classe
De nombreux objets, qu'ils soient naturels ou informatiques, partagent des caractéristiques similaires, tant au niveau de leur description que de leur comportement. Pour simplifier la modélisation, il est utile de regrouper ces objets en classes lorsque leurs attributs et comportements sont communs. Une classe fournit une vue abstraite de ces objets en définissant leurs attributs (ou états) et leurs comportements.
En d'autres termes, une classe est une organisation des données et des opérations pertinentes pour les objets qu'elle représente. Ce concept est illustré dans la image à insérer ici. Avant de définir une classe, il est crucial de bien identifier les objets, les distinguer des autres, et comprendre leur identité, car cela influence la façon dont les structures et les comportements des objets sont perçus.
Exemple de Diagramme de Classes
Dans l'image à insérer ici, une entreprise est modélisée avec cinq classes : Entreprise, Service, Bureau, Employé et Siège. Chaque classe peut contenir des attributs tels que "nom" pour Service ou "nom" et "identifiant" pour Employé, ainsi que des opérations comme "demandeCongés" pour Employé. Les relations entre les classes sont représentées par des lignes, avec diverses notations selon le type d'association (comme les losanges ou les flèches).
Définition de la Classe
Une classe est une définition d'un ensemble d'objets partageant des sémantiques, attributs, méthodes et relations similaires. Un objet est une instance d'une classe. Il est important de noter que, dans les langages de programmation orientés objet, on peut confondre les notions d'instance et d'objet. Une instance est une occurrence d'une classe, mais elle peut aussi être une instance d'autres éléments dans UML, comme un lien, qui est une instance d'une association.
Abstraction et Méthodes Abstraites
Dans notre vie quotidienne, nous avons tendance à simplifier les détails pour obtenir une vue d'ensemble, ce qui est également appliqué dans la modélisation orientée objet à travers les classes et méthodes abstraites. Par exemple, une classe représentant une figure géométrique pourrait inclure une méthode pour dessiner cette figure. Si l'implémentation de cette méthode n'est pas définie, elle est qualifiée de « méthode abstraite ».
Par exemple, la image à insérer ici montre une classe FigureGéométrique avec une méthode abstraite "dessiner()". La classe FigureGéométrique est donc abstraite car elle ne fournit pas d'implémentation pour "dessiner". Une classe concrète comme Rectangle devra définir cette méthode pour être considérée comme concrète. Une classe abstraite doit contenir au moins une méthode abstraite. La image à insérer ici illustre une classe abstraite avec ses méthodes abstraites et les implications pour les classes dérivées. Une classe dérivée doit implémenter toutes les méthodes abstraites de sa classe parent, sinon elle restera abstraite.
Nom de la Classe
La création d'une classe peut impliquer plusieurs étapes et contributeurs. Par exemple, une classe peut être dérivée des cas d'utilisation par un analyste-programmeur, puis affinée par un ingénieur de développement avant d'être intégrée dans un paquetage spécifique. Pour refléter ces étapes, le nom de la classe peut inclure des informations telles que le stéréotype, l'auteur, la date, et le statut de validation.
En UML, la syntaxe pour nommer une classe est la suivante : [« stéréotype »] [ ::…:::] [{[abstract],[auteur],[état],…}]. Le nom doit représenter le concept de la classe, commencer par une majuscule, et chaque mot dans un nom composé doit également commencer par une majuscule, sans espaces.
Exemple de quelques class
Encapsulation
L'encapsulation est un principe fondamental, même au-delà de la programmation orientée objet. Ce principe protège les composants internes d'un système contre les accès non autorisés, similaire à un coffre-fort dont seuls les détenteurs de la clé peuvent ouvrir. En modélisation orientée objet, l'encapsulation détermine les niveaux d'accès aux propriétés d'une classe :
- Public : Visible de partout.
- Privé : Visible uniquement à l'intérieur de la classe.
- Protégé : Accessible par la classe elle-même et ses sous-classes.
- Paquetage : Visible seulement au sein du paquetage où elle est définie.
Par exemple, en Java, les classes sont regroupées dans des paquetages comme java.io pour les entrées/sorties, et java.util pour les utilitaires. Par défaut, la visibilité des classes et de leurs propriétés est limitée au paquetage dans lequel elles sont définies.