Types, Makers, and Inheritanc

Tyler Close tyler@lfw.org
Tue, 20 Oct 1998 17:33:28 -0400


At 09:48 AM 10/20/98 -0700, you wrote:
>Rule #1 of Capability-based Design:  Distinctions in authority are 
>represented with distinct objects.  

I understand and agree with this design principle; however, I am not sure
that I see how it applies. Exactly what authority does a type object give
you? I don't see that it can in any way add to the way that you interact
with an instance object.

>Programs must be able to manipulate 
>descriptions of objects and their protocols (i.e., type objects) without 
>granting the authority to create instances. 

Could you explain exactly what kind of manipulation you're talking about?

>It's useful to be able to 
>talk about the protocol of bank accounts, create user interfaces to them, 
>etc. without allowing the construction of them outside of banks.  This 
>means that they must be separate objects.

I don't see how it's necessary to have Type objects in order to have an
interface to an instance object. In C++, I never had a need or desire for
Type objects.

While Type objects do represent a different concept than Maker objects, I
feel comfortable that I can get by just fine without Type objects. Going
without Type objects might even encourage better designs.

Tyler