Académique Documents
Professionnel Documents
Culture Documents
TD TP2 Classe Objet PDF
TD TP2 Classe Objet PDF
Exercice 1 : Ecrivez une classe Point qui permet de représenter un point sur un plan. Chaque point est
caractérisé par un nom (String), une abscisse x (float) et une ordonnée y (float). Tous les champs de la classe
sont publics.
1. Ajouter un constructeur permettant d’initialiser tous les champs d’un objet Point (constructeur
exhaustif).
2. Ajouter une méthode String toString() retournant la description d’un point.
3. Ajouter une méthode double distance(Point p) calculant la distance du point “this” au point p.
4. Ajouter une méthode boolean equals(Point p) qui permet de comparer le point “this” avec autre point p.
5. Ajouter une méthode void deplacer(double dx, double dy) qui translate le point de dx sur les abscisses et
de dy sur les ordonnées.
6. Créer une classe exécutable TestePoint implémentant la méthode main().
7. Utiliser la classe Point en créant deux objets, et en afficher les caractéristiques. Les valeurs des champs
sont entrées par l’utilisateur
8. Déplacer ces deux points dans le plan, calculer leur distance, et en afficher à nouveau.
9. Maintenant, supposons que les champs de la classe Point sont privés. Ajouter l’ensemble des méthodes
(Accesseurs et Modificateurs) qui constituent l’interface d’encapsulation de la classe Point.
10. Changer le modificateur du champ nom : il ne devra changer le nom d’un point que si on lui passe en
paramètre une chaine de caractère commençant par une lettre.
11. Reprogrammer la classe Point en surchargeant :
Le constructeur : ajouter deux autres constructeurs (sans arguments et un constructeur recevant en
arguments uniquement les coordonnées d'un point).
La méthode deplacer : ajouter quatre autres méthodes en modifiant le type, et le nombre des
paramètres, ainsi que le type de retour.
12. Ajouter un champ int Ident qui permet d’attribuer un numéro unique à chaque nouvel objet créé (1 au
premier, 2 au suivant...). On ne cherchera pas à réutiliser les numéros d’objets éventuellement détruits.
13. Ajouter une méthode getIdent fournissant le numéro attribué à l’objet
14. Ajouter une méthode getIdentMax fournissant le numéro du dernier objet créé.
15. Dans la classe exécutable TestePoint, ajouter un tableau pour enregistrer l’ensemble des objets crées.
Exercice 2 : Un cercle est défini par un point (Point) correspondant à son centre, et un rayon.
1. Reprendre la classe Point de l’exercice précédent.
2. Écrire la classe Cercle ainsi que son constructeur.
3. Ajouter la méthode toString qui affiche le centre et le rayon.
4. Ajouter la méthode equals(Cercle c) qui renvoie vrai si deux cercles ont le même centre et le même rayon.
6. Ajouter la méthode contains(Point p) qui renvoie vrai si un point p est contenu dans un cercle.
7. Qu'affiche le code suivant, expliquez.
Point p=new Point(1,2); Cercle c=new Cercle(p,1); Cercle c2=new Cercle(p,2);
Exercice 3 :
Que fournit le programme suivant ? Quels résultats fournit ce programme ?
class Entier{ class A{
private int n ; private int n ;
public Entier (int nn) { n = nn ; } public A (int nn){n = nn ;}
public void incr (int dn) { n += dn ; } public int getn (){ return n ;}
public void imprime () { System.out.println (n) ; } public void setn (int nn){ n = nn ;}
} }
public class TstEnt{ class Util{
public static void main (String args[]){ public static void incre (A a, int p)
Entier n1 = new Entier (2); { a.setn(a.getn()+p);}
System.out.print ("n1 = ") ; n1.imprime() ; public static void incre (int n, int p)
{ n += p ;}
Entier n2 = new Entier (5) ; }
System.out.print ("n2 = ") ; n2.imprime() ; public class Trans{
n1.incr(3) ; public static void main (String args[]){
System.out.print ("n1 = ") ; n1.imprime() ; A a = new A(2) ; int n = 2 ;
System.out.println ("n1 == n2 est " + (n1 == n2)) ; System.out.println ("valeur de a avant:"+a.getn());
n1 = n2 ; n2.incr(12) ; Util.incre (a, 5) ;
System.out.print ("n2 = ") ; n2.imprime() ; System.out.println ("valeur de a apres:"+a.getn()) ;
System.out.print ("n1 = ") ; n1.imprime() ; System.out.println ("valeur de n avant:" +n) ;
System.out.println ("n1 == n2 est " + (n1 == n2)) ; Util.incre (n, 5) ;
}} System.out.println ("valeur de n apres : " + n) ;
}}
Exercice 4 : On s’intéresse à la gestion des notes des étudiants inscrits dans une formation. Une formation est
caractérisée par son code, son nom, ses étudiants (200 étudiants au maximum), et le nombre des étudiants
inscrits. Un étudiant est caractérisé par les informations suivantes : un numéro, un nom, un prénom, et un
ensemble de 4 notes que vous pouvez mettre sous forme de tableau. Chaque note correspond à un module qui a
un nom, la note qui a eu l’étudiant dans ce module, et un coefficient
1. Proposer une modélisation orientée objet à ce problème (Donner les classes, leurs attributs et leurs
méthodes) sous forme d’un schéma, en précisant les relations entre les classes.
2. Définissez le code des classes Formation, Etudiant, et Module en les dotant des propriétés
précédentes.
3. Ajouter deux constructeurs pour chaque classe (sans argument et constructeur avec arguments).
4. Pour la classe Etudiant, les numéros sont attribués lors de la création de l’objet.
5. Tous les champs sont privés, par conséquent il faut mettre en place l’interface d’encapsulation de
chaque classe (les getters et les setters)
6. Dans la classe Etudiant :
Ajouter une méthode qui calcule la moyenne d’un étudiant.
8. Vous ferez une classe exécutable TesteFormation qui testera les trois classes et les différentes
méthodes. Voici le squelette de cette classe.
Module[] notes={m1,m2,m3,m4};
f.ajouter(E);
f.ajouter(new Etudiant(“Karim”,”Rachid”,notes2));
…}}
Une liste chaînée est une suite d’éléments. Chaque élément est connecté à l’élément qui le précède
dans la liste (s’il existe) ainsi qu’à l’élément qui le suit dans la liste (s’il existe). Ici, chaque élément va
également contenir un entier.
1. Écrivez une classe Element représentant un élément d’une liste chaînée.
2. Ajouter un constructeur qui permet de connecter l’élément et d’initialiser la valeur qu’il contient.
Exercice 6 :
1. Reprendre l’exercice 4 en stockant les étudiants dans une liste chaînée, ce qui va nous
permettre de gérer un nombre illimité d’étudiants.
2. Modifier la modélisation en créant un lien entre la classe Formation et la classe Module, c-à-d
une formation propose des modules d’enseignement.