0% ont trouvé ce document utile (0 vote)
28 vues6 pages

TD 4

Transféré par

nouhailacampus
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)
28 vues6 pages

TD 4

Transféré par

nouhailacampus
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

Exercice 1

1. Affichage de la méthode principale main


Lors de l'exécution, le constructeur de la classe C est appelé. Voici l'ordre des
constructeurs :

1. Le constructeur de A est exécuté : "constructeur de A".

2. Le constructeur de B(int x) appelle this(), qui invoque le constructeur sans


paramètre de B : "constructeur de B".

3. Ensuite, le constructeur B(int x) continue : "autre constructeur de B".

4. Enfin, le constructeur de C : "constructeur de C".

constructeur de A

constructeur de B

autre constructeur de B

constructeur de C

2. Suppression de this() dans la classe B


Avec cette suppression, le constructeur B(int x) n'appelle plus le constructeur sans
paramètre de B. Voici l'ordre des constructeurs :

1. Le constructeur de A est exécuté : "constructeur de A".

2. Le constructeur B(int x) est exécuté directement : "autre constructeur de B".

3. Le constructeur de C est exécuté : "constructeur de C".

constructeur de A

autre constructeur de B

constructeur de C

3. Suppression de super(3) dans la classe C


Avec cette suppression, le constructeur sans paramètre de B est appelé par défaut.
Voici l'ordre des constructeurs :

1. Le constructeur de A est exécuté : "constructeur de A".

2. Le constructeur sans paramètre de B est exécuté : "constructeur de B".

3. Le constructeur de C est exécuté : "constructeur de C".


constructeur de A

constructeur de B

constructeur de C

4. Suppression du constructeur sans paramètre de la classe B


Le constructeur de C tente d'appeler super(3) dans la classe B. Comme le constructeur
sans paramètre n'existe pas dans B, une erreur de compilation survient.

Erreur de compilation

Exercice 2

Cas et résultats :

1. B b = new B(); b.e();

o Appelle la méthode e de la classe B.

o Affichage : "method e de B".

2. A ab = new B(); ab.e();

o Appelle la méthode e de la classe B (polymorphisme).

o Affichage : "method e de B".

3. B ba = new A(); ba.e();

o Erreur de compilation : impossible d'assigner une instance de A à une


référence de type B.

o Résultat : Erreur de compilation.

4. B b = new B(); b.e("zz");

o Appelle la méthode e(String m) de la classe B.

o Affichage : "method2 e de B zz".

5. A a = new A(); B b = (B)a;

o Erreur d'exécution : impossible de caster une instance de A en B.

o Résultat : Erreur d'exécution.

6. A a = new B(); ((B)a).e("zz");

o Caste l'instance de B en B et appelle e(String m).

o Affichage : "method2 e de B zz".


Exercice 3

Modélisation objet :

1. Classes et relations :

o Classe Vehicule (classe mère).

▪ Attributs : numéro, marque, dateAchat, prixAchat, prixCourant.

▪ Méthodes : calculerPrixCourant(), afficher().

o Classe Voiture (hérite de Vehicule).

▪ Attributs : nombrePortes, puissance, kilometrage.

▪ Méthodes : surcharge de calculerPrixCourant().

o Classe Avion (hérite de Vehicule).

▪ Attributs : typeMoteur, heuresDeVol.

▪ Méthodes : surcharge de calculerPrixCourant().

2. Code Java :

class Vehicule {

protected String marque;

protected String dateAchat;

protected double prixAchat;

protected double prixCourant;

public Vehicule(String marque, String dateAchat, double prixAchat) {

[Link] = marque;

[Link] = dateAchat;

[Link] = prixAchat;

public void calculerPrixCourant() {


// Implémentation générale

public void afficher() {

[Link]("Marque : " + marque);

[Link]("Prix courant : " + prixCourant);

class Voiture extends Vehicule {

private int nombrePortes;

private int puissance;

private int kilometrage;

public Voiture(String marque, String dateAchat, double prixAchat, int nombrePortes,


int puissance, int kilometrage) {

super(marque, dateAchat, prixAchat);

[Link] = nombrePortes;

[Link] = puissance;

[Link] = kilometrage;

@Override

public void calculerPrixCourant() {

[Link]();

// Calcul spécifique pour les voitures

}
class Avion extends Vehicule {

private String typeMoteur;

private int heuresDeVol;

public Avion(String marque, String dateAchat, double prixAchat, String typeMoteur, int
heuresDeVol) {

super(marque, dateAchat, prixAchat);

[Link] = typeMoteur;

[Link] = heuresDeVol;

@Override

public void calculerPrixCourant() {

[Link]();

// Calcul spécifique pour les avions

Exercice 4

1. Affichage lors de l'exécution :

• Film f1 :

o Titre : Le cas Richard Jewell

o Réalisateur : Clint Eastwood

o Durée : 209

o Film récent.

• Film f2 :
o Titre : Antoinette dans les Cévennes

o Réalisateur : Carole Vignal

o Durée : 127

o Film récent.

• Serie s1 :

o Pas d'affichage correct (défaut dans toString).

2. Décision de la récence :
Le programme vérifie si l'année du film est supérieure ou égale à 2019 via la méthode
estRecent().

3. Amélioration des affichages :


Modifier la méthode toString pour gérer toutes les sous-classes correctement.

Vous aimerez peut-être aussi