Emmanuel Aliyu
Great !
Remember full constructors are very important to favor immutability.
So I guess your point will be to link those constructors to what you call characteristics, but even that is accidental.
To store (or not) these essence in characteristics is a design decision.
You can ask for Cartesian coordinates when building a point but store in polar format. This decouples the behavior (be a point) to the accidental characteristics (store as x and y).
This is very difficult to understand to beginners since they mostly care about implementation.
Maxi Contieri
Software Engineer
great article and great analogies
I like it very much the interactions part
I think you can omit the characteristics all together, many programmers mistake them with state and then violate information hiding and encapsulation principles.
you can define an object by its essential interactions and it is not necessary to deal with accidental characteristics