Object Oriented Design

Introduction to Object Oriented Design?

Software development consists of several important activities, which are compiled and attached together to create a software that has impeccable qualities, features and functionality. It is these components of the software that decide its scalability, performance, reliability, security, and more, as well as ensures that the software or application is developed as per the requirements of the client. However, to initiate and implement such activities, software engineers are required to prepare a proper design for the software, which can guide them during the process of software development.

Software design is the process by which an agent creates a specification of a software artefact, intended to accomplish goals, using a set of primitive components and subject to constraints. Having a design process when the software is being developed allows developers to be more efficient and transparent. Moreover, it keeps all the members of different team on track and enables them to collaborate easily. With the assistance of software design, developers can reduce the risks as they will be using a tried and tested plan, wherein not retracing of steps as well as guesswork is required.

Furthermore, there are several types of software design, which are used to simplify the designing process as well as to reduce the complexities in the software. Object Oriented Design (OOD) is one approach of software design and is defined as the process of planning a system of interacting objects for the purpose of solving a software problem.

What is Object Oriented Design?

Object Oriented Design (OOD) serves as part of the object oriented programming (OOP) process of lifestyle. It is mainly the process of using an object methodology to design a computing system or application. This technique enables the implementation of a software based on the concepts of objects. Additionally, it is a concept that forces programmers to plan out their code in order to have a better flowing program.

The origins of Object Oriented Design (OOD) is debated, but the first languages that supported it included Simula and SmallTalk. The term did not become popular until Grady Booch wrote the first paper titled Object-Oriented Design, in 1982. The chief objective of this type of software design is to define the classes and their relationships, which are needed to build a system that meets the requirements contained in the Software Requirement Specifications.

Moreover, it is the discipline of defining the objects and their interactions to solve a problem that was identified and documented during the Object Oriented Analysis (OOA). In short, Object Oriented Design (OOD) is a method of design encompassing the process of object oriented decomposition and a notation for depicting both logical and physical models of the system under design. The other characteristics of Object Oriented Design are as follow:

  • Objects are abstractions of the real-world or system entities and manage themselves.
  • The objects are independent and in an encapsulated state and representation information.
  • System functionality is expressed in terms of object services.
  • Shared data areas are eliminated.
  • Communication between objects is through message passing.
  • The objects may be distributed and may execute sequentially or in parallel.

Process of Object Oriented Design:

Understanding the process of any type of software related activity simplifies its development for the software developer, programmer and tester. Whether you are executing functional testing, or making a test report, each and every action has a process that needs to be followed by the members of the team. Similarly, Object Oriented Design (OOD) too has a defined process, which if not followed rigorously, can affect the performance as well as the quality of the software. Therefore, to assist the team of software developers and programmers, here is the process of Object Oriented Design (OOD):

  1. To design classes and their attributes, methods, associations, structure, and even protocol, design axiom is applied.
    • The static UML class diagram is redefined and completed by adding details.
    • Attributes are refined.
    • Protocols and methods are designed by utilizing a UML activity diagram to represent the methods algorithm.
    • If required, redefine associations between classes, and refine class hierarchy and design with inheritance.
    • Iterate and refine again.
  2. Design the access layer.
    • Create mirror classes i.e., for every business class identified and created, create one access class.
  3. Identify access layer class relationship.
  4. Simplify classes and their relationships. The main objective here is to eliminate redundant classes and structures.
    • Redundant Classes: Programmers should remember to not put two classes that perform similar translate requests and translate results activities. They should simply select one and eliminate the other.
    • Method Classes: Revisit the classes that consist of only one or two methods, to see if they can be eliminated or combined with the existing classes.
  5. Iterate and refine again.
  6. Design the view layer classes.
    • Design the macro level user interface, while identifying the view layer objects.
    • Design the micro level user interface.
    • Test usability and user satisfaction.
    • Iterate and refine.
  7. At the end of the process, iterate the whole design. Re-apply the design axioms, and if required repeat the preceding steps again.

Concepts of Object Oriented Design:

In Object Oriented Design (OOD), the technology independent concepts in the analysis model are mapped onto implementing classes, constraints are identified, and the interfaces are designed, which results in a model for the solution domain. In short, a detailed description is constructed to specify how the system is to be built on concrete technologies. Moreover, Object Oriented Design (OOD) follows some concepts to achieve these goals, each of which has a specific role and carries a lot of importance. These concepts are defined in detail below:

  1. Encapsulation: This is a tight coupling or association of data structure with the methods or functions that act on the data. This is basically known as a class, or object (object is often the implementation of a class).
  2. Data Protection: The ability to protect some components of the object from external entities. This is realized by language keywords to enable a variable to be declared as private or protected to the owning class.
  3. Inheritance: This is the ability of a class to extend or override the functionality of another class. This so called child class has a whole section that is the parent class and then it has its own set of functions and data.
  4. Interface: A definition of functions or methods, and their signature that are available for use as well as to manipulate a given instance of an object.
  5. Polymorphism: This is the ability to define different functions or classes as having the same name, but taking different data type.

Advantages of Object Oriented Design:

The discussion above has elaborated on several advantages of Object Oriented Design (OOD). From enabling the implementation of a software based on the concepts of objects and deleting the shared data areas to distributing and executing the object sequentially or in parallel, the benefits of this approach of software design are numerous. Hence, provided here some of the other advantages of using Object Oriented Design (OOD).

  • Easier to maintain objects.
  • Objects may be understood as stand-alone entities.
  • Objects are appropriate reusable components.
  • For some systems, there may be an obvious mapping from real entities to system objects.


With the transition and advancement of software industry, several aspects of software engineering and software development are also improving and transforming into their better forms. Similarly, the ways of designing the software are also advancing and changing for better. Introduced by Grady Booch in the paper titled Object-Oriented Design, in 1982, Object Oriented Design (OOD) is a newer paradigm that is replacing function oriented design techniques day-by-day. Object Oriented Analysis and Design combines both data and methods into cohesive units and classes. Unified modelling language (UML) is a notation that is often used to model object oriented systems.

Moreover, it also provides various diagrams for modelling a system’s structure, dynamic behaviour, states, architecture, etc. Creating an Objective Oriented Design (OOD) is an iterative process based on applying the knowledge stored in a system’s use cases. Hence, this approach of software design is basically used for planning a system of interacting objects and for the purpose of solving a software problem, which further helps software developers and programmers in creating a software that has exceptional features and qualities.