Abstract Base Classes: Building Blocks
for Extensibility
From Clouds to Code -- How?
Abstract Base Classes
"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.
Copyright © 1996-2008, Tres Seaver, Palladion Software