Elements
Elements
1. Requirement Gathering:
o Identify Stakeholders: Engage with users, clients, and other stakeholders to
understand their needs and expectations.
o Collect Requirements: Use interviews, surveys, and observations to gather
detailed requirements about what the system should do and how it should
behave.
2. Use Case Modeling:
o Identify Actors: Determine who interacts with the system (e.g., users, other
systems). Actors are external entities that interact with the system.
o Define Use Cases: Specify the functionalities the system must support,
described from the user's perspective. Each use case represents a distinct
functionality or goal that an actor can achieve with the system.
o Create Use Case Diagrams: Visualize the interactions between actors and the
system, showing how different use cases relate to each other and to the actors.
3. Domain Modeling:
o Identify Classes and Objects: Determine the key classes (objects) in the
problem domain, including their attributes (data) and behaviors (methods).
o Define Relationships: Establish relationships between classes, such as
associations (e.g., a student enrolls in a course), generalizations (inheritance,
e.g., a car is a vehicle), and dependencies.
o Create Class Diagrams: Use class diagrams to represent the static structure
of the system, showing classes, their attributes, methods, and relationships.
4. Behavioral Analysis:
o State Diagrams: Model the states an object can be in and the transitions
between these states. Useful for modeling objects that have complex state-
dependent behavior.
o Sequence Diagrams: Illustrate how objects interact over time to accomplish a
specific task. They show the sequence of messages exchanged between
objects.
o Collaboration Diagrams: Depict how objects interact to achieve a goal,
focusing on the relationships between objects and their interactions.
• Encapsulation: Encapsulate data and methods within classes, hiding internal details
and exposing only necessary functionality. This promotes modularity and protects the
integrity of data.
• Abstraction: Focus on high-level functionalities and interactions, hiding complex
implementation details. Abstraction simplifies the design and allows for easier
understanding and maintenance.
• Inheritance: Use inheritance to establish hierarchical relationships between classes,
allowing for code reuse and the creation of specialized subclasses.
• Polymorphism: Enable objects to be treated as instances of their parent class,
allowing for flexible and interchangeable use of objects. Polymorphism supports
dynamic method binding and enhances code flexibility.
By applying these elements and principles, OOAD aims to create systems that are well-
structured, maintainable, and aligned with user needs and system requirements.