Effective Object-Oriented Analysis and Design
Abstract
This five-day course covers fundamental Object-Oriented (OO) Programming strategies and explains what makes them so powerful. 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.Detailed Description
Object Orientation was and is primarily about the needs of the developer. It came from the best practices of traditional, procedural code, and from all the clever things programmers tried to do in FORTRAN, C, RPG, etc. But where those older languages sometimes hindered object orientation, new OO languages promote and enable OO design, if used properly.However, learning the syntax and supporting library API's for an OO language like C++, Java, C#, or VB.NET is really just the first step toward making effective use of Object Orientation. Without a true understanding of the principles that comprise good OO design, and the real benefits they provide, the software produced with an OO language can be just as brittle, inflexible, and hard-to-maintain as ever.
The purpose of this course is to teach developers and development teams how they can get the maximum benefit from working in an OO language and platform. Using this knowledge, they will produce code more efficiently, with fewer defects, in a more predictable period of time, and which is far easier to maintain.
Not all teams are created equal, however, and so we at Net Objectives have created a flexible body of material that can be tailored to fit the needs of your group.
Course Length
5 days - design and programming labs. Intended for non-senior programmers with no object-oriented experience or for experienced programmers who want to go fairly far down the road of object-oriented design and design patterns.Course Level
IntermediateCourse Outline
Course Structure (customizable)
- The Roots of OO - how it relates to best practices from non-OO languages
- Top-down Programming
- "Black box" Decomposition to Subroutines
- Avoiding Globals
- OO Mechanisms
- Encapsulation, Instantiation, Inheritance, Polymorphism, etc.
- Static Vs. Non-static Behavior
- Interfaces
- The Qualities of Good OO Code
- Coupling, Cohesion, Redundancy, Testability, etc
- The Practices that help produce these Qualities
- Coding by Intention, Encapsulation of Type, Compositional Design, etc
- A stronger paradigm for OO focusing on
- Commonalties and Abstractions
- Coding techniques that promote Encapsulation and Maintainability
- Coding exercises for hands-on experience in class
- Refactoring skills
- The role of Testing in development
- Design Patterns introduction and application
- Agile Development basics
Who is this course for
Developers who are already familiar with an OO language, such as C++, Java, C#, or VB.NET. The course does not cover syntax issues, but can include basic mechanisms such as encapsulation, reference vs. value objects, polymorphism, inheritance, and interface implementation (if needed).Prerequisites
Familiarity with the syntax and basic library API’s of an OO language such as C++, Java, C#, or VB.NET.Read both:
- Part I's "An Introduction to Object-Oriented Software Development" Chapter 1 "The Object-Oriented Paradigm"
from Design Patterns Explained: A New Perspective on Object-Oriented Design (Second Edition)
- Chapter 2 "The UML—The Unified Modeling Language" from Design Patterns Explained: A New Perspective on Object-Oriented Design (Second Edition)