"Both Sides Now" is fine, but "Where's the Beef?"

Ok, so you bought the argument about domain models, downloaded or bough design tools, took the training, or hired in the expertise. What do you have for your trouble?  Pretty pictures of clouds, or boxes, with funny lines connecting them?  Where is the magic button to press to generate the killer app of the next decade, you ask? 

Here's a short list of the goodies you should hope to derive from the process: 
  • Use Cases (or Scenarios) which describe the major functionality of the system from the external user's perspective (a "black box" view)
  • Sequence and Colloboration Diagrams, illustrating the interactions between objects which implement those use cases ( a "white box" view)
  • A set of Class Category Diagrams, organized to minimize the modular dependencies which plague large scale software efforts.
Within the Class Category diagrams lie the abstractions which allow us to divide the application with success. 

Return to top. 


Abstract Base Classes

These marvels of object-orientation are the key to achieving the partitioning we are looking for. They define the protocols, or interfaces, between portions of the system, insulating the clients of a set of classes from the grubby details of their implementation. 

ABC / Interface / Protocol / Signature

Like their congnates in other OO paradigms, ABC's expose only the high-level "client view" of a group of objects. Unlike some of those mechanisms, ABC's are particularly intended to serve as the actual inheritance base of the classes they abstract. In particular, they declare only behavior which their subclasses may (or must) override. 

Spare Us the Details!

It can be tempting to move "common" implementation details up the inheritance tree to permit sharing between sibling classes. Resist the temptation! If you find such factoring compelling, create an intermediate class to hold the "shared" implementation. Allowing implementation details to pollute an ABC severely limits its usefullness. 

Extra Benefits

Designing around ABC's takes you most of the way toward being able not only to partition your application, but also to distribute it. 
  • CORBA's IDL is a language specifically for writing ABC's
  • OLE Automation Servers publish their interfaces as classes




  • Java makes heavy use of interfaces, which are, in essence, ABC's 
Return to top. 


TOC | Previous | Next

Copyright 1997, Palladion Software. 

Please report any problems with this page to Tres Seaver, tseaver@palladion.com.