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 08:43] – jorge | at:tutorial:objects [2007/06/29 11:01] – jorge | ||
---|---|---|---|
Line 27: | Line 27: | ||
</ | </ | ||
- | In the example above, the state of the '' | + | In the example above, the state of the '' |
===== Sending messages ===== | ===== Sending messages ===== | ||
Line 52: | Line 52: | ||
===== Delegation and Dynamic Inheritance ===== | ===== Delegation and Dynamic Inheritance ===== | ||
+ | AmbientTalk features object inheritance or delegation. By means of delegation, an object can reuse and extend the defintion of another establishing a child-parent relationship. We identify two kinds of delegation relationships: | ||
+ | |||
+ | The following code shows how to extend objects with a **IS-A** relationship. | ||
+ | |||
+ | < | ||
+ | > def point3D := extend: point with: { | ||
+ | def z := 0; | ||
+ | def sumofsquares() { | ||
+ | super.sumofsquares() + z*z | ||
+ | } | ||
+ | } | ||
+ | >>< | ||
+ | </ | ||
+ | |||
+ | The following code shows how to extend objects with a **SHARE-A** relationship. | ||
+ | |||
+ | < | ||
+ | > def point3D := share: point with: { | ||
+ | def z := 0; | ||
+ | def sumofsquares() { | ||
+ | super.sumofsquares() + z*z | ||
+ | } | ||
+ | } | ||
+ | >>< | ||
+ | </ | ||
+ | |||
+ | |||
+ | These relationships defines two different semantics for clonning child objects | ||
+ | |||
+ | |||
+ | in the way | ||
+ | |||
+ | |||
+ | |||
+ | . While both relationships | ||
+ | |||
+ | | ||
+ | |||
===== Delegation and cloning ===== | ===== Delegation and cloning ===== |
at/tutorial/objects.txt · Last modified: 2013/05/17 20:23 by tvcutsem