Inheritance

inheritance.pde
/**
 * Inheritance
 * 
 * A class can be defined using another class as a foundation. In object-oriented
 * programming terminology, one class can inherit fi elds and methods from another. 
 * An object that inherits from another is called a subclass, and the object it 
 * inherits from is called a superclass. A subclass extends the superclass.
 */

class Spin {
public:
  float x, y, speed;
  float angle = 0.0;

  Spin(float xpos, float ypos, float s) {
    x = xpos;
    y = ypos;
    speed = s;
  }

  void update() {
    angle += speed;
  }
};

class SpinArm : public Spin {
public:
  SpinArm(float x, float y, float s)
    : Spin(x, y, s) {
  }

  void display() {
    strokeWeight(1);
    stroke(0);

    pushMatrix();
    translate(x, y);

    angle += speed;
    rotate(angle);

    line(0, 0, 165, 0);
    popMatrix();
  }
};

class SpinSpots : public Spin {
public:
  float dim;

  SpinSpots(float x, float y, float s, float d)
    : Spin(x, y, s) {
    dim = d;
  }

  void display() {
    noStroke();

    pushMatrix();
    translate(x, y);

    angle += speed;
    rotate(angle);

    ellipse(-dim/2, 0, dim, dim);
    ellipse(dim/2, 0, dim, dim);

    popMatrix();
  }
};

SpinSpots* spots;
SpinArm* arm;

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

  arm = new SpinArm(width/2, height/2, 0.01);
  spots = new SpinSpots(width/2, height/2, -0.02, 90.0);
}

void draw() {
  background(204);

  arm->update();
  arm->display();

  spots->update();
  spots->display();
}