OO Programming in Java
Class 1 Material
Zoo Example
Problem Statement Write a computer program to help determine how many shoes must be ordered for all the animals in a zoo.One size fits all. |
View
import java.lang.*; import java.util.*; import java.awt.*; public class View extends Frame implements Observer { private Zoo zoo_; public Zoo zoo() { return zoo_; } public void zoo(Zoo aZoo) {zoo_ = aZoo; } public static void main(String args[]){ View theView = new View(); theView.zoo().computeFootCount(); (new Frame()).show(); } View() { this.initialize(); } private void initialize() { this.zoo(new Zoo()); this.zoo().addObserver(this); } public void update(Observable obs, Object o) { String theString = (String) o; System.out.println(">> " + theString); } }
Zoo
import java.util.*; import java.lang.*; class Zoo extends Observable { private String name_; public String name() { return name_; } public void name(String aName) {name_ = aName; } private Vector animals_; public Vector animals() { return animals_; } public void animals(Vector theAnimals) { animals_ = theAnimals; } Zoo() { this.initialize(); } private void initialize() { this.animals(new Vector()); this.name("Fred's Zoo"); Vector theAs = this.animals(); theAs.addElement(new Animal("George", 2)); theAs.addElement(new Animal("Centi", 43)); theAs.addElement(new Animal("Wormy", 0)); theAs.addElement(new Animal("Yogi", 4)); } public void publicize(String aString) { this.setChanged(); this.notifyObservers(aString); } public int computeFootCount() { int totalFootCount = 0; Enumeration theAnimals = this.animals().elements(); while (theAnimals.hasMoreElements()) { Animal anAnimal = (Animal) theAnimals.nextElement(); totalFootCount = totalFootCount + anAnimal.footCount(); } this.publicize("Shoes to order = " + totalFootCount); return totalFootCount; } }
Animal
import java.util.*; import java.lang.*; class Animal { private String name_; public String name() { return name_; } public void name(String aName) {name_ = aName; } private int footCount_; public int footCount() { return footCount_; } public void footCount(int theFootCount) { footCount_ = theFootCount; } Animal() { this.initialize(); } Animal(String aName, int feet) { this(); this.name(aName); this.footCount(feet); } private void initialize() { this.name("John Doe"); this.footCount(0); } }