As mentioned programming consists of constructing a model of the problem domain within a computer. Part of the programming process thus consists of identifying relevant phenomena and concepts from the the problem domain and representing these in terms of objects and classes. Until now we have been rather vague about the terms phenomena and concepts. In this Chapter we attempt to give precise definitions of these terms.
The real world, and any problem domain contains a huge number of different phenomena such as physical objects, situations, properties of physical objects, events and processes. We define a phenomenon as follows:
A phenomenon is a thing that has definite, individual existence in reality or in the mind; anything real in itself.
Examples of phenomena are : +++ list of examples.
An application domain may contain different kinds of phenomena:
All phenomena are dfferent; there are no two identical persons, two identical cars, or two identical flowers. It is, however, impossible to deal with all single phenomena directly without tools for grouping similar phenomena. Abstraction arises from a recognition of similarities between phenomena and concepts and the decision to concentrate on these similarities and ignore the differences for the time being. The similarities are considered as fundamental and the differences as trivial. An abstraction covers a group of phenomena characterized by certain properties. A word or picture is usually introduced to symbolize the abstraction. An abstraction is also referred to as a concept. We define a concept as follows:
A concept is a generalized idea of a collection of phenomena, based on knowledge of common properties of instances in the collection.
More to follow on extention, intension and name of a concept