0% ont trouvé ce document utile (0 vote)
15 vues31 pages

Correction TP3

Transféré par

Tayssir Semei
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
15 vues31 pages

Correction TP3

Transféré par

Tayssir Semei
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Programmation Orientée Objets

Fatma ELLOUZE

Correction TP 3
Auditoire : GEA2

1
Exercice 1

Objectif
Manipuler les classes abstraites et les interfaces

2
La classe
DateNaissance

3
public class DateNaissance {
private int journaiss;
private int moisnaiss;
private int anneenaiss;
public DateNaissance(int journaiss, int moisnaiss, int anneenaiss)
{
[Link] = journaiss;
[Link] = moisnaiss;
[Link] = anneenaiss;
}
@Override
public String toString() {
return "DateNaissance [journaiss=" + journaiss + ", moisnaiss=" +
moisnaiss + ",anneenaiss=" + anneenaiss + "]";
}
public int getAnnee() {
return anneenaiss;
}
}

4
La classe abstraite
Etudiant

5
public abstract class Etudiant {
private String nom;
private String prenom;
private DateNaissance datenaiss;
public Etudiant(String nom, String prenom, DateNaissance datenaiss)
{
[Link] = nom;
[Link] = prenom;
[Link] = datenaiss;
}
@Override
public String toString() {
return "Etudiant [nom=" + nom + ", prenom=" + prenom + ",
datenaiss=" + datenaiss
+ "]";
}
public abstract boolean memeactivite(String activite);
}

