header

3) inheritance met de methode vrouw in een sub class                                  terug naar de inleiding
In de methode vrouw kan je alleen van het hoofd de breedte en hoogte veranderen, nu is 0,0 ingevoerd.
 
 

 
RechthoekSub r;  
EllipsSub e;  
VrouwSub vrouw; 

 
void setup() {  
 size(840, 360); 

r = new RechthoekSub(width/4*1, height/2, 100, 40, color(0, 20, 100, 80));  
 vrouw = new VrouwSub(width/4*2, height/2, 0, 0, color(106, 165, 45));  
 e = new EllipsSub(width/4*3, height/2, 80, 120, color(175, 60, 20, 100)); 
} 
void draw() {  
 background(255);  
 //trillen, stijgen en dalen zijn methodes in de super class  
 r.display();  
 vrouw.display(); 
 vrouw.stijgen(); 
 e.display(); 
 e.trillen(); 
}
 De constructor van de superclass heeft nu wel de argumenten b en h en een argument voor color.
 


class ExtraSuper { 
 float x; 
 float y; 
 float b; 
 float h; 
 float yspeed = 2; 
 color c;
ExtraSuper(float x_, float y_, float b_, float h_, color c_) { 
 x = x_; 
 y = y_; 
 b = b_; 
 h = h_; 
 c = c_; 
 }
void stijgen() { 
 y = y - yspeed; 
 if (y < 0) { 
 y = height; 
 } 
 }
void dalen() { 
 y = y + yspeed; 
 if (y > height) { 
 y = 0; 
 } 
 }
void trillen() { 
 x += random(-1, 1); 
 y += random(-1, 1); 
 }
// Display in de superklasse om override te demonsteren 
 void display() { 
 ellipse(x, y, 30, 10); 
 } 
}

 

class EllipsSub extends ExtraSuper {
EllipsSub(float x_, float y_, float b_, float h_, color c_) { 
 super(x_, y_, b_, h_, c_);  
 }
void display() { 
 fill(c); 
 stroke(0); 
 ellipse(x, y, b, h); 
 super.display(); 
 } 
}
 
 


class RechthoekSub extends ExtraSuper {
RechthoekSub(float x_, float y_, float b_, float h_, color c_) { 
 super(x_, y_, b_, h_, c_); 
 }
void display() { 
 rectMode(CENTER); 
 fill(c); 
 stroke(0); 
 rect(x, y, b, h); 
 super.display();  
 } 
}
 
 


 
class VrouwSub extends ExtraSuper { 

VrouwSub(float x_, float y_, float b_, float h_, color c_) {  
 super(x_, y_, b_, h_, c_); 
 } 
 void display() {  
 rectMode(CORNER); 
 fill(252);  
 ellipse(x, y-120, 50+b, 50+h); // hoofd  
 rect(x-25, y-20, 20, 75); // been links  
 rect(x+5, y-20, 20, 75); // been rechts  
 fill(c);  
 triangle(x, y-58, x-35, y, x+35, y); // Minirokje is driehoek  
 fill(255);  
 rect(x-25, y-95, 50, 75); // lijf  
 rect(x-45, y-95, 20, 70); // arm links  
 rect(x+25, y-95, 20, 70); // arm rechts 
 } 
}