Elle remplace la méthode toString(). La classe Attr permet d'associer un nom à un objet (quelconque).
La classe AttrCouleur est une extension de la classe précédente. Elle associe une couleur dans une certaine représentation (val de Attr) à un nom et à une ScreenColor (supposée être définie ailleurs).
class Attr{ private String nom; private Object val = null; public Attr(String nom){this.nom = nom;} public Attr(String nom, Object val){ this.nom = nom;this.val = val; } public String getNom(){return nom;} public Object getVal(){return val;} public Object setVal(Object nVal){ Object aVal = val; val = nVal; return aVal; } public String toString(){ return nom + "='" + val + "'"; } }
class AttrCouleur extends Attr{ private ScreenColor maCouleur; public AttrCouleur(String nom, Object val){ super(nom,val); decodeCouleur(); } public AttrCouleur(String nom, ScreenColor val){ super(nom, val.toString()); maCouleur = val; } public AttrCouleur(String nom){ this(nom, "transparent"); } public Object setVal(Object nVal){ Object retval = super.setVal(nVal); decodeCouleur(); return retval; }//...
public ScreenColor setVal(ScreenColor nVal){ super.setVal(nVal.toString()); ScreenColor aVal = maCouleur; maCouleur = nVal; return aVal; } public ScreenColor getColeur(){ return maCouleur; } public void decodeCouleur(){ if (getVal() == null) maCouleur = null; else maCouleur = new ScreenColor(getVal()); } }