at:tutorial:objects
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
at:tutorial:objects [2007/06/29 14:45] – jorge | at:tutorial:objects [2007/07/02 13:15] – jorge | ||
---|---|---|---|
Line 48: | Line 48: | ||
Every object understands the message '' | Every object understands the message '' | ||
+ | |||
+ | AmbientTalk also provides a '' | ||
+ | |||
+ | < | ||
+ | > def clonedPoint := clone: point | ||
+ | </ | ||
===== Delegation and cloning ===== | ===== Delegation and cloning ===== | ||
- | AmbientTalk features object inheritance or delegation. By means of delegation, an object can reuse and extend the defintion of another establishing a parent-child relationship. We identify two kinds of delegation relationships: | + | AmbientTalk features object inheritance or delegation. By means of delegation, an object can reuse and extend the defintion of another establishing a parent-child relationship. We identify two kinds of delegation relationships: |
+ | |||
+ | |||
+ | {{: | ||
The following code shows how to extend objects with a **IS-A** relationship. It uses the '' | The following code shows how to extend objects with a **IS-A** relationship. It uses the '' | ||
Line 90: | Line 100: | ||
</ | </ | ||
- | ===== First-class | + | ===== First-class |
+ | AmbientTalk provides an explicit delegation operator '' | ||
+ | < | ||
+ | > def point3D := extend: point with: { | ||
+ | def z := 0; | ||
+ | def init(aX, aY, aZ) { | ||
+ | super^init(aX, | ||
+ | z := aZ; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
===== Encapsulation ===== | ===== Encapsulation ===== | ||
- | In AmbientTalk, | + | In AmbientTalk, |
< | < | ||
Line 111: | Line 131: | ||
< | < | ||
</ | </ | ||
- | |||
- |
at/tutorial/objects.txt · Last modified: 2013/05/17 20:23 by tvcutsem