End users typically approach a computer with a model of an algorithm whereby a network of objects work together to achieve some goal, and object-oriented programming strives to match those mental models.
Its benefits include providing a good match between software solutions and business needs, and ease of programming that is structured around business understanding. Much of what programmers call object-oriented today in fact is altogether something else: Abstract Data Types, each of which should be separately considered as an encapsulated grouping of data and low-level operations.
This mismatch harms software useability and has dramatic software engineering drawbacks. The Data, Context and Interaction (DCI) restores object-oriented thinking to the design and programming world. This tutorial will help you deeply understand object-oriented thinking and learn what it takes to implement it in a modern architecture.