:: Enseignements :: ESIPE :: E3INFO :: 2012-2013 :: 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 une 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 éviter ce warning ?
    Ré-écrire le code du main en conséquence.
  4. Que fait le code suivant ?
  5. Transformer le code précédent pour éviter les warnings. 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'arbres.
L'ensemble des classes devront être définies dans le paquetage fr.umlv.expr si aucun paquetage n'est indiqué.

On veut un type commun fr.umlv.expr.Expr représentant des expressions arithmétiques qui peuvent être soit une valeur réelle (de type fr.umlv.expr.Value) soit une opération d'addition (de type fr.umlv.expr.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. Écrire les trois classes Expr, Value et Add et leurs méthodes double eval() ainsi qu'une classe fr.umlv.expr.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 toujours être privés !