|
Exercices sur la notion d'héritage et d'interface : commençons avec l'interface Drawable et la classe Point ! | Point.java |
|
Définition de la classe abstraite
Shape ... |
Shape.java
|
|
La classe BasicShape. |
BasicShape.java
|
|
Définition de la classe Circle
. |
Circle.java
|
|
Définition de la classe Polygone. |
Polygone.java
|
|
Définition de la classe Box
(une spécialisation de la classe Polygone). |
Box.java
|
import java.awt.*; interface Drawable { public void draw(Graphics g); } |
Exercice 1 :
import java.awt.* ; public abstract class Shape implements Drawable { protected Point position ; protected Color color; public void setPosition(int x, int y) { ... } public int[] getPosition() { ... } public int getX() { ... } public int getY() { ... } public void setColor(Color color) { ... } public Color getColor() { ... } abstract public void draw(Graphics g); } |
Ecrivez maintenant la classe BasicShape qui étend
la classe Shape, et fournit un constructeur ainsi que
l'implémentation de la méthode draw. L'appel à
cette méthode devra dessiner une petite croix (un '+'). Pour cela vous
devrez utiliser la méthode public void drawLine(int x, int y,
int xx, int yy) de la classe Graphics.
Ecrivez maintenant la classe Circle qui étendra
BasicShape et permettra de représenter un cercle
de rayon donné. Pour cela vous pourrez utiliser la méthode
public void drawOval(int x, int y, int width, int height) de la classe
Graphics (ici width == height == rayon ).
import java.awt.* ; public class TestShape { final static Point[] sommets = new Point[]{ new Point(0,0), new Point(20,0), new Point(40,40), new Point(60,0), new Point(80,0), new Point(50, 60), new Point(30,60) }; final static Shape[] shapes = { // J new Box( 50 , 70 , 100 , 20 , Color.red ) , new Box( 90 , 70 , 20 , 110 , Color.blue ) , new Circle( 50 , 150 , 60 , Color.green ) , new Circle( 70 , 170 , 20 , Color.white ) , new Box( 50 , 90 , 40 , 90 , Color.white ) , // a new Circle( 130 , 150 , 60 , Color.green ) , new Box( 170 , 180 , 20 , 30 , Color.blue ) , new Circle( 150 , 170 , 20 , Color.white ) , // v new Polygone(200, 150, sommets, Color.black ) , // a new Circle( 290 , 150 , 60 , Color.green ) , new Box( 330 , 180 , 20 , 30 , Color.blue ) , new Circle( 310 , 170 , 20 , Color.white ) , }; public static void main( String[] args ) { Ecran ecran = new Ecran(new Point(200 ,150) , new Point(400 , 250)); for (int i=0; i<shapes.length; i++) { ecran.addShape(shapes[i]); } ecran.on(); } } |