Basic Philosophy of Object Orientation

Object oriented analysis and design is the method that leads us to object oriented decomposition. They can be defined as follows.

Object Oriented Analysis (OOA)

It is the method of analysis that examines requirement from the perspective of the classes and objects found in the vocabulary of the problem domain.

Object Oriented Design (OOD)

It is a method of design encompassing the method of objects oriented decomposition and notation of logical and physical as well as static and dynamic models of the system under design.

Object Oriented Programming (OOP)

It is a method of implementation in which programs are organized as co-operative collection of objects. Each of these represents instance of some class. These classes are all members of a hierarchy of classes united via inheritance relationship.

Before going into the details of object oriented analysis and design, we must have a clear understanding about the principles upon which the object oriented development is founded namely abstraction, encapsulation, modularity, hierarchy, typing, concurrency and persistence.


Object Modeling Technique (OMT)

This is a methodology for object-oriented development and a graphical notation for representing object-oriented concepts. The methodology consists of building a model of an application domain and then adding implementation details to it during the design of a system. The OMT methodology uses three kinds of models to describe a system:

(i) object model, describing the objects in the system and their relationships

(ii) dynamic model, describing the interactions among objects in the system

(iii) functional model, describing the data transformations of the system

Each model is applicable during all stages of development and acquires implementation detail as development progresses. A complete description of a system requires all three models.

The object model describes the static structure of the objects in a system and their relationships to other objects, their attributes, and their operations. Objects are the units into which we divide the world, the molecules of our models. The object model contains object diagrams. An object diagram is a graph whose nodes are object classes and whose arcs are relationships among classes. Classes are arranged into hierarchies sharing common structure and behavior and are associated with other classes. Classes define the attribute values carried by each object instance and the operations which each object performs or undergoes.

The dynamic model describes those aspects of a system that concerned with time and the sequencing of operations— events that mark changes, sequences of events, states that define the context for events, and the organization of events and states. The dynamic model is used to specify and implement the control aspects of a system and this aspect of a system describes the sequences of operations that occur, without regard for what the operations do, what they operate on, or how they are implemented. The dynamic model is represented graphically with state diagrams. A state diagram is a graph whose nodes are states and whose arcs are transitions between states caused by events. Therefore the dynamic model describes the control structure of a system in terms of events and states.

The functional model describes the data value transformations within a system. The functional model captures what a system does, without regard for how or when it is done. The functional model contains data flow diagrams. A data flow diagram represents a computation. A data flow diagram is a graph whose nodes are processes and whose arcs are data flows. So the functional model describes the computational structure of a system in terms of values and functions.

The three models are orthogonal parts of the description of a complete system and are cross-linked. The object model is most fundamental, however, because it is necessary to describe what is changing or transforming before describing when or how it changes. That is why we are concentrating more on the Object Model