Object-Oriented Programming

Review of terms:

  • class
  • instance
  • method
  • global variables
  • types/classes with lowercase first letters are primitives (int, float, double, boolean)
  • constructor (none needed if no paramaters)
  • this
  • parameters, arguments
In [4]:
class Human {
    String name;
    
    Human(String x) {
            name = x;
    }
    
    void speak() {
        println("I'm a human");
    }
}

class Monkey {
    void speak() {
        println("I'm a monkey");
    }
}

Human human0;
Human human1;
Monkey monkey0;

void setup() {
    human0 = new Human("Kevin");
    human1 = new Human("Sylvia");
    monkey0 = new Monkey();
}

void draw() {
    human0.speak();
    human1.speak();
    monkey0.speak();
    noLoop();
}
Sketch #3:

Sketch #3 state: Loading...
I'm a human
I'm a human
I'm a monkey

Arrays of Objects

Review of ideas:

  • array
  • declare array
  • create space for the array
  • create the instances
In [13]:
class Human {
    void speak() {
        println("I'm a human");
    }
}

class Monkey {
    void speak() {
        println("I'm a monkey");
    }
}

Human[] human = new Human[25];
Monkey[] monkey = new Monkey[25];

void setup() {
    for (int i=0; i < human.length; i++) {
        human[i] = new Human();
    }
    for (int i=0; i < monkey.length; i++) {
        monkey[i] = new Monkey();
    }
}

void draw() {
    for (int i=0; i < human.length; i++) {
        human[i].speak();
    }
    for (int i=0; i < monkey.length; i++) {
        monkey[i].speak();
    }
    noLoop();
}
Sketch #8:

Sketch #8 state: Loading...
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a human
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey
I'm a monkey

Object-Oriented Programming - Inheritance

In [5]:
class Primate {
    void speak() {
        println("I'm a primate");
    }
}

class Human extends Primate {
    void speak() {
        println("I'm a human");
    }
}

class Monkey extends Primate {
    void speak() {
        println("I'm a monkey");
    }
}

Primate primate0;
Human human0;
Monkey monkey0;

void setup() {
    primate0 = new Primate();
    human0 = new Human();
    monkey0 = new Monkey();
}

void draw() {
    primate0.speak();
    human0.speak();
    monkey0.speak();
    noLoop();
}
Sketch #4:

Sketch #4 state: Loading...
I'm a primate
I'm a human
I'm a monkey
In [5]:
class Primate {
    void speak() {
        println("I'm a primate");
    }
}

class Human extends Primate {
    void speak() {
        println("I'm a human");
    }
}

class Monkey extends Primate {
    void speak() {
        println("I'm a monkey");
    }
}

class SpiderMonkey extends Monkey {
    void speak() {
        println("eeee eee ooo oo");
    }
}

Primate[] primate = new Primate[25];

void setup() {
    for (int i=0; i < primate.length; i++) {
        if (i % 2 == 0) {
            primate[i] = new Human();
        } else {
            primate[i] = new Monkey();
        }
    }
}

void draw() {
    for (int i=0; i < primate.length; i++) {
        primate[i].speak();
    }
    noLoop();
}
Sketch #4:

Sketch #4 state: Loading...
I'm a human
I'm a monkey
I'm a human
I'm a monkey
I'm a human
I'm a monkey
I'm a human
I'm a monkey
I'm a human
I'm a monkey
I'm a human
I'm a monkey
I'm a human
I'm a monkey
I'm a human
I'm a monkey
I'm a human
I'm a monkey
I'm a human
I'm a monkey
I'm a human
I'm a monkey
I'm a human
I'm a monkey
I'm a human

New ideas:

  • extend a class
  • subclass
  • super class, or base class
  • method overrides
  • polymorphism

  • Primate is the base class, or super class

  • Human and Monkey are subclasses
  • Treating all of the objects the same, but having the methods do their specifics: polymorphism

See pages 223 - 232 of your textbook for additional information.