In this series of articles we will present some unique ways to motivate and teach modeling of objects, ranging from simple programming level classes to complex components, based upon the key principles used in the Catalysis method. Our new interpretation will make it easier for beginners to understand the justification for certain kinds of models, and will equip them with concrete steps to create initial models based primarily upon behaviors. Given a conceptual model, behaviors can be described precisely. The model provides a precise vocabulary for defining contracts.
Any collaboration requires mutual models.
Collaborations may be refined in mutually interesting ways. Some object purists reject data-driven approaches on the basis that objects are primarily about responsibilities and behaviors, and about hiding implementations. So, let us step back for a bit of perspective on objects as pure behaviors, objects as black boxes, and introduce the notion of a type model. Objects are characterized by their visible behaviors, and object encapsulation tells us that we should hide details of how an object is implemented, including its data representations. Rather, we should concentrate on describing its responsibilities and services, and try to do so without describing how those services might be implemented.