import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; public class P12 { private String name; private int age; private PropertyChangeSupport propertyChangeSupport; public P12() { propertyChangeSupport = new PropertyChangeSupport(this); } public String getName() { return name; } public void setName(String name) { String oldName = this.name; this.name = name; propertyChangeSupport.firePropertyChange("name", oldName, name); } public int getAge() { return age; } public void setAge(int age) { if (age < 0) { throw new IllegalArgumentException("Age cannot be negative"); } int oldAge = this.age; this.age = age; propertyChangeSupport.firePropertyChange("age", oldAge, age); } public void addPropertyChangeListener(PropertyChangeListener listener) { propertyChangeSupport.addPropertyChangeListener(listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { propertyChangeSupport.removePropertyChangeListener(listener); } }