DynBindModelExamples: Difference between revisions

From EiffelStudio: an EiffelSoftware project
Jump to navigation Jump to search
Konradm (talk | contribs)
Konradm (talk | contribs)
Line 72: Line 72:


==The naming function==
==The naming function==
We proceed by calculating the naming function. According to its definition we have to do that incrementaly. Meaning that we first calculate <math>\beta_{S_1}</math> then  <math>\beta_{S_2}</math> and finally <math>\beta_{S_3}</math>
We proceed by calculating the naming function. According to its definition we have to do that incrementaly. Meaning that we first calculate <math>\beta_{S_1}</math> then  <math>\beta_{S_2}</math> and finally <math>\beta_{S_3}</math>.
 
Since <math>\beta_{S_1}</math> contains only one class it is sufficient to define <math>\beta_{S_1}\left( C_1 \mapsto C_1 \right)</math>. According to the definition:
 
<math>
  \beta_{S_1}\left( C_1 \mapsto C_1 \right)
      =
  \mbox{id} \left( \mbox{dom} \left( \tau_1 \right) \right)
      \, \cup \,
  \mbox {UNION} \ b \, \cdot \, \left(b \in \alpha_1
      \ |\
  \beta_{ S_{0} } \left( b \mapsto b \right) \ll \eta_{1, b}\right)
</math>
 
We can forget about the right part of the union since <math>C_1\,</math> has no base classes. So we need to calculate:
<math>\mbox{id} \left( \mbox{dom} \left( \tau_1 \right) \right)</math>.

Revision as of 20:15, 6 October 2006

This page shows

Example 1

The system

In this example we are studying a symple system with three classes that contains both renaming and selects:

class
   C1
feature
   f1 do ... end
   g1 do ... end
end
class
   C2
inherit
   B
      rename f1 as f2, g1 as g2 
      redefine f2, g2 end
feature
   f2 do ... end
   g2 do ... end
end
class
   C3
inherit
   C2
      select f1 end
   C1 
      redefine f1, g1 
      select g1 end
feature
   f1 do ... end
   g1 do ... end
end

This system is defined by:

  • S={C1,C2,C3}
  • S1={C1},S2={C1,C2},S3={C1,C2,C3}
  • τ={C1↦{f1↦C1.f1_,g1↦C1.g1_},C2↦{f2↦C2.f2_,g2↦C2.g2_},C3↦{f1↦C3.f1_,g1↦C3.g1_}}
  • η={C2↦{C1↦{f1↦f2,g1↦g2}}}
  • α={C2↦{C1},C3↦{C2,C1}}
  • σ={C3↦{C2↦{f1},C2↦{g1}}}

The naming function

We proceed by calculating the naming function. According to its definition we have to do that incrementaly. Meaning that we first calculate βS1 then βS2 and finally βS3.

Since βS1 contains only one class it is sufficient to define βS1(C1↦C1). According to the definition:

βS1(C1↦C1)=id(dom(τ1))∪UNION b⋅(b∈α1 | βS0(b↦b)≪η1,b)

We can forget about the right part of the union since C1 has no base classes. So we need to calculate: id(dom(τ1)).