Correction TD2

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 6

Correction TD2 : 2022-2023

Exercice 1 :
Classe Document
package EX1;

public class Document {


static private int numeroSuivant = 0;
private int numero;
private String titre;
public Document(String titre) {
this.numero = ++numeroSuivant;
this.titre = titre;
}
public int getNumero(){
return numero;
}
public String getTitre(){
return titre;
}
public String toString() {
return ("numero: "+numero+" titre: "+titre);
}
}

Classe livre
package EX1;
public class Livre extends Document{
private String auteur;
private int nbPages;
public Livre(String titre, String auteur, int nbPages) {
super(titre);
this.nbPages = nbPages;
this.auteur = auteur;
}
public String getAuteur() {
return auteur;
}
public int getNombreDePages() {
return nbPages;
}
public String toString(){
return (super.toString()+" auteur: "+getAuteur()+" pages: "+getNombreDePages());
}
}

Classe Dictionnaire
package EX1;

public class Dictionnaire extends Document {


private int nbTomes;
private String langue;
public Dictionnaire(String titre, int nbTomes, String langue) {
super(titre);
this.nbTomes = nbTomes;
this.langue = langue;
}
public int getNombreDeTomes() {
return nbTomes;
}
public String getLangue() {
return langue;
}
public String toString() {
return (super.toString()+" tomes: "+getNombreDeTomes()+" langue: "+getLangue());
}
}

Classe Biblioteque
package EX1;

import EX2.Etudiant;
import EX2.EtudiantDoctorat;
import EX2.EtudiantLicence;
import EX2.EtudiantMaster;

public class Bibliotheque {


public static void main(String[] args) {
//Création des livres
Livre L1= new Livre("L'étranger", "Albert Camus", 223);
Livre L2= new Livre("Histoire de la tunisie", "Habib Boulares",
295);
//Création des dictionnaires
Dictionnaire D1= new Dictionnaire("LAROUSSE", 1240,
"Français");
Dictionnaire D2= new Dictionnaire("CAMBRIDGE DICTIONARY", 156,
"Anglais");
// Affichage
System.out.println("La liste des documents : ");
System.out.println("\n************* La liste des livres:
*************");
System.out.println(L1.toString());
System.out.println(L2.toString());
System.out.println("\n************* La liste des dictionnaires:
*************");
System.out.println(D1.toString());
System.out.println(D2.toString());

Exercice 2 :
Classe Etudiant
package EX2;
public abstract class Etudiant {
private String nom;
private String adresse;
private int numero;

public String getnom()


{
return nom;

}
public void setnom(String nom)
{
this.nom=nom;
}

public String getadresse()


{
return adresse;

}
public void setadresse(String adresse)
{
this.adresse=adresse;
}

public int getnumero()


{
return numero;

}
public void setnumero(int numero)
{
this.numero=numero;
}
public Etudiant(String nom, String adresse, int numero) {
this.nom = nom;
this.adresse = adresse;
this.numero = numero;
}
// Définition des méthodes concretes
// Définition de la méthode afficher()
public void afficher() {
System.out.println("\n Nom: " +this.nom.toUpperCase()+ "\n Adresse: "
+this.adresse.toUpperCase()+ "\n Numéro: " +this.numero);

}
// Surcharge de la méthode afficher()
public void afficher(boolean compact)
{
if (compact=false)
System.out.println("\n Nom: " +this.nom.toUpperCase()+ "\n Adresse: "
+this.adresse.toUpperCase()+ "\n Numéro: " +this.numero);
else
System.out.print("[" +this.nom.toUpperCase()+ ","
+this.adresse.toUpperCase()+ ", " +this.numero);
}
// Méthode abstraite
public abstract void afficherProfil();
}

Classe EtudiantLicence
package EX2;

public class EtudiantLicence extends Etudiant{


protected String parcours;
public EtudiantLicence(String nom, String adresse, int numero, String parcours) {
// Appel implicite au constructeur Etudiant
super(nom, adresse, numero);
// Constructeur dérivé
this.parcours = parcours;
}
// Redéfinition de la méthode afficher()
public void afficher() {
super.afficher() ;
System.out.println ("Parcours: " + this.parcours);
}
public void afficher(boolean compact) {
super.afficher(true) ;
System.out.println("," + this.parcours+ "]");
}
public void afficherProfil() {
System.out.println ("\n************* Etudiants en Licence: *************");
}
}

Classe EtudiantMaster
package EX2;

public class EtudiantMaster extends Etudiant{


protected String specialite;
public EtudiantMaster(String nom, String adresse, int numero, String specialite) {
// Appel implicite au constructeur Etudiant
super(nom, adresse, numero);
// Constructeur dérivé
this.specialite = specialite;
}
//Redéfinition de la méthode afficher()
public void afficher() {
super.afficher() ;
System.out.println ("Spécialité: " + this.specialite);
}
public void afficher(boolean compact) {
super.afficher(true) ;
System.out.println("," + this.specialite+ "]");
}
public void afficherProfil() {
System.out.println ("\n************* Etudiants en Master: *************");

}
}

Classe EtudianDoctorat
package EX2;

public class EtudiantDoctorat extends Etudiant{


protected String directeur;
public EtudiantDoctorat(String nom, String adresse, int numero, String
directeur) {
// Appel implicite au constructeur Etudiant
super(nom, adresse, numero);
// Constructeur dérivé
this.directeur = directeur;
}
// Redéfinition de la méthode afficher()
public void afficher() {
super.afficher() ;
System.out.println ("Directeur de thèse: " + this.directeur);
}
public void afficher(boolean compact) {
super.afficher(true) ;
System.out.println("," + this.directeur+ "]");
}
public void afficherProfil() {
System.out.println ("\n************* Etudiants en Doctorat:
*************");

}
}

Classe Main
package EX2;

package EX2;

public class Main {


public static void main(String[] args) {
//Création des étudiants Doctorat,Master et Licence
EtudiantDoctorat ED = new EtudiantDoctorat("CHACHIA Melek", "Sousse", 2,
"Pr BENHADJ Jihed");
EtudiantLicence EL = new EtudiantLicence("ALAMI Said", "Tunis", 24,
"Informatique");
EtudiantMaster EM = new EtudiantMaster("FRAJ Ali", "Sfax", 4,
"Recherche");
System.out.println("La liste des étudiants : ");
// Appels aux méthodes

// Affichage compact
ED.afficherProfil();
ED.afficher(true);
EL.afficherProfil();
EL.afficher(true);
EM.afficherProfil();
EM.afficher(true);
// Affichage ligne par ligne
/* ED.afficherProfil();
ED.afficher();
EL.afficherProfil();
EL.afficher();
EM.afficherProfil();
EM.afficher();*/

}
}

NB:
- Ne pas confondre redéfinition et surcharge des méthodes :
◼ On redéfinit une méthode quand une nouvelle méthode a la même
signature qu’une méthode héritée de la classe mère
◼ On surcharge une méthode quand une nouvelle méthode a le
même nom, mais pas la même signature, qu’une autre méthode de
la même classe

Vous aimerez peut-être aussi