Vous êtes sur la page 1sur 2

Compte-rendu 2 POO

Exercice 1

1. Créer la classe Personne qui contient :


a) un attribut nom de type String,
b) un attribut age de type int,
c) un constructeur avec deux paramètres,
d) une méthode afficher() qui affiche le nom et l’age,
2. Développer une classe nommée PersonneMain, publique, ne comportant pas d’attribut et
comportant une unique méthode main(). Au sein de cette méthode, créer deux objets de type
Personne et appeler leurs méthodes afficher().
3. Au sein de la classe Personne, créer un constructeur sans arguments, de signature
Personne() appelant le constructeur exhaustif de la question précédente au moyen du mot
clé this et initialisant respectivement les attributs nom et age à "SansNom" et 20.
4. Créer un constructeur de recopie, de signature Personne(Personne p) qui initialise les attributs de
l’objet à ceux de p. Modifier la méthode main() de PersonneMain en créant 3 personnes, l’une à
l’aide du constructeur exhaustif (complet), une autre avec le
constructeur par défaut et la dernière avec le constructeur de recopie. Ajouter dans main() les
instructions qui permet d’afficher les trois objets en appelant la méthode afficher().
5. Créer une classe Enseignant héritant de Personne et ayant deux attributs :
a) Un attribut nbHeuresCours, de type primitif int,
b) Un attribut Souriant, de type primitif boolean,
Créer un constructeur exhaustif appelant le constructeur de la super classe (celui de Personne) par
super (cet appel doit être la première ligne du constructeur d’Enseignant), puis initialisant ses
attributs (nbHeuresCours et Souriant),
6. Développer une classe Etudiant héritant de Personne et ayant trois attributs :
a) Un attribut classe de type String, propres
b) Un attribut noteMoyenne, de type primitif float,
c) Un attribut faineant, de type primitif boolean,
Créer un constructeur exhaustif appelant le constructeur de la classe parente (celui de Personne) par
super, puis initialisant ses attributs propres (noteMoyenne et faineant),
7. Créer une classe TesterEnseignantEleve ne comportant pas d’attribut et comportant une unique
méthode main(). Dans cette méthode, créer un objet de la classe Personne, de nom égal à "Salah" et
d’âge égal à 35. Créer un Enseignant, de même nom et âge, ayant nbHeuresCours égal à 50 et
Souriant mis à true. Toujour dans main, créer un Etudiant de nom "Ali", d’age égal à 20, ayant 12
comme noteMoyenne et fainéant mis à true. Appeler la méthode afficher() (qui est héritée de
Personne) de ces trois instances.
8. Dans la classe Personne, créer une nouvelle méthode afficher (surcharge), de signature void
afficher(boolean compact), qui affiche selon l’un des formats suivants. Si compact est égal à false,
l’affichage est le même que celui de signature void afficher(). Si compact est égal à true, l’affichage
sera de la forme [Nom, Age]
9. On se propose maintenant d’appliquer la Redéfinition de la méthode afficher(). Créer, au sein de
la classe Enseignant (resp. dans la classe Etudiant) une méthode de signature void afficher() qui
appelle la méthode afficher() de Personne (au moyen de super) puis qui affiche la chaîne
"Enseignant" (resp. "Etudiant").
10. Créer un tableau de 5 éléments de type Personne dans la méthode main()de la classe
TesterEnseignantEtudiant ; initialiser ce tableau avec 2 instances d’objet de type Enseignant et
3 instances de type Etudiant. Effectuer une boucle for sur les éléments du tableau ; dans le

1
corps de la boucle, afficher s’il s’agit d’un Etudiant ou d’un Enseignant en se servant de l’opérateur
instanceof, puis effectuer un appel à la méthode afficher().

Exercice 2
Fournissez la classe Cercle conçue de manière à ce que le programme suivant fonctionne
correctement:
class TestCercle {
public static void main(String [] args)
{
// Création d'un cercle de rayon 3.5
Cercle c1 = new Cercle(3.5);
/* Retourne le cercle résultant de l'agrandissement appliqué sur c1*/
Cercle c2 = c1.agrandir(2D);
/* Affiche : c1 =(3.5) le paramètre 1 est l'indice du cercle */
c1.affiche(1);
/* Affiche : c2 =(5.5) le paramètre 2 est l'indice du cercle */
c2.affiche(2);
/* On obtient sur écran: les deux cercles sont différents */
if (c1.egal(c2))
System.out.println("Les deux cercles sont égaux");
else
System.out.println("Les deux cercles sont différents");
}
}
Exercice 3
1. Définir la classe Date qui permet de représenter le format de date suivant 15/01/2021
Cette classe doit contenir les méthodes suivantes:
nombreJours: donne le nombre de jours pour le mois d'une date.
date Valide: permet de vérifier si une date est valide.
lendemain: donne la date de demain.
2. Ecrire la méthode main dans une classe TesterDate qui :
a) crée une date à partir des valeurs jour, mois et année introduits à partir de la ligne de
commande
b) affiche cette date sous le format précisé en haut
c) si la date est valide
 affiche le nombre de jours du mois de cette date affiche le nombre de jours du mois de cette date
 affiche le nombre de jours du mois de cette date affiche la date de demain
sinon
 affiche le nombre de jours du mois de cette date affiche un message d'erreur
Remarques:
1. respecter le principe de l'encapsulation en déclarant les attributs et les méthodes
2. Compléter la classe Date par d'autres méthodes si c'est nécessaire
3. Pour transformer une chaîne de caractères s en un int que l'on affecte à une variable entière
n on peut écrire n = Integer.parseInt(s);
parseInt est une méthode de la classe Integer (classe prédéfinie dans l'API de Java).