classe abstraite
et interface

Une classe qui n'aura pas d'objet

Source de FormeGeometrique1.java
abstract public class FormeGeometrique1 {
  double posX, posY;
  void deplacer(double x,double y) {
    posX=x;
    posY=y;
  }
  void afficherPosition() {
    System.out.println("position : ("
                    +posX+","+posY+")");
  }
  abstract double surface() ;
  abstract double perimetre() ;
}

Source de Rectangle7.java
public class Rectangle7 
             extends FormeGeometrique1 {
  double largeur, hauteur;
  public Rectangle7() {
    posX=0; posY=0; largeur=0; hauteur=0;   
  }
  public Rectangle7(double x, double y, 
                    double la, double lo) {
    posX=x; posY=y; largeur=la; hauteur=lo;   
  }
  double surface() {
    return largeur * hauteur;
  }
  double perimetre() {
    return 2*(largeur + hauteur);
  }
}

Source de Cercle7.java
public class Cercle7 
             extends FormeGeometrique1 {
  double rayon;
  Cercle7(double x, double y, double r) {
    posX=x; posY=y; rayon=r;   
  }
  double surface() {
    return Math.PI*Math.pow(rayon, 2.);
  }
  double perimetre() {
    return 2*rayon*Math.PI;
  }
}

Source de Prog50.java
public class Prog50 {
  public static void main (String args[]) {
     Rectangle7 rect;
     Cercle7 cerc;
     rect = new Rectangle7(9,3,10,20);
     cerc = new Cercle7(43,32,100);
     System.out.print("cercle ");
     cerc.afficherPosition();
     System.out.print("rectangle ");
     rect.afficherPosition();
     cerc.deplacer(66,88);
     System.out.print("cercle maintenant ");
     cerc.afficherPosition();
  }
}

classe abstraite :

un héritage presque multiple

Source de Dessinable1.java
import java.awt.Graphics; 
public interface Dessinable1 {
  public void dessiner(Graphics g);
}

Source de Rectangle8.java
public class Rectangle8 
             extends Rectangle7 
             implements Dessinable1 {
  public Rectangle8(double x, double y,
                   double la, double lo) {
    super(x,y,la,lo);   
  }  
  public void dessiner(Graphics g) { 
    g.drawRect((int)posX, (int)posY, 
              (int)largeur, (int)hauteur); 
  } 
}

Source de Texte8.java
import java.awt.Graphics; 
public class Texte8 
             implements Dessinable1 {
  String texte;
  int posX, posY;
  public Texte8(String t,int x,int y) {
    texte=t; posX=x; posY=y;
  }
  public void dessiner(Graphics g) { 
    g.drawString(texte,
                (int)posX,(int)posY); 
  } 
}

Source de Prog51.java
import java.awt.Graphics;
import java.applet.Applet;
public class Prog51 extends Applet {
  Dessinable1 TabADessiner[];
  public void init() {
    Rectangle8 rect = 
      new Rectangle8(19.0,33.0,100.0,150.0);
    Texte8 text = 
      new Texte8("HELLO WORLD !", 50,50);
    TabADessiner = new Dessinable1[2];
    TabADessiner[0] = rect;
    TabADessiner[1] = text;
  }
  public void paint(Graphics g) {
    for (int i=0; i<TabADessiner.length; ++i)
      TabADessiner[i].dessiner(g);
  }
}

interface

l'interface Set

l'interface Comparable

exercices