Logtalk 2.26.2 files.
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1487 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
117
Logtalk/examples/shapes/ph/ph.lgt
Normal file
117
Logtalk/examples/shapes/ph/ph.lgt
Normal file
@@ -0,0 +1,117 @@
|
||||
|
||||
:- object(shape). % an object with no hierarchy relations with other
|
||||
% objects is always compiled as a prototype
|
||||
:- info([
|
||||
author is 'Paulo Moura',
|
||||
version is 1.0,
|
||||
date is 2003/2/3,
|
||||
comment is 'Generic geometric shape.']).
|
||||
|
||||
:- public(color/1).
|
||||
:- mode(color(?atom), zero_or_one).
|
||||
:- info(color/1, [
|
||||
comment is 'Shape color.',
|
||||
argnames is ['Color']]).
|
||||
|
||||
:- public(position/2).
|
||||
:- mode(position(?integer, ?integer), zero_or_one).
|
||||
:- info(position/2, [
|
||||
comment is 'Shape position.',
|
||||
argnames is ['X', 'Y']]).
|
||||
|
||||
color(red). % default shape color
|
||||
|
||||
position(0, 0). % default shape position
|
||||
|
||||
:- end_object.
|
||||
|
||||
|
||||
:- object(polygon,
|
||||
extends(shape)).
|
||||
|
||||
:- info([
|
||||
author is 'Paulo Moura',
|
||||
version is 1.1,
|
||||
date is 2004/1/8,
|
||||
comment is 'Generic polygon.']).
|
||||
|
||||
:- public(nsides/1).
|
||||
:- mode(nsides(?integer), zero_or_one).
|
||||
:- info(nsides/1, [
|
||||
comment is 'Polygon number of sides.',
|
||||
argnames is ['Number']]).
|
||||
|
||||
:- public(area/1).
|
||||
:- mode(area(-float), zero_or_one).
|
||||
:- info(area/1, [
|
||||
comment is 'Polygon area.',
|
||||
argnames is ['Area']]).
|
||||
|
||||
:- public(perimeter/1).
|
||||
:- mode(perimeter(?atom), zero_or_one).
|
||||
:- info(perimeter/1, [
|
||||
comment is 'Polygon perimeter.',
|
||||
argnames is ['Perimeter']]).
|
||||
|
||||
:- end_object.
|
||||
|
||||
|
||||
:- object(regular_polygon,
|
||||
extends(polygon)).
|
||||
|
||||
:- info([
|
||||
author is 'Paulo Moura',
|
||||
version is 1.1,
|
||||
date is 2004/1/8,
|
||||
comment is 'Generic regular polygon.']).
|
||||
|
||||
:- public(side/1).
|
||||
:- mode(side(?atom), zero_or_one).
|
||||
:- info(side/1, [
|
||||
comment is 'Regular polygon side length.',
|
||||
argnames is ['Length']]).
|
||||
|
||||
side(1). % default side length
|
||||
|
||||
perimeter(Perimeter) :-
|
||||
::nsides(Number),
|
||||
::side(Side),
|
||||
Perimeter is Number*Side.
|
||||
|
||||
:- end_object.
|
||||
|
||||
|
||||
:- object(square,
|
||||
extends(regular_polygon)).
|
||||
|
||||
:- info([
|
||||
author is 'Paulo Moura',
|
||||
version is 1.0,
|
||||
date is 2003/2/3,
|
||||
comment is 'Geometric square.']).
|
||||
|
||||
nsides(4).
|
||||
|
||||
area(Area) :-
|
||||
::side(Side),
|
||||
Area is Side*Side.
|
||||
|
||||
:- end_object.
|
||||
|
||||
|
||||
:- object(q1,
|
||||
extends(square)).
|
||||
|
||||
:- end_object.
|
||||
|
||||
|
||||
:- object(q2,
|
||||
extends(square)).
|
||||
|
||||
position(2, 3).
|
||||
|
||||
color(blue).
|
||||
|
||||
side(3).
|
||||
|
||||
:- end_object.
|
Reference in New Issue
Block a user