import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeListener;

public class Calculator {
    private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);

    private String a = "100"; 
    private String b = "200"; 
    private String c = "300";

    private void calculate() {
        setC(Double.toString(Double.parseDouble(a) + Double.parseDouble(b))); 
    }

    public String getA() {
        return a;
    }

    public void setA(String a) {
        this.a = a;
        calculate();
    }

    public String getB() {
        return b;
    }

    public void setB(String b) {
        this.b = b;
        calculate();
    }

    public String getC() {
        return c;
    }

    private void setC(String c) {
        Object old = this.c;
        this.c = c;
        propertyChangeSupport.firePropertyChange("c", old, c);
    }
    
    public void addPropertyChangeListener(PropertyChangeListener pcl) {
        propertyChangeSupport.addPropertyChangeListener(pcl);
    }

    public void removePropertyChangeListener(PropertyChangeListener pcl) {
        propertyChangeSupport.removePropertyChangeListener(pcl);
    }

    public PropertyChangeListener[] getPropertyChangeListeners() {
        return propertyChangeSupport.getPropertyChangeListeners();
    }    
}

