t_classmethod.mod 778 B

123456789101112131415161718192021222324252627
  1. MODULE TClassMethod;
  2. (* Class methods: a hidden THIS receiver, field access in bodies,
  3. value and VAR formals, and a value-returning method. Exit 7. *)
  4. VAR ExitCode : INTEGER;
  5. TYPE
  6. CLASS Point;
  7. x, y : INTEGER;
  8. PROCEDURE Set(a, b : INTEGER);
  9. PROCEDURE Sum() : INTEGER;
  10. PROCEDURE CopyX(VAR dst : INTEGER);
  11. END Point;
  12. CLASS IMPLEMENTATION Point;
  13. PROCEDURE Set(a, b : INTEGER);
  14. BEGIN x := a; y := b END Set;
  15. PROCEDURE Sum() : INTEGER;
  16. BEGIN RETURN x + y END Sum;
  17. PROCEDURE CopyX(VAR dst : INTEGER);
  18. BEGIN dst := x END CopyX;
  19. END Point;
  20. VAR p : Point; got : INTEGER;
  21. BEGIN
  22. p.Set(3, 4);
  23. p.CopyX(got); (* VAR formal through the receiver *)
  24. IF got = 3 THEN
  25. ExitCode := p.Sum()
  26. ELSE ExitCode := 100 END
  27. END TClassMethod.