:: Enseignements :: Licence :: L3 :: 2009-2010 :: Programmation Objet avec Java ::
[LOGO]

Interface, classe abstraite, generics


Exercice 1 - List, LinkedList et ArrayList

  1. Expliquer ce que fait le code suivant :
    Quelle différence y a t'il entre LinkedList et ArrayList ?
  2. A quoi sert l'interface List ?
  3. Le code précédent compile avec un warning, que doit-on faire pour supprimer celui-ci ?
    Ré-écrire le code du main en conséquence
  4. De la même façon, transformer le code suivant :
    Quel est l'intérêt des generics en Java ?

Exercice 2 - Arbre d'héritage et expression

Le but de cet exercice est de construire un évaluateur d'expressions arithmétiques simples. Ces expressions sont représentées sous forme d'arbre.
L'ensemble des classes devront être définies dans le paquetage fr.umlv.calc si aucun paquetage n'est indiqué.

On veut un type commun fr.umlv.calc.Expr représentant des expressions arithmétiques qui peuvent être soit une valeur réelle (de type fr.umlv.calc.Value) soit une opération d'addition (de type fr.umlv.calc.Add) qui permet d'effectuer l'addition de deux expressions.
On veut de plus être capable d'évaluer ces expressions en utilisant la méthode eval().

  1. Ecrire les trois classes Expr, Value et Add et leurs méthodes double eval() ainsi qu'une classe fr.umlv.calc.main.Main de test.
  2. Implanter la méthode toString() sur les différentes expressions.
  3. Discuter sur le fait de transformer la classe Expr en classe abstraite ou en interface. Faîtes les changements qui s'imposent.
  4. Ajouter les classes Mult et Divide permettant d'effectuer respectivement la multiplication et la division.
  5. Refactoriser le code pour mettre à un seul endroit le code commun.
    Attention à bien mettre les bon modificateurs de visibilité. Les champs doivent être privés !