Johnson and Foote 1988

From CSSEMediaWiki
(Difference between revisions)
Jump to: navigation, search
m (See also)
m (tidying)
Line 1: Line 1:
''Designing reusable classes'', by RalphJohnson & BrianFoote, [[BR]] Journal of Object-Oriented Programming, June/July 1988, Volume 1, Number 2, pages 22-35.
+
[http://www.cosc.canterbury.ac.nz/teaching/classes/cosc427/DesigningReusableClasses.htm ''Designing reusable classes'']
 +
, by RalphJohnson & BrianFoote, Journal of Object-Oriented Programming, June/July 1988, Volume 1, Number 2, pages 22-35.
  
 
The text is available from the links below.
 
The text is available from the links below.
Line 26: Line 27:
  
 
* [http://www.laputan.org/drc/drc.html Electronic copy on web]
 
* [http://www.laputan.org/drc/drc.html Electronic copy on web]
* [http://www.cosc.canterbury.ac.nz/teaching/classes/cosc427/DesigningReusableClasses.htm Local copy]
 
 
* [[Software reuse]]
 
* [[Software reuse]]
 
* [[Favor composition over inheritance]]
 
* [[Favor composition over inheritance]]

Revision as of 01:37, 23 July 2009

Designing reusable classes , by RalphJohnson & BrianFoote, Journal of Object-Oriented Programming, June/July 1988, Volume 1, Number 2, pages 22-35.

The text is available from the links below.

Analysis

This early paper has been very influential. It is long, and uses Smalltalk examples and terminology, but it is worth working through.

It presents one of the earliest collections of OOD heuristics: Johnson and Foote's heuristics.

It is also the original (as far as I know) paper to Favor composition over inheritance.

White box and black box reuse

One of the central themes of this paper is that there are two main ways of designing classes for reuse:

  • White box reuse, in which new classes should reuse existing classes by inheriting from them.
  • Black box reuse, in which new classes should reuse existing classes by composing them.

Black box reuse is preferred to white box, because the classes are less exposed to each other (i.e. they have weaker coupling). However, white box reuse is still recognised as a valuable technique.

In terms of statically typed languages like Java:

  • Black box reuse allows use only of the public interface of a server class;
  • White box reuse allows use of both the public and protected interfaces of the server class.

See also

Personal tools