CLASS Box Value : INTEGER PUBLIC OVERLOAD PROCEDURE NEW() Value <- 1 ENDPROCEDURE PUBLIC OVERLOAD PROCEDURE NEW(x : INTEGER) Value <- x ENDPROCEDURE PUBLIC OVERLOAD PROCEDURE NEW(x : STRING) Value <- LENGTH(x) ENDPROCEDURE OVERLOAD FUNCTION Get() RETURNS INTEGER RETURN Value ENDFUNCTION OVERLOAD FUNCTION Get(x : INTEGER) RETURNS INTEGER RETURN Value + x ENDFUNCTION OVERLOAD FUNCTION Get(x : STRING) RETURNS STRING RETURN x & "!" ENDFUNCTION OVERLOAD PROCEDURE Set(x : INTEGER) Value <- x ENDPROCEDURE OVERLOAD PROCEDURE Set(x : STRING) Value <- LENGTH(x) ENDPROCEDURE ENDCLASS TYPE Holder DECLARE Item : Box ENDTYPE DECLARE a : Box DECLARE b : Box(7) DECLARE c : Box("four") DECLARE h : Holder DECLARE items : ARRAY[1:2] OF Box OUTPUT a.Get(), b.Get(), c.Get() OUTPUT h.Item.Get(), items[2].Get() OUTPUT b.Get(2) OUTPUT b.Get("ok") CALL a.Set("abc") OUTPUT a.Get() a <- NEW Box(8) OUTPUT a.Get() CALL a.NEW() OUTPUT a.Get() DELETE a