mitgeben an wen zu welchen Zweck?
ganz allgemein gesprochen kann du jedes Objekt durch ein anderes ersetzen, z.B. von einer Subklasse, nur finale Klassen wie String machen Ärger,
etwas puristischer ist als zweite Variante, die zusätzlichen Informationen extern zu speichern, z.B. in einer Map<Shape,ShapeExtraData>,
wer immer später das Shape-Objekt in der Hand hat und die Map kennt, kann sich freuen