Below we have pictured how communication with
an object takes place.
\setlength{\unitlength}{0.01cm}
\nop{
)
}
\hspace{1cm}
\begin{tabular}[t]{|p{ 3.2cm}|p{ 3.2cm}|p{ 3.2cm}|} \hline
\begin{picture}(374,240)(0,0)
\put(110,160){\makebox(0,0)[r]{ } }
\put(220,160){\makebox(0,0)[l]{ } }
\put(110,160){\circle{10}}
\put(220,160){\circle*{10}}
\put(110, 170){\line(0,6){ 40}}
\multiput( 120,160)(10,0){ 11}{\line(6,0){5}}
\end{picture}
&
\begin{picture}(374,240)(0,0)
\put(110,160){\makebox(0,0)[r]{ } }
\put(110,60){\makebox(0,0)[r]{ } }
\put(220,160){\makebox(0,0)[l]{ } }
\put(110,60){\circle{10}}
\put(110,160){\circle{10}}
\put(220,160){\circle*{10}}
\put(110, 170){\line(0,6){ 40}}
\multiput(220, 70)(0, 20){ 5}{\line(0,6){10}}
\multiput( 120,160)(10,0){ 11}{\line(6,0){5}}
\end{picture}
&
\begin{picture}(374,240)(0,0)
\put(110,160){\makebox(0,0)[r]{ } }
\put(110,60){\makebox(0,0)[r]{ } }
\put(220,60){\makebox(0,0)[l]{ } }
\put(220,160){\makebox(0,0)[l]{ } }
\put(110,60){\circle{10}}
\put(110,160){\circle{10}}
\put(220,60){\circle{10}}
\put(220,160){\circle*{10}}
\put(110, 170){\line(0,6){ 40}}
\put(110, 50){\line(0,-6){20}}
\multiput(220, 70)(0, 20){ 5}{\line(0,6){10}}
\multiput( 120,60)(10,0){ 11}{\line(6,0){5}}
\put( 130,60){\vector(-4,0){ 20}}
\multiput( 120,160)(10,0){ 11}{\line(6,0){5}}
\end{picture}
\\ \hline
\end{tabular}
Assume that we have an object c.
The goal asks the object c to
evaluate , where m is a predicate name and t
represents the arguments of the call. \id{
We use a predicate name m since, adopting standard
terminology, we will speak of the methods of an object,
which in our case are ordinary clauses.
}
While the goal is being evaluated,
the caller waits for an answer.
Backtracking over the results, indicated by ,
may take place as long as there are alternative solutions.
Backtracking is initiated by the object
that called for the method.