CSC/ECE 517 Fall 2007/wiki3 4 rl
Assignment
Take the Interface Segregation principle and catalog the information on it available on the Web. We didn't cover it in class, but you can look it up on the Web or in the ACM DL. Find good descriptions and good, concise, understandable examples. Tell which you consider the best to present to a class.
Introduction
TODO: Write up intro, mention that there's not a lot of resources on this and lots of overlap between my description sites and example sites so doesn't make sense to break them out ... maybe put this in note to reviewer, be sure to pick a "best to present to class" from examples.
Interface Segregation Principle Resources on the Web
Following is a catalog of the best Interface Segregegation Principle resources on the Web. Those containing useful examples are marked with a and include a description of the example. (reword)
http://www.objectmentor.com/resources/articles/isp.pdf
This article, "The Interface Segregation Principle," is the seminal work on ISP. The author, Robert Martin, presents the disadvantages of what he calls "fat" or "polluted" interfaces. Such interfaces contain methods that apply to only a subset of the clients that use the interface. This results in an undesirable coupling between those clients that do require particular methods in the interface and those that do not. Martin summarizes the ISP as "Clients should not be forced to depend upon interfaces that they do not use."
Martin provides a detailed example involving the user interface of an ATM machine. He shows a design that violates the ISP, and then tells the reader how to fix it. This example, written in C++, is worth reading but also very involved and somewhat difficult to follow.
http://doodleproject.sourceforge.net/articles/2001/interfaceSegregationPrinciple.html
SOME TEXT HERE
http://www.oodesign.com/oo_principles/oo_principles/interface_sergregation_principle.html
Though not particularly well written, this page is unique in that it presents the ISP in the format of a design pattern. It is organized into Motivation, Intent, Example, and Conclusion.
If you can get past the egregious spelling, grammatical, and coding errors, you'll find the example on this page simple and straightforward. The author uses the concept of a Worker who both does work and eats lunch, then shows how a Robot worker doesn't eat and shouldn't have to implement the eat method.