hantouma correction zaz louz
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]1. Apr`es avoir étudié les différences et les points communs entre les quatre premi`eres classes
que nous avons distinguées, décrivez la ou les interfaces utiles et précisez les classes qui les
implémenteront.
Correction :
//fichier Drawable.java
public interface Drawable{
// choisis une couleur
void setColor( int color) ;
// retourner la couleur
int getColor() ;
// dessiner
void draw() ;
}
//fichier Moveable.java
public interface Moveable{
void translate( int dx , int dy ) ;
}
La classe Point implementera l’interface Moveable. Les classes Segment, Triangle et Rectangle
implémenteront les interfaces Moveable et Drawable.
2. Décrire la méthode static de la classe Graphique qui permet d’afficher un tableau de
figures géométriques (ce qui permettra de bien nous convaincre que la réponse `a la question
précédente est un choix judicieux).
Correction :
public class Graphique{
public static void drawGraph( Drawable[] graph ){
for( int i = 0 ; i < graph.length ; i++ ){
( graph[i] ).draw() ;
}
}
public static void main( String[] argv ){
Point p1 = new Point( 0 , 0 ) ;
Point p2 = new Point( 0 , 2 ) ;
Point p3 = new Point( 1 , 1 ) ;
Point p4 = new Point( 3 , 3 ) ;
Triangle t = new Triangle( p1 , p2 , p3 , 0 ) ;
Segment s = new Segment( p3 , p4 , 1 ) ;
Drawable [] graph = { t , s } ;
drawGraph(graph) ;
}
}
3. Vous avez déj`a étudié une classe Point. Sans écrire toutes les méthodes que vous utiliserez
pour celle-ci, donnez les constructeurs que vous utiliserez le plus vraisemblablement dans
le reste du programme, la méthode toString et le squelette de cette classe.
Correction :
public class Point implements Moveable{
private int x ;
private int y ;
public Point( int x , int y ){
this.x = x ;
this.y = y ;
}
public Point( Point p ){
this.x = p.x ;
this.y = p.y ;
}
public int getX(){
return x ;
}
public int getY(){
return y ;
}
public void setX( int x ){
this.x = x ;
}
public void setY( int y ){
this.y = y ;
}
public String toString(){
return( "(" + x + "," + y + ")" ) ;
}
public void translate( int dx , int dy ){
x = x + dx ;
y = y + dy ;
}
2
Page 3
}
4. Donnez le constructeur de la classe Segment, et la méthode qui effectuera une translation.
Correction :
public class Segment implements Drawable , Moveable{
private Point beginning ;
private Point ending ;
private int aColor ;
Segment( Point beginning , Point ending , int aColor){
this.beginning = new Point( beginning ) ;
this.ending = new Point( ending ) ;
this.aColor = aColor ;
}
public int getColor(){
return aColor ;
}
public void setColor(int aColor){
this.aColor = aColor ;
}
public void translate ( int dx , int dy ){
beginning.translate ( dx , dy ) ;
ending.translate ( dx , dy ) ;
}
public void draw(){
System.out.println( aColor + " debut = " + beginning + " fin = " + ending ) ;
}
}
Attention : le constructeur doit recopier le point en utilisant le constructeur par copie de la classe
Point! En effet, un point est modifiable par translation et peut servir `a la création d’autres figures
elles mêmes translatables.
5. Décrire enti`erement la classe Triangle.
Correction :
public class Triangle implements Drawable , Moveable{
private Segment segment1 ;
private Segment segment2 ;
private Segment segment3 ;
private int aColor ;
Triangle( Point p1 , Point p2 , Point p3 , int aColor ){
this.segment1 = new Segment( p1 , p2 , aColor ) ;
this.segment2 = new Segment( p2 , p3 , aColor ) ;
this.segment3 = new Segment( p3 , p1 , aColor ) ;
this.aColor = aColor ;
}
public void setColor( int color){
this.aColor = aColor ;
}
public int getColor(){
return aColor ;
}
public void draw(){
3
Page 4
segment1.draw() ;
segment2.draw() ;
segment3.draw() ;
}
public void translate( int dx , int dy ){
segment1.translate( dx , dy ) ;
segment2.translate( dx , dy ) ;
segment3.translate( dx , dy ) ;
}
}