ENPC - Objets et Patterns - Corrigés des premiers exercices de la séance 6

Exercice 1: classe abstraite AbstractMesurable

On peut effectivement remplacer l'utilisation de l'interface Mesurable par l'utilisation de l'héritage de la classe abstraite AbstractMesurabl suivante:

public abstract class AbstractMesurable { 
  /**
   * Permet de connaitre la surface de cette instance.
   */
  public abstract double surface();
  /**
   * Retourne l'instance de surface minimale.
   */
  public AbstractMesurable min(AbstractMesurable am) {
    return (surface() < am.surface()) ? this : am;
  }
  public static void main(String[] args) {
    Point p = new Point();
    Disque d = new Disque(p,1);
    Anneau a = new Anneau(p,1,0.5);
    Carre c = new Carre(p,1);
    System.out.println(d.min(a));
    System.out.println(a.min(c));
    System.out.println(d.min(c));
  }
}

Les autres classes deviennent alors:

public class Carre extends AbstractMesurable { ... }
public class Disque extends AbstractMesurable { ... }
public class Anneau extends Disque { ... }

Exercice 2: classe abstraite héritant d'interface

On peut également implémenter l'interface Mesurable existante pour définir la classe abstraite AbstractMesurable. Comme elle hérite d'une méthode abstraite sans la définir, elle doit également être abstraite.

public abstract class AbstractMesurable implements Mesurable { 
  /**
   * Retourne l'instance de surface minimale.
   */
  public AbstractMesurable min(AbstractMesurable am) {
    return (surface() < am.surface()) ? this : am;
  }
}

Corrigés des exercices suivants


Etienne.Duris[at]univ-mlv.fr - © École Nationale des Ponts et Chaussées - Décembre 2000 - http://www-igm.univ-mlv.fr/~duris/ENPC/index2000.html