TD4 - Heritage - Interface - Classes Abstraites

Durée : 3h

Inès de Courchelle

Objectifs :

  • Mettre en place un heritage entre deux classes
  • Connaître les spécificités des mots clés static et final
  • Apprendre la notion de polymorphisme
  • Utiliser les classes abstraites
  • Manipuler des interfaces

Attention :

L’ensemble des exercices ci-dessous ne seront pas tous corrigés en classes

Exercice 1 : static, final ou les deux ?

Objectif :

Comprendre les subtilités entre ces différents mots clés dans la programmation JAVA

À toi de jouer

Indiquer si l’instruction doit être static, final ou les deux :

  1. Je souhaite créer un comtpeur d’objet
  2. Je souhaite interdire l’héritage d’une classe
  3. Je souhaite utiliser une variable TVA sans instancier d’objet de la classe à laquelle, elle appartient
  4. Je souhaite utiliser une méthode permettant de calculer la TVA d’un prix
  5. Je souhaite interdire l’héritage d’une méthode
  6. Je souhaite interdire l’héritage d’une méthode, utilisant des variables prédéfinies

Exercice 2 : Héritage

Objectifs :

  • Réaliser des surcharges
  • Mettre en évidence le polymorphisme
  • Coder la relation d’héritage
  • Manipuler les concepts de redéfinition
  • Vérifier la visibilité des attributs entre les différentes classes
Bienvenue dans un monde peuplé de différent personnage. Un personnage est caractérisé par son nom, son prénom, sa boisson, son plat, sa resistance, son intelligence et sa quantité d’argent. Tous les attributs de la classe Personnage sont privés !

Un personnage peut :

  • Parler via une méthode parler (texte) qui affiche :
(nom du personnage) - << texte >>
  • Saluer un personnage. Cette méthode fait appel à la méthode parler !
Salut ! je suis <nom du personnage>, j'aime  <la boisson> et <le plat>
  • Boire sa boisson favorite. Cette méthode fait appel à la méthode parler !
J'ai soif ! je prendrais bien un verre de <boisson>
  • Manger son plat favori. Cette méthode fait appel à la méthode parler !
J'ai faim ! je prendrais bien un bon <plat> !
  • Perdre et gagner de l’argent. Ces deux méthodes prendront en paramètre la quantité d’argent à ajouter ou à enlever du personnage.

Pour manipuler chacun des attributs, un personnage possède des getters/setters pUublic

Un Sorcier

C’est un personnage qui peut jeter des sorts à d’autres personnage. La liste des sorts :

  • etourdir : fait baisser le niveau d’intelligence d’un personnage
  • voler : vole une quantité d’argent à un autre personnage
  • manipuler : changer le plat favori d’un autre personnage

Un Instructeur

C’est un personnage dont sa boisson préférée est le café. Il peut :

  • se faire voler tout son argent
  • instruire un autre personnage, et lui faire augmenter son niveau d’intelligence

Un Guerrier

C’est un personnage dont son plat préféré est le tofu. Il peut :

  • s’entrainer au combat lui permettant de gagner en resistance
  • gagner au combat contre un autre personnage et lui faire baisser son niveau de résistance

A toi de jouer !

  1. Écrire la classe Personnage
  2. Écrire les 3 classes :
    • Sorcier
    • Instructeur
    • Guerrier

Les sorciers, les guerriers et les Instructeurs possèdent tous les éléments de personnages. C’est-à-dire, il possède un nom, une boisson favorite, un plat … sans avoir besoin de l’écrire de nouveau (principe de l’héritage). Cependant, ils ont sans doute des attributs et/ou des méthodes supplémentaires !

  1. Créer la classe Main afin de tester l’ensemble des classes et des méthodes créées précédement.

Exercice 3 : Une interface, une classe abstraite !

Objectif : Connaître les spécificités des interfaces et de l’abstraction

Nous considérons le diagramme UML suivant :

Figure

Figure est une << interface >> qui possède les trois méthodes suivantes :

  • calculerPerimetre
  • calculerAir
  • Dessiner
  • Colorier

Polygone

Polygone est une classe abstraite qui possède les attributs suivants :

  • nbPoints
  • couleur

À toi de jouer

  1. Implémenter les différentes classes décrites ci-dessus
  2. Créer une classe main permettant de :
    • créer un tableau de Figure
    • ajouter 2 carrés et 2 rectangles au tableau
    • ajouter 3 cercles au tableau
    • ajouter 2 triangles
    • Afficher les informations suivantes pour chacun des polygones
  3. Comment afficher la couleur d’une figure, que ce soit un cercle ou pas ?
  4. Comment afficher le nombre de points dans la boucle, car cela dépend du type de la figure ?

TIPS

  • La création du tableau doit se faire de la manière suivante :
Figure [] fig = new Figure[10];
  • Exemple d’ajout d’objet dans le tableau
fig[0]= new Cercle (4,"rose");
  • Exemple de parcours d’un tableau
for (int i=0; i<fig.length;i++) { }
  • Attention au type des objets ICI
  • Bibliothèque Math ICI