package lectures.inheritance_vs_delegation;
import util.annotations.WebDocuments;

import lectures.mvc.AnObserverHistory;
import lectures.mvc.CounterObserver;
import lectures.mvc.ObservableCounter;
import lectures.mvc.ObserverHistory;

@WebDocuments({"Lectures/InheritanceVsDelegation.pptx", "Lectures/InheritanceVsDelegation.pdf", "Videos/InheritanceVsDelegation.avi"})
public class AnInheritingObservableResettingCounter extends AResettingCounter
            implements ObservableCounter {
    ObserverHistory observers = new AnObserverHistory();
    public void add (int amount) {
        super.add(amount);
        notifyObservers();
    }
    public void addObserver(CounterObserver observer) {
        observers.addElement(observer);
        observer.update(this);
    }   
    void notifyObservers() {
        for (int observerNum = 0; observerNum < observers.size();
            observerNum++)
        observers.elementAt(observerNum).update(this);
    }
}