polymorfisme

De schets produceert alleen een vierkantje en een cirkel

polymorfisme met constructor zonder argumenten          naar de inleiding
 
Zie ook "ster en veelhoekvormen" een toepassing van polymorfism
 
De code bestaat uit een schets , de twee subclasses "Vierkant" en "Cirkel" en de superclass "Vormen"

De schets doet niets meer dan het produceren van een vierkantje en een cirkel.

De positie en grootte van deze objecten is gecodeerd in de subclasses.
Door het aanmaken van constructors in deze classes krijgen de constructors in de schets argumenten.
zodat je de grootte en positie van de vormen in het setup deel van de schets kan construeren.

In de superclass komen de bewegingsmethodes.

 
De schets
 
 

// De meest simpele structuur van polymorfisme  
// met een constructor zonder argumenten. 
//1) Declareren van de objecten van het type Vormen  
 
Vormen vormen1;  
Vormen vormen2; 
 
//Declareren van de objecten van het type Cirkel en Vierkant mag ook 
//men spreekt van inheritance  
//want de objecten erven eigenschappen van de superclass "Vormen" 
 
//Cirkel vormen1; 
//Vierkant vormen2; 
 
void setup() {   
 size(480, 270);   
//2) construeren van de objecten  
 vormen1 = new Cirkel();   
 vormen2 = new Vierkant();  
}   
//3) tekenen van de objecten  
void draw() {   
 background(255);   
 vormen1.display();   
 vormen2.display();  
}
 
De super- of parent class
 
 

class Vormen { 
   
Vormen() {     // de lege constructor 
   
 } 
  
   void display() {  
 //Dit is de lege display methode die wordt overreden in de "Cirkel" en "Vierkant" subclassen 
 //ivm overriding moeten alle methodes van de subclasses ook in de superclass staan  
 }  
}
 
 De subclass Vierkant
 
 


class Vierkant extends Vormen { 
   
Vierkant() { // de lege constructor 
 
 } 
  
void display() {   
 rectMode(CENTER);   
 fill(175);   
 stroke(0);   
 rect(width/2, height/2, 40, 40);  
 }  
} 


de subclass "Cirkel"

 


class Cirkel extends Vormen { 
   
Cirkel() {  // de lege constructor 
 } 
  
void display() {   
 ellipseMode(CENTER);   
 stroke(0);   
 ellipse(width/4, height/4, 40, 40);  
 }  
}