/**
*Classesemi‐abstraitereprésentantlesfiguresgéométriquesdessinables.
*Lafigureàdessinerestenveloppéedanscetteclasse(wrapperclass).
*Lesméthodesaire()etperimetre()sontimplantéespardélégation.
*
*@authorPeterDAEHNE,HEG‐Genève
*@version2.2
*/
publicabstractclassFigureDessinable{
protectedFigurefigure;/*Lafigureenquestion*/
protectedjava.awt.Colorcouleur;/*Couleur*/
protectedintx,y;/*Origine*/
/*Constructeur*/
protectedFigureDessinable(Figurefigure){this.figure=figure;}
/*Retournelasurfacedelafigure*/
publicdoubleaire(){returnfigure.aire();}
/*Retournelepérimètredelafigure*/
publicdoubleperimetre(){returnfigure.perimetre();}
/*Dessindelafigure*/
publicabstractvoiddessine(java.awt.Graphicsg);
}//FigureDessinable
/**
*Figureconcrète:Cercledessinable.
*
*@authorPeterDAEHNE,HEG‐Genève
*@version2.2
*/
publicclassCercleDessinableextendsFigureDessinable{
/*Constructeurs*/
publicCercleDessinable(){super(newCercle());}
publicCercleDessinable(doublerayon){super(newCercle(rayon));}
publicCercleDessinable(java.awt.Colorc,doublerayon){this(rayon);couleur=c;}
publicCercleDessinable(intx,inty,doublerayon){this(rayon);this.x=x;this.y=y;}
publicCercleDessinable(java.awt.Colorc,intx,inty,doublerayon){this(x,y,rayon);couleur=c;}
/*Dessinducercle*/
publicvoiddessine(java.awt.Graphicsg){
g.setColor(couleur);
g.drawOval(x,y,(int)(((Cercle)figure).rayon),(int)(((Cercle)figure).rayon));
}//dessine
}//CercleDessinable
/**
*Figureconcrète:Rectangledessinable.
*
*@authorPeterDAEHNE,HEG‐Genève
*@version2.2
*/
publicclassRectangleDessinableextendsFigureDessinable{
/*Constructeurs*/
publicRectangleDessinable(){super(newRectangle());}
publicRectangleDessinable(doublelarg,doublehaut){super(newRectangle(larg,haut));}
publicRectangleDessinable(java.awt.Colorc,doublelarg,doublehaut){this(larg,haut);couleur=c;}
publicRectangleDessinable(intx,inty,doublelarg,doublehaut){this(larg,haut);this.x=x;this.y=y;}
publicRectangleDessinable(java.awt.Colorc,intx,inty,doublelarg,doublehaut){this(x,y,larg,haut);couleur=c;}
/*Dessindurectangle*/
publicvoiddessine(java.awt.Graphicsg){
g.setColor(couleur);
g.drawRect(x,y,(int)(((Rectangle)figure).larg),(int)(((Rectangle)figure).haut));
}//dessine
}//RectangleDessinable
/**
*Appletservantàreprésenterdesfiguresdessinables.
*
*@authorPeterDAEHNE,HEG‐Genève
*@version2.2
*/
publicclassDessinextendsjava.applet.Applet{
privateFigureDessinable[]dessins=newFigureDessinable[5];/*FigureDessinableestune"abstractclass"*/
/*Méthodeappeléeàl'initialisationdel'Applet*/
publicvoidinit(){
dessins[0]=newCercleDessinable(java.awt.Color.red,100,100,60.0);
dessins[1]=newRectangleDessinable(java.awt.Color.blue,200,200,100.0,50.0);
dessins[2]=newCercleDessinable(java.awt.Color.green,120,100,70.0);
dessins[3]=newCercleDessinable(java.awt.Color.yellow,140,100,80.0);
dessins[4]=newRectangleDessinable(java.awt.Color.cyan,250,260,40.0,120.0);
}//init
/*Méthodeeffectuanteffectivementl'affichage*/
publicvoidpaint(java.awt.Graphicsg){
for(inti=0;i<dessins.length;i++){dessins[i].dessine(g);}
}//paint
}//Dessin