interface AreaCalculable {
double calculateArea();
}
abstract class Graph {
abstract void draw();
abstract void moveTo(int x, int y);
abstract void move(int deltaX, int deltaY);
}
class Point extends Graph {
private int x, y;
Point(int x, int y) {this.x = x; this.y = y;}
@Override void draw() {System.out.println("Drawing Point at (" + x + ", " + y + ")");}
@Override void moveTo(int x, int y) {this.x = x; this.y = y;}
@Override void move(int deltaX, int deltaY) {x += deltaX; y += deltaY; System.out.println("Point moved to (" + x + ", " + y + ")");}
}
class Line extends Graph {
private Point start, end;
Line(Point start, Point end) {this.start = start; this.end = end;}
@Override void draw() {System.out.println("Drawing Line from (" + start.x + ", " + start.y + ") to (" + end.x + ", " + end.y + ")");}
@Override void moveTo(int x, int y) {int dX = x - start.x, dY = y - start.y; start.move(dX, dY); end.move(dX, dY);}
@Override void move(int dX, int dY) {start.move(dX, dY); end.move(dX, dY); System.out.println("Line moved to (" + start.x + ", " + start.y + ") and (" + end.x + ", " + end.y + ")");}
}
class Circle extends Graph implements AreaCalculable {
private Point center;
private double radius;
Circle(Point center, double radius) {this.center = center; this.radius = radius;}
@Override void draw() {System.out.println("Drawing Circle with center at (" + center.x + ", " + center.y + ") and radius " + radius);}
@Override void moveTo(int x, int y) {center.move(x - center.x, y - center.y);}
@Override void move(int dX, int dY) {center.move(center.x + dX, center.y + dY); System.out.println("Circle moved to center (" + center.x + ", " + center.y + ")");}
@Override public double calculateArea() {return Math.PI * radius * radius;}
}
class Rectangle extends Graph implements AreaCalculable {
private Point topLeft;
private int width, height;
Rectangle(Point topLeft, int width, int height) {this.topLeft = topLeft; this.width = width; this.height = height;}
@Override void draw() {System.out.println("Drawing Rectangle with top-left corner at (" + topLeft.x + ", " + topLeft.y + "), width " + width + ", and height " + height);}
@Override void moveTo(int x, int y) {topLeft.move(x, y);}
@Override void move(int dX, int dY) {topLeft.move(topLeft.x + dX, topLeft.y + dY); System.out.println("Rectangle moved to top-left corner (" + topLeft.x + ", " + topLeft.y + ")");}
@Override public double calculateArea() {return width * height;}
}
public class Main {
public static void main(String[] args) {
Point point = new Point(1, 2);
Line line = new Line(new Point(3, 4), new Point(5, 6));
Circle circle = new Circle(new Point(7, 8), 9);
Rectangle rectangle = new Rectangle(new Point(10, 11), 12, 13);
point.draw();
line.draw();
circle.draw();
rectangle.draw();
System.out.println("Area of Circle: " + circle.calculateArea());
System.out.println("Area of Rectangle: " + rectangle.calculateArea());
line.moveTo(15, 16);
rectangle.move(3, 4);
}
}
Graph
Line (задается 2 точками)
Circle (задаєтся точкой центра окружности и радиусом)
Rectangle (задается координатами 4 вершин)
Классы Line, Circle, Rectangle- наследники класса Graph.
Класс Graph должен содержать абстрактный метод drawO, метод moveTo, задающий координаты объекта, а также метод тое, изменяющий координаты на заданную величину.
Остальные классы должны их реализовывать, отображал атрибуты объектов в виде строки, например:
Для draw 0: Рисую Точку, Рисую Прямоугольник и т.д.
Для move Iol: Линия: х=10, y=20, x2=20, y2--10 Прямоугольник: х=2, у=5, w=3, h=4 и т.д.
Для movel: Линия переместилась на 5, 5 позиций и вывести новые координаты фигуры.
Для классов Circle и Rectangle создать и реализовать интерфейс вычисляющий площадь фигуры.
Описать в дочерних классах все необходимые атрибуты, конструкторы и методы (объекты должны иметь координаты и цвет). Обязательно применение инкапсуляции для скрытия атрноутов.
Создать 6 объектов разных классов.
На языке java