This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
at:tutorial:objects [2007/06/27 11:59] jorge |
at:tutorial:objects [2013/05/17 20:23] tvcutsem updated |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | In this section, we explain how the object-oriented programming paradigm is implemented in AmbientTalk. | ||
- | |||
- | ===== Objects, fields and methods ===== | ||
- | In AmbientTalk, | ||
- | classes. Rather, they are either created ex-nihilo or by cloning | ||
- | and adapting existing objects, like prototypes in the SELF programming language. The definition of such a prototypical object contains a number of fields and methods that represent the object' | ||
- | |||
- | The following code illustrates the ex-nihilo creation of an object: | ||
- | |||
- | < | ||
- | > def Point := object: { | ||
- | def x := 0; | ||
- | def y := 0; | ||
- | def init(xCoord, | ||
- | x := xCoord; | ||
- | y := yCoord; | ||
- | }; | ||
- | def sumOfSquares() { x*x + y*y }; | ||
- | } | ||
- | >>< | ||
- | </ | ||
- | |||
- | The state of the '' | ||
- | This object can be instantiated to create new points as follows: | ||
- | |||
- | < | ||
- | > def initialPoint := Point.new(0, | ||
- | >>< | ||
- | </ | ||
- | |||
- | Every object understands the message new, which creates a clone (a shallow copy) of the receiver object and initializes the clone by invoking its init method with the arguments that were passed to new. Hence, the init method plays the role of “constructor” for AmbientTalk objects. AmbientTalk’s object instantiation protocol closely corresponds to class instantiation in class-based languages, except that the new object is a clone of an existing object, rather than an empty object allocated from a class. | ||
- | |||
- | ===== Sending messages ===== | ||
- | In AmbientTalk, | ||
- | |||
- | ===== Cloning and instantiation ===== | ||
- | |||
- | |||
- | |||
- | ===== Delegation and Dynamic Inheritance ===== | ||
- | |||
- | ===== Delegation and cloning ===== | ||
- | |||
- | ===== First-class Delegation ===== | ||
- | |||
- | ===== Encapsulation ===== | ||