Re: Clean Object Class Design -- Circle/Ellipse

From: Mikito Harakiri <mikharakiri_at_yahoo.com>
Date: 6 Aug 2001 15:43:54 -0700
Message-ID: <bdf69bdf.0108061443.2ef1f574_at_posting.google.com>


hidders_at_REMOVE.THIS.win.tue.nl (Jan Hidders) wrote in message news:<9klpmg$3dg$1_at_news.tue.nl>...
> To summarize:
>
> Assume you have a finite set of domains Dom = { D_1, .., D_n }

Can't we collapse this to just 2 domains, as I have trouble counting? D_Super and D_Sub? (Where Super is 0 and Sub is "an arbitrary big number";-)

> 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).
> If you assume a subtype ordering, here called <=, over the domains
> then there are two things that should hold.
>
> 1. 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.

I would suggest I[Real,Integer] mapping any real r into integer i as follows:

i = floor(r)

> 2. 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.

Again, couldn't this condition be formulated in terms of super- and subclass only?  

> 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. :-)

With "I" being i = floor(r), couldn't reals be a subclass of integers? Received on Tue Aug 07 2001 - 00:43:54 CEST

Original text of this message