3ième Licence ISIL Informatique
Génie Logiciel 1 2024 / 2025
Boulkrinat Samia Semestre 5
TP #2 (Agrégation)
I/ Objectif du TP
Le but de ce TP est de mettre en œuvre en Java, la relations d’agrégation entre classes.
L’agrégation est un cas particulier d’association non symétrique exprimant une relation de
contenance d’un élément dans un ensemble.
II/ Agrégation
Considérant le diagramme de classes à implémenter suivant :
II.1/ Implémentation de la classe « Réparation »
Implémentez la classe Réparation, qui représente une réparation d’un équipement en procédant comme suit :
1. Déclarer les attributs, les constructeurs et les getters et les setters de la classe Réparation.
• Réparation(Date dateRéparation, int nombreHeure, String travaux) : constructeur de la
classe Réparation.
• Réparation(Date dateRéparation, int nombreHeure, String travaux, Vector<Pièce>
listePièceRep) : constructeur de la classe Réparation.
TP #2 : Agrégation 1/6
2. Implémenter les méthodes d’instance de la classe suivantes :
Classe Réparation :
1. double calculerMontantRéparation() : calcule le montant de réparation de l’équipement
courant. Ce montant est la somme de tous les prix des pièces utilisées fois leurs quantités
respectives.
2. void ajouterPièce(réf : int, nom : String, quantité : int, prix : double) : permet
d’ajouter une pièce à la liste des pièces utilisées dans la réparation de l’équipement, si elle
n’existe pas dans le vector listePièceRep. Dans le cas contraire, modifie seulement sa quantité.
3. void ajouterPièce(Pièce p) : permet d’ajouter une pièce p elle n’existe pas dans le vector
listePièceRep. Sinon modifie seulement sa quantité.
4. void modifierPièce(réf : int, nom : String, quantité : int, prix : double) : modifie
les informations de la pièce identifiée par réf.
5. void modifierPièce(Pièce p) : modifie les informations de la pièce p si elle existe dans le
vector listePièceRep.
6. void supprimerPièce1(réf : int) : supprime la pièce p de la liste des pièces.
7. boolean isDispo(nom : String) : Vérifie par son nom, si une pièce existe ou non dans
listePièceRep.
8. boolean estRéformable() : retourne true si le montant de la réparation de l’équipement courant
est supérieur à son prix d’achat.
9. void afficherListePièces() : Affiche la liste des pièces du vector listePièceRep utilisées
dans la réparation courante.
II.1/ Implémentation de la classe « Piece »
Implémentez la classe Pièce, qui représente une pièce utilisée dans la réparation d’un équipement en procédant
comme suit :
3. Déclarer les attributs, les constructeurs et les getters et les setters de la classe Pièce.
4. Implémenter les méthodes d’instance de la classe suivantes :
• void entrerStock(quantité: int) : Ajoute à la quantité en stock d’une pièce la quantité donnée en
paramètre
• double calculerMontantPièce() : Calcule le montant d’une pièce : MontantPièce = quantité ×
prix.
TP #2 : Agrégation 2/6
II.2/ Travail demandé
Implémenter le modèle ci-dessus et tester dans la classe du main, toutes les méthodes d’instances.
Remarque :
Associer Vector<Pièce> listePièceRep à un Iterator et utiliser ses deux méthode hasNext() et Next()
Iterator itp = listePièceRep.iterator()
itp.hasNext() , itp.Next()
II.3/ Traduction de la relation d’agrégation en Java
A. Multiplicité 1 :
B. Multiplicité * :
TP #2 : Agrégation 3/6
II.4/ Collection et Iterator
II.4.1/ Framework Collection
• La collection est structure dans laquelle il est possible de stocker des données. Elle fournit de nombreuses
méthodes pour effectuer des opérations telles que l'insertion, le tri, la récupération, etc.
• En Java, la collection est une interface, elle permet de représenter un groupe d'objets individuels comme
une seule entité.
• Un framework en Java est une structure de base contenant des fonctionnalités génériques qui peuvent être
étendues et utilisées ou également modifiées par les utilisateurs.
• Un framework est universel et réutilisable, ayant des interfaces, des classes et des méthodes prêtes à
l'emploi. Il est testé et éprouvé, dispose de nombreux modèles de conception et il est considéré comme un
moyen de bonne pratique. Il peut être utilisé pour développer des logiciels, des applications et des produits.
• Le framework de collection est un framework qui traite une collection de données.
• Les classes et interfaces du framework de collection sont présente dans le package java.util.
La hiérarchie du framework de collection est décrit à travers la figure suivante :
TP #2 : Agrégation 4/6
II.4.2/ Différence entre Array et Collection en Java
Array Collection
Homogène : les données sont de même type Hétérogène : types multiples des données
Pas méthode pour traiter les données Disposent de méthodes pour gérer les données
Peut stocker les données primitives et non Peut stocker que les données non primitives
primitives comme String et Objects
Aucun générique à utiliser avec Array On peut utiliser les génériques
Array est le meilleur performance N’est as recommandée pour la performance
Non recommandé pour l’économie mémoire Adapté pour économiser de l'espace mémoire
II.4.3/ Méthodes de l'interface Collection
Méthode Description Type de
retour
add(Object o) Ajouter un nouvel élément dans la collection. boolean
addAll(Collection c) Ajouter un groupe d’éléments ou un autre élément de boolean
collection à une collection existante.
clear() Supprimer les éléments de la collection. void
contains(Object o) Vérifier si des éléments sont présents dans une collection boolean
existante
containsAll(Collection c) Vérifier qu'un groupe d'éléments (Collection c) provenant de boolean
différentes collections sont présents ou non.
isEmpty() Vérifie si la collection contient un élément ou non. boolean
iterator() Obtient un seul élément à la fois de la collection. Iterator
remove(Object o) Supprime l'objet particulier de la collection. boolean
removeAll(Collection c) Supprime le groupe d'éléments (Collection c) de la boolean
Collection.
size() Compte le nombre d'éléments ou d'objets présents dans la int
collection.
toArray() Convertit la collection en tableau. Object[]
retainAll(Collection c) Supprime tous les objets à l'exception de l'objet Collection c. boolean
II.4.4/ Interface Iterator
Parcourir un tableau, il suffit d’itérer ses éléments de la case 0 à la dernière case. Pour les collections, l’interface
Iterator pour parcourir les éléments de n’importe quelle collection.
TP #2 : Agrégation 5/6
Cette interface définie alors les méthodes suivantes :
Méthode Description
boolean hasNext() Retourne true s’il reste des éléments à parcourir
Object next() Retourne le prochain élément à parcourir
void remove() Supprime l’élément actuel de l’itérateur
Il est possible de parcourir tous les éléments d’une collection grâce à ces méthodes. On utilise pour cela la
méthode iterator() définie dans l’interface Collection.
TP #2 : Agrégation 6/6