Advertisement
MaximErofeev

Untitled

Feb 21st, 2021
1,172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 4.23 KB | None | 0 0
  1. /*
  2. По 2й лабе:
  3.  
  4. Создать иерархию графических классов в соответствии с рисунком (или использовать свой вариант)…………
  5.  
  6. ТОЧКА ОКРУЖНОСТЬ ЭЛЛИПС
  7.  
  8. ОТРЕЗОК ТРЕУГОЛЬНИК
  9.  
  10. ПРЯМОУГОЛЬНИК
  11.  
  12. …………………………………………………………
  13.  
  14. В общем, тема пройденная.
  15. абстрактный класс Shape.
  16. от него можно уже чего-то наследовать.
  17.  
  18. Окружность может быть частным случаем ( а значит потомком ) эллипса.
  19.  
  20. Все остальные иерархиями не связаны.
  21.  
  22. Точка — особый случай, она может быть частью других фигур.
  23.  
  24. */
  25.  
  26. public abstract class Shape {
  27.     public abstract void draw(Graphics g);
  28. }
  29.  
  30. public class Point extends Shape {
  31.  
  32.     private int xCoord;
  33.     private int yCoord;
  34.  
  35.     public Point(x,y) {
  36.  
  37.         this.xCoord = x;
  38.         this.yCoord = y;
  39.     }
  40.  
  41.     public void draw(Graphcs g) {
  42.         // тут она как-то рисуется…
  43.     }
  44. }
  45.  
  46. public class Ellipse extends Shape {
  47.  
  48.     private Point radius1;
  49.     private Point radius2;
  50.     private float length;
  51.  
  52.     // Емнип, элипс определяется 2-мя радиусами
  53.     // суммой расстояний от окружности до радиусов.
  54.     public Ellipse(Point rad1, Point rad2, float len) {
  55.         this.radius1 = rad1;
  56.         this.radius2 = rad2;
  57.         this.length = len;
  58.     }
  59.  
  60.     public void draw(Graphcs g) {
  61.         // тут она как-то рисуется…
  62.     }
  63. }
  64.  
  65. public class Circle extends Ellipse {
  66.  
  67.     // Круг это элипс с совпадающими радиусами.
  68.     public Circle(Point rad, float len) {
  69.     super(rad, rad, len);
  70.     }
  71.  
  72.     //Его, даже, рисовать не нужно.
  73.     //public void draw(Graphcs g) {}
  74. }
  75.  
  76. /*
  77. Отрезок, треугольник, прямоугольник — аналогично.
  78. Отрезок соединяет 2 точки,
  79. Треугольник 3, Прямоугольник 4.
  80. Тащить отрезки в прямоугольник, имхо, не нужно.
  81.  
  82.  
  83.  
  84.  
  85. Не знаю, на кой хрен пихать сюда статические методы.
  86. Но например, ты можешь сдалать так же, как сделали с яблоками-лимонами.
  87. фабричный метод ( статический ) , который создаёт фигуры.
  88. Он может их случайными создавать, в случайных местах.
  89.  
  90. типо, как-то так.
  91. */
  92.  
  93. /*
  94. Лаба 3:
  95.  
  96. Они хотят, чтобы был метод Move…
  97. ну пусть будет так:
  98. */
  99.  
  100. public abstract class Shape {
  101.     public abstract void draw(Graphics g);
  102.     public abstract void move(int dx, int dy); // аналогично, реализуется в потомках.
  103. }
  104.  
  105. //И этот метод реализуется, например, так:
  106.  
  107.  
  108.  
  109. public class Point extends Shape {
  110.  
  111.     private int xCoord;
  112.     private int yCoord;
  113.  
  114.     public Point(x,y) {
  115.  
  116.         this.xCoord = x;
  117.         this.yCoord = y;
  118.     }
  119.  
  120.     public void draw(Graphcs g) {
  121.         // тут она как-то рисуется…
  122.     }
  123.    
  124.     // Нужны будут позже.
  125.     public int getX() { return this.xCoord; }
  126.     public int getY() { return this.yCoord; }
  127.  
  128.     public void move (int dx, int dy) {
  129.         this.xCoord += dx;
  130.         this.yCoord += dy;
  131.     }
  132. }
  133.  
  134.  
  135.  
  136. public class Ellipse extends Shape {
  137.  
  138.     private Point radius1;
  139.     private Point radius2;
  140.     private float length;
  141.  
  142. //    ……………
  143.    
  144.     public void move (int dx, int dy) {
  145.         this.radius1 = new Point( ( radius1.getX()+dx ) , ( radius1.getY()+dy ) );
  146.         this.radius2 = new Point( ( radius2.getX()+dx ) , ( radius2.getY()+dy ) );  
  147.     }
  148. }
  149.  
  150.  
  151.  
  152. public class Circle extends Ellipse {
  153.  
  154. //    …………
  155.  
  156.     public void move (int dx, int dy) {
  157.         super(dx, dy);
  158.     }
  159. }
  160.  
  161.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement