|
Le classe QuadratoLe rectangulos de nostre applet, vos lo ha certemente jam remarcate, es quadratos : igitur nos va construer un classe de objectos Quadrato (sin s). HereditageEcce primo iste nove classe :
import java.awt.*;
class Quadrato extends Rectangle { public int abscissa; public int ordinata; public Quadrato(int abscissa, int ordinata) { super(abscissa, ordinata, 10, 10); this.abscissa = abscissa; this.ordinata = ordinata; } public void paint(Graphics g) { g.fillRect(abscissa,ordinata,10,10); } }
Qualque explicationesHic, utilisante le parola clave super, nos indica al programma que nos construe le objecto Quadrato secun le mesme modello como un Rectangle, con le particularitate que le parametros width e height es fixate ab le commenciamento, definitivemente, a 10. Illo es un illustration del principio del hereditage in programmation orientate objecto : un classe derivate ab un altere classe heredita su attributos e methodos. Alsi, nostre classe Quadrato possede automaticamente le methodo inside(), pois que, nos lo ha viste, le classe Rectangle lo possede. this.MiAttributo = parametro1; Nos haberea potite del mesme maniera scriber hic : public Quadrato(int parametro1, int parametro2) { super(parametro1, parametro2, 10, 10); this.abscissa = parametro1; this.ordinata = parametro2; } Le programmatores ha prendite le habitude de utilisar le mesme nomine pro le attributos e le parametros del constructor : alsi, le parametro "abscissa" es directemente plus comprehensibile que "parametro1", etsi un formula como "this.ordinata = ordinata" es un pauc surprendente a prime vista ! Si vos compara iste classe Quadrato con le classe MiObjecto del passo 13, vos vide que il es punctos commun :
Un tabella de objectos QuadratoNos va ora utilisar iste nove classe in un applet. Nos va poter profitar de iste structura pro demandar a cata objecto Quadrato de exhibir su abscissa.
import java.applet.*;
import java.awt.*; public class applet16 extends Applet { int abscissa = 0; int ordinata = 30; Quadrato [] tabQuadrato = new Quadrato[10]; boolean intra; String t = new String(""); TextField T = new TextField(t, 5); public void init() { add(T); for (int i=0; i<10; i++) { tabQuadrato [i] = new Quadrato(abscissa,ordinata);--- appello del constructor de Quadrato abscissa +=12; }//for i }//init public void paint(Graphics g) { g.setColor(Color.black); for (int j=0;j<10;j++) { tabQuadrato[j].paint(g);--- appello del methodo paint() de Quadrato }//for j }//paint public boolean mouseDown(Event evt, int x, int y) { int k; for (k=0; k<10;k++) { intra =(tabQuadrato[k].inside(x,y)) ? true : false;--- methodo inside() de Rectangle que heredite Quadrato if (intra) { t=Integer.toString(tabQuadrato[k].abscissa);--- attributo abscissa del objecto Quadrato T.setText(t); } }//for k return true; } public boolean mouseUp(Event evt, int x, int y) { intra=false; t=""; T.setText(t); return true; } }
Ecce le resultato :
Le codice del classe preste al uso |
||
![]() |
![]() |