After completely establishing the strengths and usefulness of the strategies, the course then focuses on how to apply the strategies to new designs, and how to recognize opportunities to use them in your analysis of existing code.


Course Objectives: 

This course teaches participants how to analyze requirements and turn them into an object-oriented program. This is done in a collaborative, efficient manner that minimizes the waste associated with software development which encompasses requirements, specifications, implementation and testing.


Learning Objectives: 

When you have completed this course, you will

  • Know how to use polymorphism in effective ways

  • Have improved your object-oriented analysis skills

  • Be able to identify classes in their problem domain by multiple techniques

  • Be able to read basic UML diagrams

  • Understand which code qualities are essential for writing maintainable code

  • Classes and Objects

    • Composition and Aggregation

    • Association

    • Inheritance

    • Polymorphism

    • Inheritance versus Interface

  • Methodology

    • Overview

    • Conceptualization

    • Scenarios

    • Testability

  • Example of Methodology

    • Analysis

    • Classification

    • CRC Cards

  • Quality Measures

    • Coupling

    • Cohesion

    • Redundancy

    • Testability

  • UML Diagrams

    • Class

    • Collaboration

    • Sequence

    • State

  • Design Considerations

    • Coding by Intention

    • Encapsulation

    • Commonalities and Abstractions

  • Guidelines and Principles

    • Open / Closed Principle

    • Design to Interfaces

    • Encapsulate Variations

    • Favor Delegation over Inheritance

  • An Introduction to Patterns

    • Strategy Pattern

    • Template Method Pattern

    • Factories

Full Description

Using an Object-Oriented (OO) language like Java, C#, or C++ is just a first step toward making effective use of Object-Orientation. The developer must also understand the principles and practices that make effective use of OO. This course covers those principles and how to use them in analyzing requirements and creating a design that gets the maximum benefit from OO. The attendees will have an opportunity to exercise the principles in designing an application of their choice.

General outline:



– Understand basic object concepts

– Learn UML that represents those concepts

– Explore OO principles and practices


Analysis and Design

– Create an OO analysis of a system

– Use OO concepts in design of a system


Familiarity with the syntax and basic library API’s of an OO language such as Java, C#, or C++.

Max class size



3 Days




Effective Object-Oriented Analysis and Design