52 lines
809 B
Plaintext
52 lines
809 B
Plaintext
|
:- object(polygon,
|
||
|
extends(shape)).
|
||
|
|
||
|
|
||
|
:- info([
|
||
|
author is 'Paulo Moura',
|
||
|
version is 1.0,
|
||
|
date is 2003/2/3,
|
||
|
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']]).
|
||
|
|
||
|
|
||
|
:- public(side/1).
|
||
|
|
||
|
:- mode(side(?atom), zero_or_one).
|
||
|
|
||
|
:- info(side/1, [
|
||
|
comment is 'Polygon side length.',
|
||
|
argnames is ['Length']]).
|
||
|
|
||
|
|
||
|
side(1). % default side length
|
||
|
|
||
|
|
||
|
:- end_object.
|