CSE687 - Object Oriented Design

Lecture #13 - Interface Segregation Principle

Revised: 27 February 2008
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.
  3. XMLParsing or XMLTran
    Two modules that do basic XML handling - building XML strings and pulling them apart. They do not understand XML namespaces or schemas. Either on will work for the parsing part of Project #2.
  4. Project #2 Help
  5. The Dependency Inversion Principle
    Components should depend on abstractions, not other components.
  6. Programming to Interfaces Presentation
    Discusses interfaces, layers, factories, and breaking design, compile, and static link dependencies.
  7. 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.
  8. 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.
  9. Dynamic Link Library Project
    This project demonstrates that compile and static link dependencies can be broken by programming to interfaces and using object factories.
  10. Run-Time Type Indentification Presentation
    RTTI is, perhaps, the antithesis of the Open/Closed Principle. Paradoxically, I used it building the trace class.
  11. Interface Segregation Principle
    Discusses why you may need to provide more than one interface for a component.
  12. Exceptions Presentation
  13. Basic Exceptions Demo
  14. Standard Exceptions Demo
  15. Exception Performance Demo
  16. Design Presentation
    Summarizes design issues for modules and classes.
  17. Design Rules
    Design rules and idioms that transcend Object Oriented Design.
  18. Lecture #13 folder
    Contains a page of links to presentations and code discussed in this class. The Lecture folders will occasionally hold physical files of interest as well. Usually, however, all the materials of interest to the class are in the presentations and code folders. The contents of these folders will grow as you progress through the course.