On 07.09.2014 12:29, kilon alios wrote:
...
Referring to the rest of your post I dont agree that we need to separate Data
from Code,
I don't know of anybody who wants to separate data and code. May be you
are thinking about DCI without having grokked it.
Smalltalk sees an object as an entity that has a unique and immutable
identity and that encapsulates state and behavior.
DCI builds on this definition and has a powerful separation of concerns:
1. An object seen in isolation is specified by a class.
This is observing the object from within its encapsulation boundary.
A class says everything about how an object is constructed and
nothing about how it collaborates with others.
A DCI Data object is an object that does not collaborate with
objects in its environment.
2. An ensemble of objects that collaborate to achieve a certain goal is
specified by a DCI Context.
The observation point is in the space between the objects.
The objects are observed from outside their encapsulation boundaries,
The message flow is visible and can be reasoned about.
A DCI Context says everything about how objects collaborate to
achieve a common goal
and nothing about how they are constructed.
The Class and the Context are orthogonal concepts and form the basis of
my mental model of an object computer.