42 lines
865 B
Plaintext
42 lines
865 B
Plaintext
MODULE Point;
|
|
IMPORT
|
|
Strings;
|
|
TYPE
|
|
Instance* = POINTER TO LIMITED RECORD
|
|
x-, y- : LONGINT; (* Instance variables *)
|
|
END;
|
|
|
|
PROCEDURE (self: Instance) Initialize*(x,y: LONGINT), NEW;
|
|
BEGIN
|
|
self.x := x;
|
|
self.y := y
|
|
END Initialize;
|
|
|
|
(* constructor *)
|
|
PROCEDURE New*(x, y: LONGINT): Instance;
|
|
VAR
|
|
point: Instance;
|
|
BEGIN
|
|
NEW(point);
|
|
point.Initialize(x,y);
|
|
RETURN point
|
|
END New;
|
|
|
|
(* methods *)
|
|
PROCEDURE (self: Instance) Add*(other: Instance): Instance, NEW;
|
|
BEGIN
|
|
RETURN New(self.x + other.x,self.y + other.y);
|
|
END Add;
|
|
|
|
PROCEDURE (self: Instance) ToString*(): POINTER TO ARRAY OF CHAR, NEW;
|
|
VAR
|
|
xStr,yStr: ARRAY 64 OF CHAR;
|
|
str: POINTER TO ARRAY OF CHAR;
|
|
BEGIN
|
|
Strings.IntToString(self.x,xStr);
|
|
Strings.IntToString(self.y,yStr);
|
|
NEW(str,128);str^ := "@(" +xStr$ + "," + yStr$ + ")";
|
|
RETURN str
|
|
END ToString;
|
|
END Point.
|