:: Enseignements :: IMAC :: 2eme année :: 2008-2009 :: Programmation Objet avec Java ::
[LOGO]

Héritage


Avant de commencer - Eclipse

  1. Ouvrez eclipse et creez un nouveau projet qui s'intitule Projet1.
  2. Ajoutez une nouvelle classe qui s'appelle Book et une autre qui s'appelle Library, et copiez le code du premier TD.
  3. Executez votre programme.

Exercice 1 - De nouveaux constructeurs

Dans cet exercice, nous allons améliorer la classe Book, par l'ajout de nouveaux constructeurs.
  1. Creer un constructeur ne prenant qu'un titre, un auteur, et un identifiant ISBN (le coût est initialisé à 0)
  2. Creer un constructeur ne prenant qu'un titre, un auteur, et un coût (l'ISBN est initialisé à "")
  3. Creer un constructeur ne prenant qu'un titre et un auteur.
Comment faire pour ne pas avoir de redondance de code ? Tester chaque constructeur dans le main.

Exercice 2 - Compter les livres

Le but de cet exercice est d'apprendre a utiliser les destructeurs, ainsi que les membres et méthodes statiques.
  1. On souhaite compter le nombre de Book instanciés. Il nous faut donc :
    1. un nouveau membre count partagé par toutes les instances
    2. qui est incrémenté à chaque création d'un livre
    3. qui est décrémenté à chaque fois qu'un livre est détruit
  2. 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.
  1. 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 booleen qui indique si la BD est en couleur ou non.
  2. 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é ;)
  3. Redefinir les méthodes toString() et equals(Object o) et les tester.

Exercice 4 - Une bibliothèque un peu mieux

On souhaite que notre bibliothèque soit un peu plus efficace, et fournir plusieurs méthodes :
  1. Une méthode d'affichage abrégé du contenu, n'affichant que les titres des livres
  2. Une méthode retournant une liste des bandes dessinées contenues dans la bibliothèque (Voir LinkedList)
  3. Un ensemble de méthodes retournant une liste des livres ayant certaines propriétés (titre, auteur, BD en couleurs)
  4. 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 - Les exceptions

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