Am Samstag, den 27.08.2011, 13:21 -0700 schrieb Jeff Meister:
> I don't understand this part. You can easily hide a public method of
> an object by coercing it to an object type which does not have that
> method.
Right, but in OO design you build a datastructure often from several
types of objects that communicate closely with each other, and should be
considered as a unit ("friends"). Once you make a method public,
however, it is hard to restrict the access to a friend only.
> Modules also provide excellent information hiding: if you
> don't want anyone else calling your method, make at least one of its
> input types abstract in the interface, and don't provide any values of
> that type.
I used this technique in Http_client (part of Ocamlnet). It works but
feels very strange. It's like retrofitting nominal typing into the
structural OO type system. Once you use it, you give up the possibility
that the user creates a totally independent object definition on its
own. The price is quite high, and one also wonders whether objects are
then still useful, or whether a "normal" module with an abstract type
would do better.
Also, this particular method of information hiding is a feature of the
modules, not of the objects. As such, objects can only hide the inner
state of a single object, which is quite limited.
Let me point out one final thing. Information hiding is simply not a
core concept of OO - which is in the first place a specific way of
structuring the program (e.g. group data and algorithms together), with
an integrated method of adapting object types (subtyping), and giving
control of parts of your algorithm to the user of your class. This
flexibility and openness is in some contradiction to encapsulation and
access control. This is what I meant with "mindset" - the typical OCaml
programmer likes more the latter (I guess).
Gerd
> On Sat, Aug 27, 2011 at 12:37 PM, Gerd Stolpmann <[email protected]>
> wrote:
> > I guess the biggest problem is that structural
> > typing does not offer much for getting information hiding - once a
> > method is public, it is fully public. This is, in some sense, against
> > the mindset of the typical OCaml programmer.
>
--
------------------------------------------------------------
Gerd Stolpmann, Darmstadt, Germany [email protected]
Creator of GODI and camlcity.org.
Contact details: http://www.camlcity.org/contact.html
Company homepage: http://www.gerd-stolpmann.de
*** Searching for new projects! Need consulting for system
*** programming in Ocaml? Gerd Stolpmann can help you.
------------------------------------------------------------
--
Caml-list mailing list. Subscription management and archives:
https://sympa-roc.inria.fr/wws/info/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs