de cirkels en vierkanten maken trilbewegingen

 

 

 

 

  de cirkels en vierkantjes na 2 minuten trillen

 

de cirkels en vierkantjes na 2 minuten trillen

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

puntjes in de vierkantjes
 
puntjes in de vierkantjes omdat super.display();
is ingeschakeld zie regel 17

 

 

 

 

de vierkantjes trillen uit beeldde vierkantjes trillen uit beeld
omdat trillen in de subclass "Vierkant"
is ingeschakeld zie regel 25 t/m 28

 

 

 

 

 

 

 

 

 

puntjes in de cirkelspuntjes in de cirkels omdat super.display();
is ingeschakeld zie regel 20
De schets "polymorfisme met objecten in een array"                              terug naar de inleiding
 
Zie ook  "ster en veelhoekvormen"  een toepassing van polymorfisme.
 
Polymorfisme met cirkel en vierkant objecten in een array.  De vormen worden mbv 2 for lussen geconstrueerd
dit met een for lus voor de cirkels (regel 13 en 16) en een for lus voor de vierkantjes (regel 20 en 21)
 
In de draw lus (regel 25) worden de vormen getekend met de display methodes in de subclasses. 

De vormen trillen met de trillen methode in de superclass "Vormen"  zie regel 12 t/m 14

Onder deze schets staan de superclass "Vormen" en de subclass "Vierkant" en "Cirkel"
 
 

// Je kan zeggen, een vorm kan een vierkant of een cirkel zijn. dit is polymorfisme  
// Dit i.t.t inheritance waar de objecten van de sub of child class worden gedeclareerd.  
Vormen[] vormen = new Vormen[30]; // Een array van 30  objecten (cellen genummerd van 0 t/m 29) declareren  
 
void setup() {  
 size(960,540);  
// fullScreen(); 
float x = width/2; 
float y = height/2; 
float n = height/10; 
 
for (int i = 0; i < vormen.length/2; i++ ) {  
 //Het construeren van de vorm objecten. Hier geef je de beginwaarden en vorm (cirkel of vierkant) aan  
 //Dus een vorm object kan zowel een vierkant als een cirkel zijn.   
 vormen[i] = new Cirkel(x, y, 2*n, color(random(255), random(255), random(255), 100));  
 //in bovenstaande regel worden de cellen 0 t/m 14 van de array als cirkel geconstrueerd 
 }   
 //De cellen 15 t/m 29 van de array bevatten vierkantjes  
 for (int i = vormen.length/2; i < vormen.length; i++ ) {  
 vormen[i] = new Vierkant(x- 3*n, y, 2*n);  
 }  
}  
 
void draw() {  
 background(#E6FBFF); 
 // trillen en display van alle vormen  
 for (int i = 0; i < vormen.length; i++ ) {  
 vormen[i].trillen(); 
 vormen[i].display();   
 //de display methoden van Cirkel en Vierkant overschrijven de display methode van de parent class.  
 //Als de child classes geen display methode hebben, wordt display van de parent class gebruikt.  
 }  
}
 
De super of parent class "Vormen"
 
 

// Dit is de parent of superclass met de display en de trillen methode 
class Vormen {  
 float x;  
 float y;   
   
 Vormen(float x_, float y_) {  
  x = x_;  
  y = y_;  
 }  
    
 void trillen() {  
 x += random(-2,2);  
 y += random(-2,2);  
 }  
 // Er moet wel een (mag leeg zijn) display methode in de super class "Vormen: staan.  
 // Deze methode wordt overschreven (overridden) door de display methode in de sub of child class.  
   void display() {       //de methode wordt altijd aangeroepen met super.display(); in de subclass  
   strokeWeight(4); 
   point(x,y);   
   strokeWeight(1); 
  }   
}


de subclass  "Vierkant"

 

class Vierkant extends Vormen { 
   
  float d;  //wordt niet in de superclass gebruikt 
    
Vierkant(float x_, float y_, float d_) {   
 // x_, en y_,  worden via de constructor van de superclass "Vormen" global gemaakt  
  super(x_, y_);  
  d = d_; 
 }  
  
 void display() {  
   rectMode(CENTER);  
   fill(175); //de vierkantjes zijn grijs 
   stroke(0);  
   rect(x, y, d, d);  
// super.display();  
 
// super.display toevoegen dan wordt de display methode van de parent class "Vormen" toegevoegd.  
// Je zie in ieder vierkantje een stipje. Zie de display methode in de "vormen" class 
 }  
  
 //Met vormen[i].trillen(); in de schets wordt, voor de vierkantjes, deze trillen methode aangeroepen!!  
  
// void trillen() {  
// x += random(-2, 1); // de vierkantjes zullen naar links uit beeld trillen  
// y += random(-1, 1);  
// }  
} 

de subclass "Cirkel"

 

class Cirkel extends Vormen {  
//c en d worden global gemaakt tbv de display methode in de class  
 color c; 
 float d; 
  
 Cirkel(float x_, float y_, float d_, color c_) {     
 // x_, en y_, worden via de constructor van de superclass "Vormen" global gemaakt  
 super(x_,y_);  
   c = c_; //c en d worden niet in de superclass gebruikt 
   d = d_; 
  
 } 
  
 void display() {  
 ellipseMode(CENTER);  
 fill(c);  
 stroke(0);  
 ellipse(x,y,d,d);  
 //super.display(); 
  }    
}