Re: Clean Object Class Design -- Circle/Ellipse
Date: 6 Aug 2001 09:57:36 GMT
Message-ID: <9klpmg$3dg$1_at_news.tue.nl>
Martijn Meijering wrote:
>
> I'd like to get away from discussing Date's understanding or lack of it.
> Can't we just talk about whether we think a decent OO type system should
> allow (not force) the integers to be a subtype of the reals and why that
> would be useful?
If you take Date's vision on OO and use a simply type system (no
parameterized types or types with quantifiers of types, et cetera) then
this is a well-understood problem. You can find the relevant literature
under 'multimethods' and 'subtyping' with Google.
To summarize:
Assume you have a finite set of domains Dom = { D_1, .., D_n } and a
} finite set of function Fun = { f_1,..., f_n } over these
domains (with some of them the same name but over different domains).
- The first is that if D_i <= D_j then there is a function I[D_i,D_j]
: D_i -> D_j that "interprets" elements of D_i as elements of D_j.
- The second is that the semantics of the functions should respect the subtype ordering and this interpretation function. This means that if you have two function f_i : D_i -> C_i and f_j : D_j -> C_j with
the same name and a greatest common subtype D' exists of D_i and D_j and a greatest common supertype C' of C_i and C_j exists, then if we interpreat f_i and f_j as functions from D' to C' then they must be the same, i.e., for all x in D' it holds that
I[C_i,C']( f_i( I[D',D_i](x) ) ) = I[C_j,C']( f_j( I[D',D_j](x) ) )
So if you tell me what operations you have over the integers and the reals, and what your subtype interpreations is, then I can tell you if a subtyping relation between them is valid.
For starters lets assume for the Reals (R,+,*) and for the Integers (I,+,*). So we have the domains R and I and the operators + : R x R -> R, * : R x R -> R, + : I x I -> I and + : I x I -> I. And because I have to get back to work now, checking that we can indeed regard the integers as a subtype of the reals is left as an exercise for the reader. :-)
Kind regards,
-- Jan HiddersReceived on Mon Aug 06 2001 - 11:57:36 CEST
