PageRenderTime 25ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/trunk/Examples/modula3/class/example.h

#
C++ Header | 44 lines | 40 code | 3 blank | 1 comment | 0 complexity | d0c3da92d5e5168b5e1f2b3cc06e95ae MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. /* File : example.h */
  2. class Shape
  3. {
  4. public:
  5. Shape ()
  6. {
  7. nshapes++;
  8. }
  9. virtual ~ Shape ()
  10. {
  11. nshapes--;
  12. };
  13. double x, y;
  14. void move (double dx, double dy);
  15. virtual double area (void) const = 0;
  16. virtual double perimeter (void) const = 0;
  17. protected:
  18. static int nshapes;
  19. };
  20. class Circle:public Shape
  21. {
  22. private:
  23. double radius;
  24. public:
  25. Circle (double r):radius (r)
  26. {
  27. };
  28. virtual double area (void) const;
  29. virtual double perimeter (void) const;
  30. };
  31. class Square:public Shape
  32. {
  33. private:
  34. double width;
  35. public:
  36. Square (double w):width (w)
  37. {
  38. };
  39. virtual double area (void) const;
  40. virtual double perimeter (void) const;
  41. };