caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
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


  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;
as well as URLs for NNTP newsgroup(s).