CSE687 - Object Oriented Design

Lecture #13 - Interface Segregation Principle

Revised: 01 March 2009
Home Courses Code Handouts CoreTech Books Articles Math Research Masters Projects SWDev WebDev News OtherLinks SiteDesign Graduates AllPages Office Hours Notices Contents

CSE681-SWMAA CSE686-IP CSE687-OOD CSE775-DO CSE776-DP CSE778-AWP CSE784-SWS

Lecture #01 Lecture #02 Lecture #03 Lecture #04 Lecture #05 Lecture #06 Lecture #07
Lecture #08 Lecture #09 Lecture #10 Lecture #11 Lecture #12 Lecture #13 Lecture #14
Lecture #15 Lecture #16 Lecture #17 Lecture #18 Lecture #19 Lecture #20 Lecture #21
Lecture #22 Lecture #23 Lecture #24 Lecture #25 Lecture #26 Lecture #27 Lecture #28

Contents Syllabus SG - Design SG - Templates SG - Class Relationships

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

Office Hours: Instructor & TAs

Content:

This lecture covers Interfaces and the Interface Segregation Principle.
  1. Syllabus
    Describes topics to be covered, reading material for you to digest before coming to class, and due dates for the assigned projects.
  2. Project #2, Graph data type
    Project #3, Testbed
    Project #4, Remote Testbed with charting
  3. The Dependency Inversion Principle
    Components should depend on abstractions, not other components.
  4. Programming to Interfaces Presentation
    Discusses interfaces, layers, factories, and breaking design, compile, and static link dependencies.
  5. 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.
  6. 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.
  7. Dynamic Link Library Project
    This project demonstrates that compile and static link dependencies can be broken by programming to interfaces and using object factories.
  8. Run-Time Type Indentification Presentation
    RTTI is, perhaps, the antithesis of the Open/Closed Principle. Paradoxically, I used it building the trace class.
  9. Interface Segregation Principle
    Discusses why you may need to provide more than one interface for a component.
  10. Exceptions Presentation
  11. Basic Exceptions Demo
  12. Standard Exceptions Demo
  13. Exception Performance Demo
  14. Design Presentation
    Summarizes design issues for modules and classes.
  15. Design Rules
    Design rules and idioms that transcend Object Oriented Design.