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/07/10 12:42] – tvcutsem | at:tutorial:objects [2007/07/10 22:00] – added tvcutsem | ||
---|---|---|---|
Line 120: | Line 120: | ||
This cloning semantics reinforces the semantics of **IS-A** as promoting a unique link between a parent and a child object. **IS-A** delegation most closely corresponds to class-based inheritance. | This cloning semantics reinforces the semantics of **IS-A** as promoting a unique link between a parent and a child object. **IS-A** delegation most closely corresponds to class-based inheritance. | ||
- | ===== Delegation and dynamic inheritance | + | ===== Delegation and Dynamic Inheritance |
- | The parent of an object is bound to a field named '' | + | |
+ | In AmbientTalk, | ||
+ | |||
+ | Because '' | ||
< | < | ||
- | > def openConnection := object: {...}; | + | def openConnection := object: |
- | > def closedConnection := object: {...}; | + | def send(msg) |
- | > def connection := object: { | + | }; |
- | def open() { | + | def closedConnection := object: |
- | super := openConnection.new(); | + | def send(msg) |
- | }; | + | }; |
- | def close() { | + | def connection := object: |
- | super := closedConnection.new(); | + | def init() |
- | }; | + | |
- | } | + | }; |
+ | | ||
+ | super := openConnection; | ||
+ | }; | ||
+ | def close() { | ||
+ | super := closedConnection; | ||
+ | }; | ||
+ | } | ||
</ | </ | ||
+ | |||
+ | In the above example, the '' | ||
<note important> | <note important> | ||
Line 141: | Line 153: | ||
===== First-class delegation ===== | ===== First-class delegation ===== | ||
- | AmbientTalk provides | + | AmbientTalk provides |
< | < | ||
- | > def point3D := extend: point with: { | + | def point3D := extend: point with: { |
- | def z := 0; | + | def z := 0; |
- | def init(aX, aY, aZ) { | + | def init(aX, aY, aZ) { |
- | super^init(aX, | + | super^init(aX, |
- | z := aZ; | + | z := aZ; |
- | }; | + | }; |
- | } | + | } |
</ | </ | ||
- | A message sent to an object using the '' | + | A message sent to an object using the '' |
<note warning> | <note warning> |
at/tutorial/objects.txt · Last modified: 2013/05/17 20:23 by tvcutsem