Collaboration between objects (DCI)
Last updated at 10:52 am UTC on 16 June 2018
Object-oriented programming languages traditionally afford no way to capture collaborations between objects.
They don't capture algorithms that flow over those collaborations.
Like the domain structure captured by object instances, these collaborations and interactions also have structure.
They form part of the end user mental model, but you can't find a cohesive representation of them in the code.
For example, users have expectations for their interactions with a spell-checker in a word processor and have a preconceived notion of its interactions with the text, with some dictionary, and with the end user.
Which object should encapsulate the spell-checking operation in a word processor: The editing buffer? The dictionary? Some global spell-checker object? Some of these options lead to poor cohesion of the object that hosts spell checking while other options increase the coupling between objects.
 The DCI Architecture: A New Vision of Object-Oriented Programming
by Trygve Reenskaug and James O. Coplien
March 20, 2009