6
L’ interface
AffichageEtud
public interface AffichageEtud {

void affichEtudiant ();

7
La classe
EtudiantSportif

8
public class EtudiantSportif extends Etudiant implements
AffichageEtud {
private String sport;
public EtudiantSportif(String nom, String prenom, DateNaissance
datenaiss, String sport) {
super(nom, prenom, datenaiss);
[Link] = sport;
}
public String getSport() {
return sport;
}
@Override
public String toString() {
return [Link]() + "EtudiantSportif [sport=" + sport + "]";
}
public void affichEtudiant() {
[Link]([Link]());
}
public boolean memeactivite(String activite) {
return [Link](activite);
9
} }
La classe
TesteEtudiantSportif

10
public class TesteEtudiantSportif {
public static void main(String[] args) {
DateNaissance d1 = new DateNaissance(23, 06, 1995);
DateNaissance d2 = new DateNaissance(02, 02, 1993);
EtudiantSportif e1 = new EtudiantSportif("Ben Abdallah", "Ibrahim",
d1, "football");
EtudiantSportif e2 = new EtudiantSportif("Ouali", "selsebil", d2,
"gymnastique");

if ([Link]([Link]()))
[Link]("les deux etudiants ont la meme activité
sportive");
else
[Link]("les deux etudiants ont des activités
differentes");
[Link]();
[Link]();
}
}

11
Exercice 2

Objectif
Manipulation des concepts de l’héritage : Tableau
d’objets et polymorphisme

12
13
La classe
Personne
•Les attributs jour, mois et année de type entier
•Un constructeur avec paramètres
•Une méthode toString () renvoie la date de naissance sous forme d’une chaine
de caractère (exemple d’affichage "la date de naissance est: 23/12/1997")

14
package exercice3;
public abstract class Personne {
protected String nom;
protected int age;
public Personne (String nom, int age)
{
[Link]=nom;
[Link]=age;
}
public Personne ()
{}
public String getNom() {
return nom;
}
public void setNom(String nom) {
[Link] = nom;
}
public String toString() {
return "Personne [nom=" + nom + ", age=" + age + "]";
} 15
}
La classe
Joueur
•Un joueur est caractérisé par un nom, un âge, un numéro et un nombre de
points. De plus, deux joueurs sont égaux s’ils ont le même numéro. La classe
Joueur hérite de la classe Personne.

16
package exercice3;
public class Joueur extends Personne {
private String numero;
private int nbPoints;
public Joueur(String nom, int age,String numero)
{
super(nom, age);
[Link]=numero;
[Link]=0;
}
public int getNbPoints() {
return nbPoints;
}
public void setNbPoints(int nbPoints) {
[Link] = nbPoints;
}

17
public boolean equals(Object obj){
if(obj instanceof Joueur){
Joueur j = (Joueur) obj;
if([Link]([Link]))
return true;
}
return false;
}

@Override
public String toString() {
return "Joueur ["+ [Link]()+ "numero=" + numero + ", nbPoints=" + nbPoints
+ "]";
}

}// Fin de la classe Joueur

18
La classe
Ramasseur
•Un ramasseur est caractérisé par son nom et son âge qui doit être entre 12 et
16 ans. La classe Ramasseur hérite, elle aussi, de la classe Personne. Le
constructeur de cette classe fille affiche un message d’erreur et arrête le
programme si l’âge du ramasseur est supérieur à 16 ou inférieur à 12 ans.

19
package exercice3;

public class Ramasseur extends Personne {

public Ramasseur(String nom, int age)


{
super(nom, age);
if (!(age>=12 && age<=16))

{
[Link]("L'age doit être entre 12 et 16"); // un
message d’erreur qui s’affiche en rouge dans la console

[Link](0); // pour arreter le programme


}

}
} // Fin de la classe Ramasseur

20
La classe
Match
•Chaque match est joué par deux joueurs.
•A chaque match on attribue quatre ramasseurs de balles.
•Un match se conclut nécessairement par un vainqueur (celui qui a gagné le
match). La méthode getVainqueur()affiche un message d’erreur, si le vainqueur
n’est pas encore connu (l’attribut vainqueur est à null).
•La méthode setVainqueur() définit le vainqueur du match et lui ajoute 10
points. Elle affiche un message d’erreur si son paramètre n’est pas l’un des
deux joueurs du match.

21
package exercice3;
public class Match {
private Joueur joueur1;
private Joueur joueur2;
private Joueur vainqueur;
private Personne [] ramasseurs;
private int nbR;
public Match (Joueur joueur1, Joueur joueur2)
{
this.joueur1=joueur1;
this.joueur2=joueur2;
[Link]=null;
[Link]= new Ramasseur [4];
[Link]=0;
}
public void addRamasseur(Ramasseur r)
{if (nbR==0) // si c'est le premier ramasseur à ajouter
{[Link]("C'est le premier ramasseur à ajouter");
ramasseurs[0]=r;
nbR++;} 22
public void addRamasseur(Ramasseur r)
…..
else if (nbR==4) //Si le tableau est rempli
[Link]("Le nombre de ramasseurs est déjà 4");
else if (nbR<4) // si ce n'est pas le premier ramasseur et le tableau
n'est pas encore rempli
{ boolean trouv=false;
for (int i=0; i<nbR; i++)
//On vérifie que le ramasseur à ajouter n'existe pas dans le tableau
if (ramasseurs[i].getNom().equals([Link]()))
{[Link]("Ce ramasseur existe déjà");
trouv=true;
break; //sortir de la boucle for
}
if (trouv==false) //
{
ramasseurs[nbR]=r;
nbR++;
}
}
23
}// fin de addRamasseur
public Joueur getVainqueur() {

if (vainqueur==null)
[Link]("Erreur: le vainqueur n'est pas encore
saisi");
return vainqueur;
}

public void setVainqueur(Joueur vainqueur) {


[Link] = vainqueur;
[Link]([Link]()+10);

24
La classe
TestMatch
2. Ecrivez une classe TestMatch dans laquelle vous mettez la méthode main(). Définissez dans cette
méthode deux joueurs p1 et p2, quatre ramasseurs r1, r2, r3 et r4, et un match m. Ajoutez les
instructions nécessaires pour :
3. ajouter p1 comme vainqueur de m et
4. afficher le nom du vainqueur de m.

25
package exercice3;
public class TestMatch {

public static void main(String[] args) {


Joueur p1, p2;
Ramasseur r1, r2, r3, r4;
Match m;

p1= new Joueur("Roger Federer", 38, "j1");


p2= new Joueur("Rafael Nadal", 33, "j2");
r1= new Ramasseur ("Alain", 13);
r2= new Ramasseur ("Eric", 14);
r3= new Ramasseur ("Damien", 13);
r4= new Ramasseur ("Benoit", 11); //inférieur à 12
m= new Match(p1,p2);
[Link](r1);
[Link](r2);
[Link](r3);
[Link](r4);
26
[Link]([Link]()); // afficher le vainqueur avant de
l'affecter (null)

[Link](p1);

[Link]("le vainqueur du match m est " +


[Link]());
// affiche le vainqueur du match m est le Joueur [nom=Roger Federer,
age=38, numero=j1, nbPoints=10]
}
}

27
• Changer le message d’erreur qui est dans le
constructeur de la classe Ramasseur par (1) la
génération d’une exception personnalisée et
(2) le traitement de cette exception

28
package exercice3;

public class AgeException extends Exception {

String message;
public AgeException(String m)
{
[Link]=m;
}

29
public Ramasseur(String nom, int age) throws AgeException
{
super(nom, age);
if (!(age>=12 && age<=16))

{ throw new AgeException("Exception : L'age doit être


entre 12 et 16");

30
try {
r1= new Ramasseur ("Alain", 13);
r2= new Ramasseur ("Eric", 14);
r3= new Ramasseur ("Damien", 13);
r4= new Ramasseur ("Benoit", 11);
}
catch (AgeException a)
{
[Link]([Link]);
}

31

Vous aimerez peut-être aussi