external next up previous contents index
Next: Functional Programming Up: 8.2 Programming: the General Previous: The Elements of Programming

Object Oriented Programming


In a loose sense, Object Oriented Programming is based on the idea that one deals with a community of communicating objects. ``Pure'' OO languages are based on a quite strong ``message passing'' metaphor, i.e. computation is the result of sending messages between objects following clear protocols. From a more local point of view, OO programming means that each object can send, receive and handle a specific set of messages. Messages are handled by so-called methods which do look like ordinary procedures, but can only alter the internal state of an object or send messages to objects.

Now what is object oriented in LambdaMOO ?

  1. All data is stored in objects
  2. Objects have single names (the #xxx number in the MOO db). Each Object has therefore a single identity.
  3. Objects maintain internal state (that is the information contained in the slots)
  4. Objects can inherit values (default property values) and methods (verbs) from other objects. This is in contrast to most OO Languages, where inheritance is disciplined by a subclass relation between abstract ``classes'' that do not function as actual objects - called ``instances''. Inheritance in the MOO obeys a simpler scheme, prototype inheritance, where chosen objects (called ``Generic Objects'' in the MOO) serve as models for other objects. Generic objects are almost the same as their instances.
  5. Inheritance is single, meaning MOO objects can only inherit from a single Generic Object. However, ``feature objects'' do add some flexibility to this scheme.
  6. Internal states of objects (properties) can be accesses from the outside without any special protocol (with restrictions, see permissions). That is not ``pure OO style'' either.

So the MOO language is object-based but not really really object-oriented in the strong sense. This does no mean that one can't program relatively ``pure'' OO style, but it certainly is not enforced.

[more to come]

next up previous contents index external
Next: Functional Programming Up: 8.2 Programming: the General Previous: The Elements of Programming

Daniel K. Schneider
Thu Apr 17 12:43:52 MET DST 1997