OOAD - Object Model

The object model visualizes the elements in a software application in terms of objects, along with the other characteristic features of object orientation. In this chapter, we will look into the basic concepts and terminologies in object–oriented systems.

Objects and Classes

The concepts of objects and classes are intrinsically linked with each other and form the foundation of object–oriented paradigm.


An object is a real world element in an object–oriented environment that may have a physical or a conceptual existence. Each object has:

  • Identity that distinguishes it from other objects in the system.

  • State that determines the characteristic properties of an object as well as the values of the properties that the object holds.

  • Behaviour that represents externally visible activities performed by an object in terms of changes in its state.

Objects can be modelled according to the needs of the application. An object may have a physical existence, like a customer, a car etc.; or an intangible conceptual existence, like a project, a process etc.


A class represents a collection of objects that have same characteristic properties and exhibit common behaviour. It gives the blueprint or description of the objects that can be created from it. Creation of an object as a member of a class is called instantiation. Thus, object is an instance of a class.

The constituents of a class are:

  • A set of attributes that give the slots for properties of the objects that are instantiated from the class. Generally, different objects of a class have some difference in the values of the attributes. Attributes are often referred as class data.

  • A set of operations that portray the behaviour of the objects of the class. Operations are also referred as functions or methods.


Let us consider a simple class, named Circle that represents the geometrical figure circle in a two – dimensional space. The attributes of this class can be identified as follows:

  • x – coord, to denote x – coordinate of the center
  • y – coord, to denote y – coordinate of the center
  • a, to denote radius of the circle

Some of its operations can be defined as follows:

  • findArea(), method to calculate area
  • findCircumference(), method to calculate circumference
  • scale(), method to increase or decrease the radius

During instantiation, values are assigned for at least some of the attributes. If we create an object my_circle, we can assign values, like, x-coord : 2, y-coord : 3 and a : 4 to depict its state. Now, if the operation scale() is performed on my_circle, with a scaling factor of say- 2, the value of a will become 8. This operation brings a change in the state of my_circle, i.e. the object has exhibited certain behaviour.

Encapsulation and Data Hiding


Encapsulation is the process of binding both attributes and methods together within a class. Through encapsulation, the internal details of a class can be hidden from outside. It permits the elements of the class to be accessed from the outside only through the interface provided by the class.

Data Hiding

Typically, a class is designed such that its data (attributes) is insulated from direct access from the outside and can be accessed only by its class methods. These methods provide the interface of the object’s data with the outside. This process of insulating an object’s data is called data hiding or information hiding.


In the class Circle of section 2.1, data hiding can be incorporated by making attributes invisible from outside the class and adding two more methods to the class for accessing class data, namely:

  • setValues(), method to assign values to x-coord, y-coord and a
  • getValues(), method to retrieve values of x-coord, y-coord and a

Here the private data of the object my_circle cannot be directly accessed by any method which is not encapsulated within the class Circle and should instead be accessed through the methods setValues() and getValues().

Message Passing

Any application requires a number of objects which should interact in a harmonious manner. Objects in a system may communicate with each other using message passing. Consider that a system has two objects say, obj1 and obj2. The object obj1 sends a message to object obj2, if obj1 wants obj2 to execute one of its methods.

The features of message passing are:

  • Message passing between two objects is generally uni-directional.
  • Message passing enables all interactions between objects.
  • Message passing essentially involves invoking class methods.
  • Objects in different processes can be involved in message passing.


Inheritance is the mechanism that permits new classes to be created out of existing classes by extending and refining its capabilities. The existing classes are called the base classes/parent classes/super classes and the new classes are called the derived classes/child classes/subclasses. The subclass can inherit or derive the attributes and methods of the super class(es) provided that the super class allows so. Besides, the subclass may add its own attributes and methods and may modify any of the super class methods. Inheritance defines an “is – a” relationship.


From a class Mammal, a number of classes can be derived, like Human, Cat, Dog, Cow etc. Humans, cats, dogs and cows all have the distinct characteristics of mammals. In addition, each has its own particular characteristics. It can be said that cow “is – a” mammal.

