Include Paulo Moura's Logtalk OO LP system
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@53 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
88
Logtalk/examples/sicstus/ellipse3.lgt
Normal file
88
Logtalk/examples/sicstus/ellipse3.lgt
Normal file
@@ -0,0 +1,88 @@
|
||||
|
||||
:- object(ellipse(_RX, _RY, _Color),
|
||||
imports(proto_hierarchy)).
|
||||
|
||||
|
||||
:- info([
|
||||
authors is 'Paulo Moura',
|
||||
version is 1.0,
|
||||
date is 2000/4/22,
|
||||
comment is 'Parametric object for representing geometric ellipses.',
|
||||
parnames is ['RX', 'RY', 'Color'],
|
||||
source is 'Example adopted from the SICStus Objects documentation.']).
|
||||
|
||||
|
||||
:- uses(math_constants).
|
||||
|
||||
|
||||
:- public(color/1).
|
||||
|
||||
:- mode(color(?atom), zero_or_one).
|
||||
|
||||
:- info(color/1, [
|
||||
comment is 'Ellipse color.',
|
||||
argnames is ['Color']]).
|
||||
|
||||
|
||||
:- public(rx/1).
|
||||
|
||||
:- mode(rx(?number), zero_or_one).
|
||||
|
||||
:- info(rx/1, [
|
||||
comment is 'Ellipse x axis.',
|
||||
argnames is ['Rx']]).
|
||||
|
||||
|
||||
:- public(ry/1).
|
||||
|
||||
:- mode(ry(?number), zero_or_one).
|
||||
|
||||
:- info(ry/1, [
|
||||
comment is 'Ellipse y axis.',
|
||||
argnames is ['Ry']]).
|
||||
|
||||
|
||||
:- public(area/1).
|
||||
|
||||
:- mode(area(-number), one).
|
||||
|
||||
:- info(area/1, [
|
||||
comment is 'Ellipse area.',
|
||||
argnames is ['Area']]).
|
||||
|
||||
|
||||
:- public(context/0).
|
||||
|
||||
:- mode(context, one).
|
||||
|
||||
:- info(context/0, [
|
||||
comment is 'Shows execution context (self, this and sender values).']).
|
||||
|
||||
|
||||
color(Color) :-
|
||||
parameter(3, Color).
|
||||
|
||||
|
||||
rx(Rx) :-
|
||||
parameter(1, Rx).
|
||||
|
||||
|
||||
ry(Ry) :-
|
||||
parameter(2, Ry).
|
||||
|
||||
|
||||
area(Area) :-
|
||||
::rx(Rx),
|
||||
::ry(Ry),
|
||||
math_constants::pi(Pi),
|
||||
Area is Rx*Ry*Pi.
|
||||
|
||||
|
||||
context :-
|
||||
write(ellipse3), nl,
|
||||
self(Self), write('self: '), writeq(Self), nl,
|
||||
this(This), write('this: '), writeq(This), nl,
|
||||
sender(Sender), write('sender: '), writeq(Sender), nl, nl.
|
||||
|
||||
|
||||
:- end_object.
|
||||
Reference in New Issue
Block a user