From: "Johan Baltié" <johan.baltie@wanadoo.fr>
To: Alessandro Baretta <alex@baretta.com>, Ocaml <caml-list@inria.fr>
Subject: Re: [Caml-list] Recovering masked methods
Date: Tue, 16 Jul 2002 10:59:39 +0100 [thread overview]
Message-ID: <20020716095939.M27616@wanadoo.fr> (raw)
In-Reply-To: <3D33E74C.6050307@baretta.com>
> [sniped]
>
> > And you can always write
> >
> > let a_m = 1
> > class a = ... method m = a_m ..
>
> This is not viable. The toy code I have shown here does not
> provide any real functionality, but in the real application
> you have to imagine the following situation:
>
> class a =
> object (self)
> method m = <some generally useful stuff
> method m1 = <other generally useful stuff>
> ...
> method mn = <other generally useful stuff>
> end
>
> class b =
> object (self)
> inherit a as super_a
> method m = <specific stuff>; super_a # m
> method m1 = <specific stuff>; super_a # m1
> ...
> method mn = <specific stuff>; super_a # mn
> end
>
> class small_variant_of_b =
> object (self)
> inherit b as super_b
> method m = super_b # super_a # m
> (* All the specific stuff in method m is not needed *)
> (* Yet, all other methods must be inherited from b *)
> end
>
> Without the above notation, I could only think of copying
> the code of method m out of class a and pasting it into
> class small_variant_of_b, but this makes maintainance a
> mess. And I am working on a production class system. No
> good. However, I did not consider the following idea, which
> is not bad indeed. In the absence of the notation I
> described above, or of an equivalent one, I'll do as you
> propose here.
I do not agree with you on the usefullness of this kind of stuff.
Basic OO theory says that the inheritance relation can be seen as a "is a" operator.
If your "is a" means "is a with some variants", for me your modelization is not
good.
You should have:
B' inherits A
B inherits B'
small_b_variant inherits B'
Like this code factorisation seems to be easy to do.
IMHO it's a good modelization constraint to forbid such stuff.
> [resniped]
Ciao
Jo
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
next prev parent reply other threads:[~2002-07-16 9:59 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-07-15 23:13 Alessandro Baretta
2002-07-16 1:15 ` Jacques Garrigue
2002-07-16 9:28 ` Alessandro Baretta
2002-07-16 9:48 ` Laurent Vibert
2002-07-16 10:08 ` Johan Baltié
2002-07-16 10:10 ` Alessandro Baretta
2002-07-16 9:59 ` Johan Baltié [this message]
2002-07-16 11:08 ` [Caml-list] Recovering masked methods (with CamlP4?) Alessandro Baretta
2002-07-16 11:32 ` Johan Baltié
2002-07-16 12:52 ` Alessandro Baretta
2002-07-16 12:26 ` Daniel de Rauglaudre
2002-07-16 12:54 ` Alessandro Baretta
2002-07-17 9:26 ` Daniel de Rauglaudre
2002-07-16 13:32 ` John Prevost
2002-07-16 13:35 ` John Prevost
2002-07-16 14:06 ` Alessandro Baretta
2002-07-16 14:15 ` Johan Baltié
2002-07-16 14:29 ` Alessandro Baretta
2002-11-11 9:20 ` Eray Ozkural
2002-07-16 10:45 ` [Caml-list] Recovering masked methods John Prevost
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20020716095939.M27616@wanadoo.fr \
--to=johan.baltie@wanadoo.fr \
--cc=alex@baretta.com \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox