object oriented design in software engineering

Sonu Tewatia
4 min readDec 10, 2020

--

object oriented design in software engineering

Object-oriented design(OOD) is the result of focusing attention not on the function performed by the program, but instead on the data that are to be manipulated by the program. Thus, object-oriented design is orthogonal to function-oriented design.

Object-oriented design is one of the latest approaches to software development, and it shows much promise in solving problems associated with building modern software systems.

software engineers have become more aware of the importance of the data structures. By using higher level data structures beyond the basic integer, real, character, and Boolean, algorithms can be significantly simpler and more elegant.

Data structure are a major force in promoting abstraction, at least comparable to procedures and functions. Complex, but familiar, objects can easily be conceptualized in designs and code. Complex behaviors can be referred to using natural sounding operation names. Such Abstract Data Types (ADT’s ) can function as software modules. Previously, design methods have led people to assume that modules are procedural in nature. But ADTs do abstract concept, simplify design, promote reusability, and define interfaces. ADTs can also be encapsulated and organized structurally into design architecture.

True object-oriented design occurs when ADTs are designed for flexibility and reuse, are encapsulated by excluding all implementation detail from the publicly visible interface, visibility. Visibility exists in two objects when one can request services of another by invoking an operation that is part of second object’s interface.

Prototyping is an important aspect of design when systems employing object technology are built but, swine it involves a whole new way of thinking about software development, most authorities in software engineering community consider object technology as a paradigm itself. It is a program paradigm itself. It is a programming paradigm that can best be applied with development tools that are compatible with it. O-O technology contains these three key aspects.

Software packages designed and developed to correspond with real-world entities and containing all the data and services required to function as their associated entities.

Communication mechanisms are established that provide the means by which objects work to gather.

Methods are services that objects perform to satisfy the functional requirements of the problem domain. Objects request services of the other objects through messages.

Templates for defining families of objects and all the data and services that are common to them, and providing for the concept of inheritance that makes O-O software easier to modify and maintain than conventional software.

Benefits of OOD

The concept of objects performing services is a more natural way of thinking.

Objects are inherently reusable.

Emphasis is on understanding the problem domain.

Internal consistency of systems is improved because attributes and services can be viewed as an intrinsic whole.

The characteristic of inheritance capitalizes on the commonalty of attributes and services.

The characteristics of information hiding stabilizes systems by localizing changes to objects.

The object-oriented development process is consistent from analysis, through design, to coding.

Types of OOD Methods.

  • Booch’s Object-Oriented Design.
  • Yourdon and Coad’s Object-Oriented Design.

Booch’s methodology in OOD

Grady Booch’s Object-Oriented Design (OOD), also known as Object-Oriented Analysis and Design (Booch 1994).

Booch’s class and object diagrams differentiate this methodology from similar object oriented systems.

Booch’s Class and Object diagram Notations

Class Adornments:- Use adornments to provide additional information about a class. Adornment can be created using the basic triangle shape.

A-Abstract:- An abstract class can not be instantiated because it represents a wide variety of object classes and does not represent any one of them fully. For example, mammal could not be thought of as an abstract class.

F-Friend:- A friend class allows access to the non-public functions of other classes.

S-Static:- A static class provides data.

V-Virtual:- A virtual class is a shared base class, the most generalized class in a system.

Meta-class:- A meta-class is a class whose instances are also classes.

Class Categories:- A class category represents a cluster of similar classes.

Class Template:- Draw a template using the standard class symbol attached to a box with a dashed outline. List template parameters or formal parameters in this box. When you draw a class created from a template, replace the dashed border with a solid one.

Class Utilities:- Class utilities describe a group of non-member functions or subprograms.

Class Visibility:- Visibility markers signify who can access the information contained within a class. Public visibility allows an attribute or an operation to be viewed by any other class. Private visibility means that the attribute or the operation is only accessible by the class itself and its friends. Protected visibility makes an attribute or the operation visible only to friend classes and classes that inherit it. Implementations restricts the accessibility of an attribute to the class only.

Object Visibility:- Draw a visibility marker on a link to signify the relationship between the connected objects. These marker can be:

Relationships:- Relationships between objects are indicated using lines and arrows.

State Transition and interaction diagrams are used to illustrate the dynamic nature of an application (Booch 1991).

Booch’s Dynamic Diagram notations

States represents situations during the life of an object. A Booch state symbol is drawn using a rectangle with rounded corners and two compartments. The oval-shaped H symbol is used to indicate the most recently visited state.

Originally published at https://www.csmates.com.

--

--

Sonu Tewatia
Sonu Tewatia

Written by Sonu Tewatia

Software Engineer | Content Writer | Programmer | System Admin | Linux Administration |

No responses yet