Object Oriented Modeling (OOM)

What is Object-Oriented Modeling (OOM)?

Object-Oriented Modeling (OOM) is a methodological approach used in software engineering to design and conceptualize a system architecture using the principles of object-oriented programming. This modeling technique helps visualize, specify, construct, and document the artifacts of a software system. OOM is centered around the use of "objects" – entities that combine data (attributes) and behavior (methods or functions).

Key Concepts of Object-Oriented Modeling

  • Objects: The basic building blocks of OOM, representing real-world entities or concepts, characterized by attributes (data) and behaviors (methods).
  • Classes: Templates that define the properties and behaviors shared by a group of objects. Each object is an instance of a particular class.
  • Inheritance: A mechanism by which one class (child or subclass) can inherit properties and methods from another class (parent or superclass), promoting code reusability and the hierarchical organization of classes.
  • Encapsulation: The practice of bundling the data (attributes) and the code (methods) that manipulates the data into a single unit, or class, while restricting access to some of the object’s components. This encapsulation makes the object a self-contained entity.
  • Polymorphism: The ability of different objects to respond to the same message (or method call) in different ways, typically through method overriding or method overloading.
  • Association: A structural relationship that represents connections between classes based on their interactions. These can be one-to-one, one-to-many, or many-to-many relationships.
  • Aggregation and Composition: Special forms of association where objects are related in a whole-part hierarchy, showing how classes are composed or aggregated.

Purpose and Role of Object-Oriented Modeling

  • Design and Architecture: OOM provides a clear structure for software systems by organizing and defining how different components of a system interact and relate to each other.
  • Problem Solving: Helps in breaking down a complex problem into smaller, manageable components (objects), making it easier to solve.
  • Documentation: Offers a detailed and descriptive way to document software systems for development, maintenance, and future enhancements.
  • Communication: Facilitates communication among various stakeholders (developers, designers, business analysts) through visual diagrams and models.

Importance of Object-Oriented Modeling

  • Scalability: Object-oriented models are scalable, making it easier to manage larger software projects.
  • Maintainability: Enhances maintainability due to its modular architecture. Changes in software can often be made independently in separate objects or classes.
  • Reusability: Promotes reusability through inheritance and other relationships, allowing developers to use the existing code for new applications.
  • Flexibility: The polymorphic nature of OOM allows systems to be more flexible and adaptable to change.

Tools and Techniques in Object-Oriented Modeling

  • Unified Modeling Language (UML): The most commonly used modeling language in object-oriented analysis and design. UML provides a standard way to visualize the design of a system and includes several types of diagrams, such as class diagrams, use case diagrams, sequence diagrams, etc.
  • Class Diagrams: Used to describe the static structure of a system, showing the system’s classes, their attributes, methods, and the relationships among the classes.
  • Sequence Diagrams: Illustrate how objects interact with each other in terms of a sequence of messages over time.
  • Use Case Diagrams: Show the interactions between a system and its environment by depicting the activities that are performed by the users of the system.


Object-Oriented Modeling is a powerful approach in software engineering that provides an efficient way to handle software complexities by structuring and organizing a system as a collection of interacting objects. By using principles such as inheritance, encapsulation, and polymorphism, OOM enhances the flexibility, maintainability, and reusability of software, making it an essential technique in the development of complex software systems.

See Also

Object-Oriented Modeling (OOM) involves using object-oriented techniques to model applications, databases, or systems.

  • Object Oriented Programming (OOP): Discussing the programming paradigm based on the concept of "objects," which can contain data and code: data in the form of fields (often known as attributes or properties), and code, in the form of procedures (often known as methods).
  • Unified Modeling Language (UML): Exploring the standardized modeling language used in object-oriented modeling and design.
  • Software Engineering: Covering the systematic application of engineering approaches to software development.
  • Class Diagram: Discussing the type of static structure diagram that describes the structure of a system by showing its classes, their attributes, operations (or methods), and the relationships among objects.
  • Inheritance: Exploring the mechanism in OOP where new classes are derived from existing classes.
  • Encapsulation: Discussing the OOP concept of bundling the data (attributes) and methods that operate on the data into a single unit or class.
  • Polymorphism: Covering the OOP concept refers to different objects' ability to respond to the same function call in different ways.
  • Database Design: Exploring how object-oriented concepts are applied to the design of databases.
  • Systems Analysis and Design (SAD): Discussing the process of examining business systems to create improvements and the role OOM plays in this process.
  • Agile Development: Covering modern methodologies for software development that promote management principles, flexible responses to change, and deliverance of operational software.

These topics will help understand the broader context of object-oriented modeling, its relevance in software development, and its application across different phases of the systems development life cycle.