diff --git a/04-java-oop-basic/task05/src/com/example/task05/Point.java b/04-java-oop-basic/task05/src/com/example/task05/Point.java index 447fda27f..362da95f5 100644 --- a/04-java-oop-basic/task05/src/com/example/task05/Point.java +++ b/04-java-oop-basic/task05/src/com/example/task05/Point.java @@ -1,49 +1,58 @@ package com.example.task05; -/** - * Точка в двумерном пространстве - */ -public class Point { +public class Point +{ + private final double x, y; - /** - * Конструктор, инициализирующий координаты точки - * - * @param x координата по оси абсцисс - * @param y координата по оси ординат - */ - public Point(double x, double y) { + { + /** + * Конструктор, инициализирующий координаты точки + * + * @param x координата по оси абсцисс + * @param y координата по оси ординат + */ + } + public Point(double x, double y) + { throw new AssertionError(); } + this.x = x; + this.y = y; /** * Возвращает координату точки по оси абсцисс * * @return координату точки по оси X */ +} public double getX() { // TODO: реализовать throw new AssertionError(); + return x; } /** - * Возвращает координату точки по оси ординат - * - * @return координату точки по оси Y + @@ -31,8 +27,7 @@ public double getX() { + * @return координату точки по оси Y */ public double getY() { // TODO: реализовать throw new AssertionError(); + return y; } /** - * Подсчитывает расстояние от текущей точки до точки, переданной в качестве параметра - * - * @param point вторая точка отрезка + @@ -41,9 +36,12 @@ public double getY() { + * @param point вторая точка отрезка * @return расстояние от текущей точки до переданной */ + public String toString() { + return String.format("(%f, %f)", x, y); + } + public double getLength(Point point) { // TODO: реализовать throw new AssertionError(); + return Math.sqrt(Math.pow(x- point.x,2)+Math.pow(y- point.y,2)); } - -} +} \ No newline at end of file diff --git a/04-java-oop-basic/task05/src/com/example/task05/PolygonalLine.java b/04-java-oop-basic/task05/src/com/example/task05/PolygonalLine.java index 012258eaa..ff6d813d6 100644 --- a/04-java-oop-basic/task05/src/com/example/task05/PolygonalLine.java +++ b/04-java-oop-basic/task05/src/com/example/task05/PolygonalLine.java @@ -1,46 +1,58 @@ package com.example.task05; -/** - * Ломаная линия - */ -public class PolygonalLine { +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +public class PolygonalLine +{ + + private ArrayList points = new ArrayList<>(); /** * Устанавливает точки ломаной линии * * @param points массив точек, которыми нужно проинициализировать ломаную линию */ - public void setPoints(Point[] points) { + public void setPoints(Point[] points) + { // TODO: реализовать + for(Point p : points){ + this.points.add(new Point(p.getX(), p.getY())); + } } /** - * Добавляет точку к ломаной линии - * - * @param point точка, которую нужно добавить к ломаной + @@ -20,7 +28,7 @@ public void setPoints(Point[] points) { + * @param point точка, которую нужно добавить к ломаной */ - public void addPoint(Point point) { + public void addPoint(Point point) + { // TODO: реализовать + points.add(new Point(point.getX(),point.getY())); } /** - * Добавляет точку к ломаной линии - * - * @param x координата по оси абсцисс - * @param y координата по оси ординат + @@ -30,7 +38,7 @@ public void addPoint(Point point) { + * @param y координата по оси ординат */ - public void addPoint(double x, double y) { + public void addPoint(double x, double y) + { // TODO: реализовать + points.add(new Point(x,y)); } /** - * Возвращает длину ломаной линии - * - * @return длину ломаной линии + @@ -39,8 +47,10 @@ public void addPoint(double x, double y){ + * @return длину ломаной линии */ - public double getLength() { + public double getLength() + { // TODO: реализовать throw new AssertionError(); + double sum = 0; + for (int i=0; i loggers = new Hashtable<>(); + protected final String name; + private LoggerLevel level = LoggerLevel.ERROR; + private static final SimpleDateFormat dateFormat = new SimpleDateFormat(" yyyy.MM.dd hh:mm:ss "); + + protected Logger(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + + public static Logger getLogger(String name) + { + return Logger.loggers.computeIfAbsent(name, Logger::new); + } + + public void setLevel(LoggerLevel level) + { + this.level = Objects.requireNonNull(level); + } + + public LoggerLevel getLevel() + { + return level; + } + + private void log(LoggerLevel level, String message) { + + if (level.ordinal() >= this.level.ordinal()) + { + System.err.println("[" + this.level.toString() + "]" + dateFormat.format(new Date()) + + this.name + " - " + message); + } + } + + private void log(LoggerLevel level, String format, Object... objects) + { + if (level.ordinal() >= this.level.ordinal()) + { + System.err.println("[" + this.level.toString() + "]" + dateFormat.format(new Date()) + + this.name + " - " + String.format(format, objects)); + } + } + + public void debug(String message) + { + this.log(LoggerLevel.DEBUG, message); } -} + + public void debug(String format, Object... objects) + { + this.log(LoggerLevel.DEBUG, format, objects); + } + + public void info(String message) + { + this.log(LoggerLevel.INFO, message); + } + + public void info(String format, Object... objects) + { + this.log(LoggerLevel.INFO, format, objects); + } + + public void warning(String message) + { + this.log(LoggerLevel.WARNING, message); + } + + public void warning(String format, Object... objects) + { + this.log(LoggerLevel.WARNING, format, objects); + } + + public void error(String message) + { + this.log(LoggerLevel.ERROR, message); + } + + public void error(String format, Object... objects) + { + this.log(LoggerLevel.ERROR, format, objects); + } + +} \ No newline at end of file