Simon Allardice's "Foundations of Programming: Object-Oriented Design" is a great refresher for the more experienced programmers, but perfect for those that are still refining their skills. Rated as intermediate by Lynda.com, this seems very appropriate. The topic is portable to many object oriented programming languages, such as Java, C#, Ruby and Python.
- Why use object-oriented design (OOD)?
- Pinpointing use cases, actors, and scenarios
- Identifying class responsibilities and relationships
- Creating class diagrams
- Using abstract classes
- Working with inheritance
- Creating advanced UML diagrams
- Understanding object-oriented design principles
However my favorite areas were the Object-Oriented Design Patterns and the Object-Oriented Design Principles. Now these were not treated in depth, but enough to jog the memory. Other topics within the course were more meaty.