The object-oriented design transforms the analysis model created using object oriented analysis into a design model that serves as a blueprint for software construction.
Designing object-oriented software is hard, and designing reusable object oriented software is even harder. It must be possible to find pertinent objects, factor them into classes at the right granularity, define class interface hierarchies, and establish key relationships among them. The design should be specific to the problem and also general enough to address future problems and requirements.
Unlike conventional software design methods. 000 results in a design that achieves several different levels of modularity. Major system components are organized into subsystems, a system-level "module". Data and the operations that manipulate the data are encapsulated into objects- a modular form.
Upon completion of this Unit, you should be able to:
• Clearly understand the software design principles using an Object-oriented approach.
• Understand what is meant by classes, object classes, and inheritance and also
• Difference between Object-oriented and Function oriented approaches.
Object-oriented design is a design strategy based on information hiding. It differs from the functional approach to design in that it views a software system as a set of interacting objects, with their private state, rather than as a set of functions that share a global state.
The characteristics of an object-oriented design (OOD) are:
- Objects are abstractions of system entities, which are responsible for managing their private state and offering services to other objects.
- Objects are Independent entities that may1eadily be changed because state and representation information is held within the objects. Changes to the representation may be made without reference to other system objects.
- System functionality is expressed in terms of operations or services associated with each object.
- hared data areas are eliminObjects communicate by calling on services o ered by other objects rather than sharing variables. This reduces overall system coupling. There is no possibility of unexpected modifications to shared information.
- Objects may be distributed and may execute either sequentially or in parallel. Decisions on parallelism need not be taken at an early stage of the design process.
Object-oriented systems are easier to maintain as the objects are independent. They may be understood and modified as stand-alone entities. Changing the implementation of an object or adding services should not affect other system objects. There is a clear mapping between real-world entities and their controlling objects in the system. This imµroves the understandability and hence maintainability of the design.
Object-oriented analysis, design, and programming are all part of Object oriented development whereby an object-oriented strategy is used throughout the development process.
- Object-oriented analysts: is concerned with developing an object-oriented model of the application domain. The identifre9 o !J0 t may or may not map directly into system objects.
- Object-oriented design: is concerned with developing an object-oriented model of a software system to implement the identified requirements. These requirements may or may not be structured around objects in the problem domain.
- Object-oriented programming: is concerned with realizing a software design using an object-oriented programming language. An ooject oriented programming language supports the direct implementation of objects and provides object classes and inheritance.
Object-oriented concepts and design activities that are common to the object-oriented design process which is proposed by all methods These · include:
• The identification of the objects in the system along with their attributes and operations.
• The organization of objects into an aggregation hierarchy which shows how objects are ' part-of other objects.
• The construction of dynamic 'object-use' diagrams that show which object services are used by other objects.
• The specification of object interfaces.