CSE687 - Object Oriented Design
Lecture #13 - Interface Segregation Principle
Revised: 01 March 2009
Web Resources:
Stroustrup's Home Page,
Assoc. of C/C++ Users,
C++ at Microsoft,
Code Project,
Sells Brothers,
Guru of the Week,
C/C++ User's Journal,
devCentral,
Dr. Dobb's Journal,
Boost Library,
techNetCast
Content:
This lecture covers Interfaces and the Interface Segregation Principle.
-
Syllabus
Describes topics to be covered,
reading material for you to digest before coming to class, and due dates
for the assigned projects.
-
Project #2, Graph data type
Project #3, Testbed
Project #4, Remote Testbed with charting
-
The Dependency Inversion Principle
Components should depend on abstractions, not other components.
-
Programming to Interfaces Presentation
Discusses interfaces, layers, factories, and breaking design, compile, and static link dependencies.
-
Object Factory Project
This project implements a factory that allows clients to use derived classes but only bind to their
abstractions. It also demonstrates the use of products with multiple interfaces.
-
Programming to Interface Project
This project implements a template-based "pluggable object factory" and shows how to access
members of a hierarchy through an interface.
-
Dynamic Link Library Project
This project demonstrates that compile and static link dependencies can be broken by programming
to interfaces and using object factories.
-
Run-Time Type Indentification Presentation
RTTI is, perhaps, the antithesis of the Open/Closed Principle. Paradoxically, I used it building the trace class.
-
Interface Segregation Principle
Discusses why you may need to provide more than one interface for a component.
-
Exceptions Presentation
-
Basic Exceptions Demo
-
Standard Exceptions Demo
-
Exception Performance Demo
-
Design Presentation
Summarizes design issues for modules and classes.
-
Design Rules
Design rules and idioms that transcend Object Oriented Design.