CSC/ECE 517 Fall 2007/wiki3 3 aa: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 12: Line 12:


[[Image:isp.jpg|thumb|left|300x350px|design without ISP]] [[Image:isp2.jpg|thumbnail|none|425x420px|design with ISP]]
[[Image:isp.jpg|thumb|left|300x350px|design without ISP]] [[Image:isp2.jpg|thumbnail|none|425x420px|design with ISP]]


Fat interfaces lead to inadvertent couplings beween clients that ought otherwise to be isolated. By making use of the ADAPTER pattern, either through delegation (object form) or multiple inheritance (class form), fat interfaces can be segregated into abstract base classes that break the unwanted coupling between clients.
Fat interfaces lead to inadvertent couplings beween clients that ought otherwise to be isolated. By making use of the ADAPTER pattern, either through delegation (object form) or multiple inheritance (class form), fat interfaces can be segregated into abstract base classes that break the unwanted coupling between clients.

Revision as of 00:43, 16 November 2007

Topic


Take the Interface Segregation principle (ISP) 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.

Interface Segregation Principle

The Interface Segregation Principle states that "Clients should not be forced to depend upon interfaces that they do not use".

When clients are forced to depend upon interfaces that they don’t use, then those clients are subject to changes to those interfaces. This results in an inadvertent coupling between all the clients. Said another way, when a client depends upon a class that contains interfaces that the client does not use, but that other clients do use, then that client will be affected by the changes that those other clients force upon the class. We would like to avoid such couplings where possible, and so we want to separate the interfaces where possible.

A diagrammatic description of

design without ISP
design with ISP


Fat interfaces lead to inadvertent couplings beween clients that ought otherwise to be isolated. By making use of the ADAPTER pattern, either through delegation (object form) or multiple inheritance (class form), fat interfaces can be segregated into abstract base classes that break the unwanted coupling between clients.

An illustrative example of ISP is as follows Consider a cell phone had interfaces of a phone and a MP3 player. ISP advises to keep these two interfaces completely independent of each other. This way the phone can be treated purely as a phone or as a MP3 player. Programmatically,use only the interface of a MP3 player in an implemented method called playSong. In future even if the interface for the phone is modified, the method playSong would remain the same.


Taxonomy in ISP

  • Fat interfaces: Classes whose interfaces are not cohesive.
  • Interface Pollution: Presence of Fat Interfaces creates a lot of dependencies amongst classes and methods resulting in pollution of the OO design. This is called as interface pollution.


Catalog

http://www.objectmentor.com/resources/articles/isp.pdf http://doodleproject.sourceforge.net/articles/2001/interfaceSegregationPrinciple.html http://ifacethoughts.net/2006/03/28/interface-segregation-principle/ http://www.everything2.com/index.pl?node_id=1259576 http://www.cmcrossroads.com/articles/agile-cm-environments/principles-of-agile-version-control:-from-ood-to-tbd.html http://jayflowers.com/WordPress/?p=91 www.cet.sunderland.ac.uk/~cs0her/COM379%20Lectures/Lecture3.ppt http://www.parlezuml.com/metrics/OO%20Design%20Principles%20&%20Metrics.pdf