Object-oriented programming was necessitated by the consistently increasing complexity of software systems. OOP was aimed at exploiting the natural capabilities for thinking of the human mind and this gave birth to the sensitive and formal systems of objects and classes. These two are more or the same, however, objects facilitate the understanding of the classes. Researches from a psychologists identified that our behavior and cognition operate in two different parallel modes; System 1 (S1) and System 2 (S2). This is a theory referred to as the Dual-Process Theory.
Different parts of the brain activate these modes. Moreover, the two have divergent evolutionary origins. S1 processes are difficult to overcome. This is because they are inflexible, fast, automatic, unconscious and effortless. On the other hand, S2, being the recent to evolve, has its processes being relatively flexible, slow, effortful and conscious. The latter is used to monitor and critic the fast automatic responses of the former. Object-oriented Design (OOD), though complex and requires formal training and effortful thinking entails all that S2 is expected to appropriate.
In understanding the elementary mistakes made by professionals, a UML workshop is set up where experiences software developers describe a complex situation in its natural setting using qualitative research methodology. Data was collected through documentations, video taping and analyzed by coding it characterizing and classifying it in various categories. The outcomes revealed instances of some having confusions in the inheritance direction, caused by the operations of the S1. The S2 remained dormant since the instructor had not taught any new concept in his small cue.
The clash between the S1 and S2 is a result of the former performing the transfer work in people’s intuition (Hadar & Leron, 2008, 44). In an OOD, the S2 seems to dominate; the class whose functionality is more inherits from the one with less. Object identification is the foremost step in OOD. It calls for the analytical rule-based reasoning rather than the vast past experience. Additionally, it builds on natural concept’ intuitions. A class whose objects are not concrete can not be instantiated in an OOD. This class is referred to as an abstract class.
Coding, though necessary, contribute less in software development as compared to analysis, design and testing. Though classes, objects and inheritance have an intuitive flavor, OOD is more important, though in different ways, from its intuitive origin. This model is for the take that the most accessible features are not necessarily the most relevant in making good decisions. Decisions on the apposite classes, objects and relations may sometimes be influenced by surface cue that are irrelevant (Hadar & Leron, 2008, 45).
Consequently, the choices resulted tend to be inappropriate. Intuition thus helps individuals to successfully find their way in their daily tasks. In clearly comprehending the various concepts in the history of computing, intuition is vital. This assists in enabling the differentiation of the various stages that the computing subject has undergone with the proper highlighting of the distinct features and characteristics of each period. In programming, different programming languages are used. In this topic, the languages are discussed generally.
However, so as to understand the programming languages paradigms, features and language translation, intuition have to be employed since some of the programming language terminologies may be unfamiliar to the learner. This is more utilized in the object oriented paradigm and differentiation of the data types, data flows, control flows, design compilation and interpretation.
Hadar, Irit & Leron Uri 2008, How Intuitive Is Object-Oriented Design? Communication of the ACM, Vol, 51, No. 5, p. 41-46