47 lines
860 B
Plaintext
47 lines
860 B
Plaintext
MODULE Graphics;
|
|
IMPORT StdLog;
|
|
TYPE
|
|
(* class *)
|
|
Point* = POINTER TO LIMITED RECORD
|
|
x-,y-: INTEGER; (* Instance variables *)
|
|
END;
|
|
|
|
(* method *)
|
|
PROCEDURE (p: Point) Abs*(): INTEGER,NEW;
|
|
BEGIN
|
|
RETURN p.x
|
|
END Abs;
|
|
|
|
(* method *)
|
|
PROCEDURE (p: Point) Ord*(): INTEGER,NEW;
|
|
BEGIN
|
|
RETURN p.y
|
|
END Ord;
|
|
|
|
(* method *)
|
|
PROCEDURE (p: Point) Show*,NEW;
|
|
BEGIN
|
|
StdLog.String("Point(");StdLog.Int(p.x);StdLog.String(",");
|
|
StdLog.Int(p.y);StdLog.String(");");StdLog.Ln
|
|
END Show;
|
|
|
|
(* constructor *)
|
|
PROCEDURE NewPoint*(x,y: INTEGER): Point;
|
|
VAR
|
|
p: Point;
|
|
BEGIN
|
|
NEW(p);p.x := x;p.y := y;
|
|
RETURN p
|
|
END NewPoint;
|
|
|
|
PROCEDURE TestPoint*;
|
|
VAR
|
|
p: Point;
|
|
BEGIN
|
|
p := NewPoint(10,20);
|
|
p.Show();
|
|
StdLog.String("Abs:> ");StdLog.Int(p.Abs());StdLog.Ln;
|
|
StdLog.String("Ord:> ");StdLog.Int(p.Ord());StdLog.Ln
|
|
END TestPoint;
|
|
END Graphics.
|