User Tools

Site Tools


at:tutorial:objects

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
at:tutorial:objects [2007/06/29 10:39] jorgeat:tutorial:objects [2007/06/29 11:01] jorge
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. An object can extend to another by using either an **is-a** or a **share-a** relationshiprepresented by the ''extend: with:'' and ''share: with:'' language constructs respectively.+AmbientTalk features object inheritance or delegation. By means of delegation, an object can reuse and extend the defintion of another establishing a child-parent relationshipWe identify two kinds of delegation relationships: **IS-A** and **SHARE-A**, embodied by the ''extend: with:'' and ''share: with:'' language constructs respectively. 
 + 
 +The following code shows how to extend objects with a **IS-A** relationship. 
 + 
 +<code> 
 +> def point3D := extend: point with: { 
 +    def z := 0; 
 +    def sumofsquares() { 
 +      super.sumofsquares() + z*z 
 +    } 
 +  } 
 +>><object:13393337> 
 +</code> 
 + 
 +The following code shows how to extend objects with a **SHARE-A** relationship. 
 + 
 +<code> 
 +> def point3D := share: point with: { 
 +    def z := 0; 
 +    def sumofsquares() { 
 +      super.sumofsquares() + z*z 
 +    } 
 +  } 
 +>><object:13323337> 
 +</code> 
 + 
 + 
 +These relationships defines two different semantics for clonning child objects 
 + 
 + 
 + in the way  
 + 
  
 . While both relationships  . While both relationships 
at/tutorial/objects.txt · Last modified: 2013/05/17 20:23 by tvcutsem