:: Enseignements :: IMAC :: IMAC2 :: IMAC2 2011-2012 :: Programmation Java ::
[LOGO]

Héritage


Nous étudions le mécanisme d'héritage de classes en Java à travers ces quelques exercices.

Préliminaire : utilisation d'Eclipse

Il est possible d'utiliser un éditeur de texte classique pour développer ses programmes Java. Des environnements de développement intégrés offrent certaines fonctionnalités supplémentaires agréables telle que l'autocomplètement, l'accès direct à la Javadoc, la recompilation automatique ainsi que des possibilités de refactoring (déplacement de classes, renommage de champs, classes...). Parmi eux on compte pour le langage Java on compte Eclipse et Netbeans.

Pour commencer, on utilise Eclipse pour créer un nouveau projet Java et lui ajouter les classes écrites lors du premier TD. On pourra ensuite exécuter les méthodes main des classes à l'aide du menu run.

Exercice 1 - De nouveaux constructeurs

Nous cherchons à améliorer la classe Book en lui ajoutant de nouveaux constructeurs : Comment éviter la redondance de code ? Tester chaque constructeur dans la méthode main.

Exercice 2 - Comptage de livres

Le but de cet exercice est d'apprendre a utiliser les destructeurs, ainsi que les membres et méthodes statiques.

On souhaite compter le nombre de Book instanciés. Il nous faut donc :
  • un nouveau membre count partagé par toutes les instances
  • qui est incrémenté à chaque création d'un livre
  • qui est décrémenté à chaque fois qu'un livre est détruit
On souhaite également pouvoir connaitre ce nombre d'instances, sans avoir sous la main une instance.

Proposer des solutions à ces problèmes, puis tester cela de la façon suivante : construire deux livres, afficher le nombre d'instances, détruire un des livres, afficher le nombre d'instances. Que remarquez vous?

Exercice 3 - Un peu de variété

Nous allons maintenant faire un peu d'héritage.
  • Creer une classe Comic qui hérite de Book et qui contient en plus le nom du dessinateur (on considerera qu'il peut être différent de l'auteur), et un booléen qui indique si la BD est en couleur ou non.
  • Faire des constructeurs adaptés, dont un considérant que l'auteur et le dessinateur sont la même personne. Le système de compte des livres est-il encore efficace? Si ce n'est pas le cas, c'est que vous avez mal travaillé ;)
  • Redefinir les méthodes toString() et equals(Object o) et les tester.

Exercice 4 - Une bibliothèque améliorée

On souhaite que notre bibliothèque soit un peu plus efficace, et fournir plusieurs méthodes :
  • Une méthode d'affichage abrégé du contenu, n'affichant que les titres des livres
  • Une méthode retournant une liste des bandes dessinées contenues dans la bibliothèque (Voir LinkedList)
  • Un ensemble de méthodes retournant une liste des livres ayant certaines propriétés (titre, auteur, BD en couleurs)
  • Un ensemble de méthodes affichant les livres ayant certaines propriétés (titre, auteur, BD en couleurs)
Que faut il ajouter aux classes Book et Comic pour pouvoir faire cela ? Faites le nécessaire et implanter ces méthodes.

Exercice 5 - Une bibliothèque exceptionnellement... vide

On souhaite que notre bibliothèque puisse nous retourner le prix moyen d'un livre.
  • Utiliser une boucle foreach et une division par le nombre de livres, sans faire de tests.
  • Que ce passe-t-il si on teste dans une bibliothèque vide ? Comment y remédier ?