Types of Inheritance:

  • Single Inheritance : A subclass derives from a single super class.

  • Multiple Inheritance : A subclass derives from more than one super classes.

  • Multilevel Inheritance : A subclass derives from a super class which in turn is derived from another class which may be also derived from another class and so on.

  • Hierarchical Inheritance : A class has a number of subclasses each of which may have subclasses, continuing for a number of levels, so as to form a tree structure.

  • Hybrid Inheritance : A combination of multiple and multilevel inheritance so as to form a lattice structure.

Figure 2.1 depicts examples of different types of inheritance.



Polymorphism is originally a Greek word that means the ability to take multiple forms. In object oriented paradigm, polymorphism implies using operations in different ways, depending upon the instance they are operating upon. Polymorphism allows objects with different internal structures to have a common external interface. Polymorphism is particularly effective in implementation of inheritance.


Let us consider two classes Circle and Square, each with a method findArea(). Though the name and purpose of the methods in the classes is same, the internal implementation, i.e. the procedure of calculating area, is different for each class. When an object of class Circle invokes its findArea() method, the operation finds the area of the circle, without any conflict with findArea() method of Square class.

Generalization and Specialization

Generalization / specialization represent a hierarchy of relationships between classes, where subclasses inherit from super classes.


In generalization process, the common characteristics of classes are combined to form a class in a higher level of hierarchy, i.e. subclasses are combined to form a generalized super class. It represents an “is – a – kind – of” relationship. For example, “car is a kind of land vehicle”, or “ship is a kind of water vehicle”.


Specialization is the reverse process of generalization. Here, the distinguishing features of groups of objects are used to form specialized classes from existing classes. It can be said that the subclasses are the specialized versions of the super class.

Figure 2.2 illustrates and example of generalization and specialization.


Links and Association


A link represents a connection through which an object collaborates with other objects. Rumbaugh has defined link as “a physical or conceptual connection between objects”. Through a link, one object may invoke the methods or navigate through another object. A link depicts the relationship between two or more objects.


A link can be defined as an instance of an association. Association is a group of links that have common structure and common behaviour. Association depicts relationship between objects of one or more classes.

Degree of an Association

Degree of an association denotes the number of classes involves in the connection. Degree may be unary, binary or ternary. A unary relationship connects objects of the same class. A binary association connects objects of two classes. A ternary relationship connects objects of three or more classes.

Cardinality Ratios of Associations

Cardinality of a binary association denotes the number of instances that are participating in the association. There are three types of cardinality ratios, namely:

  • One–to–One : A single object of class A is associated with a single object of class B.

  • One–to–Many : A single object of class A is associated with many objects of class B.

  • Many–to–Many : An object of class A may be associated with many objects of class B and conversely an object of class B may be associated with many objects of class A.

Aggregation or Composition

Aggregation or composition is a relationship among classes by which a class can be made up of any combination of objects of other classes. It allows objects to be placed directly within the body of other classes. Aggregation is referred to a “part–of” or “has–a” relationship, with the ability to navigate from the whole to its parts. An aggregate object is an object that is composed of one or more other objects.


In a relationship, “a car has–a motor”, car is the whole object or the aggregate, and the motor is a “part–of” the car. Aggregation may denote:

  • Physical containment : Example, a computer is composed of monitor, CPU, mouse, keyboard and so on.

  • Conceptual containment : Example, shareholder has–a share.

Benefits of using the Object Model

Now that we have gone through the core concepts pertaining to object orientation, it would be worthwhile to note the advantages that this model has to offer.

The benefits of using the object model are:

  • It helps in faster development of software.

  • It is easy to maintain. This is because if there is an error in a module, only that module needs to be fixed while the other parts of the software are running.

  • It supports relatively hassle free up-gradation.

  • It enables reuse of objects, designs and functions.

  • It reduces development risks particularly in integration of complex systems.

Kickstart Your Career

Get certified by completing the course

Get Started