diff --git a/src/main/java/ru/lebedev/se/HelloWorld.java b/src/main/java/ru/lebedev/se/HelloWorld.java new file mode 100644 index 0000000..74a2252 --- /dev/null +++ b/src/main/java/ru/lebedev/se/HelloWorld.java @@ -0,0 +1,14 @@ +package ru.lebedev.se; + +/** + * @author Анатолий Лебедев + * @version 1.0.0 + */ + +public class HelloWorld +{ + public static void main(String[] args) { + System.out.println("Привет, мир!"); + } + +} diff --git a/src/main/java/ru/lebedev/se/animals/Animal.java b/src/main/java/ru/lebedev/se/animals/Animal.java new file mode 100644 index 0000000..777e742 --- /dev/null +++ b/src/main/java/ru/lebedev/se/animals/Animal.java @@ -0,0 +1,52 @@ +package ru.lebedev.se.animals; + +public class Animal { + protected String name; + protected double maxRunDistance; + protected double maxJumpHigh; + protected double maxSwimDistance; + + public Animal(String name) { + this.name = name; + } + + public void info() { + System.out.println("Кличка: " + name + ", бегает до: " + roundTwo(maxRunDistance) + + " м., прыгает до: " + roundTwo(maxJumpHigh) + " м., плавает до: " + roundTwo(maxSwimDistance) + " м."); + } + + public boolean isRun(double distance) { + if (distance > 0 && distance < maxRunDistance) return true; + return false; + } + + public void run(double distance) { + if (isRun(distance)) System.out.println(name + " легко пробежит " + distance + " м."); + else System.out.println("Дистанция в " + distance + " м. для " + name + " непосильна."); + } + + public boolean isJump(double distance) { + if (distance > 0 && distance < maxJumpHigh) return true; + return false; + } + + public void jump(double distance) { + if (isJump(distance)) System.out.println(name + " без проблем возьмет высоту в " + distance + " м."); + else System.out.println("Высота в " + distance + " м. для " + name + " непосильна."); + } + + public boolean isSwim(double distance) { + if (distance > 0 && distance < maxSwimDistance) return true; + return false; + } + + public void swim(double distance) { + if (isSwim(distance)) System.out.println(name + " уверенно проплывет " + distance + " м."); + else System.out.println("Дистанция в " + distance + " м. для " + name + " непосильна."); + } + + // Округляем до 2 знаков после запятой + public double roundTwo(double num) { + return Math.round(num * 100.0) / 100.0; + } +} diff --git a/src/main/java/ru/lebedev/se/animals/Cat.java b/src/main/java/ru/lebedev/se/animals/Cat.java new file mode 100644 index 0000000..9a5f98b --- /dev/null +++ b/src/main/java/ru/lebedev/se/animals/Cat.java @@ -0,0 +1,22 @@ +package ru.lebedev.se.animals; + +public class Cat extends Animal { + + public Cat(String name) { + super(name); + maxJumpHigh = 1 + Math.random() * 1; // jump from 1 to 2 meters + maxRunDistance = 100 + Math.random() * 200; // runs min 100 max 300 meters + maxSwimDistance = 0; // cats no swim + } + + @Override + public void info() { + System.out.println("Кот: " + name + ", бегает до: " + roundTwo(maxRunDistance) + + " м., прыгает до: " + roundTwo(maxJumpHigh) + " м., в воду не полезет"); + } + + @Override + public void swim(double distance) { + System.out.println("К сожалению, котики плохо плавают, и дистанция в " + distance + " м. для " + name + " непосильна."); + } +} diff --git a/src/main/java/ru/lebedev/se/animals/Dog.java b/src/main/java/ru/lebedev/se/animals/Dog.java new file mode 100644 index 0000000..4a3f052 --- /dev/null +++ b/src/main/java/ru/lebedev/se/animals/Dog.java @@ -0,0 +1,18 @@ +package ru.lebedev.se.animals; + +public class Dog extends Animal { + + public Dog(String name) { + super(name); + maxJumpHigh = 0.5 + Math.random() * 0.5; // jump from 0.5 to 1 meters + maxRunDistance = 400 + Math.random() * 200; // runs min 400 max 600 meters + maxSwimDistance = 5 + Math.random() * 10; // swim from 5 to 15 meters + } + + @Override + public void info() { + System.out.println("Собака: " + name + ", бегает до: " + roundTwo(maxRunDistance) + + " м., прыгает до: " + roundTwo(maxJumpHigh) + " м., плавает до: " + roundTwo(maxSwimDistance) + " м."); + } + +} diff --git a/src/main/java/ru/lebedev/se/animals/MainClass.java b/src/main/java/ru/lebedev/se/animals/MainClass.java new file mode 100644 index 0000000..26557d6 --- /dev/null +++ b/src/main/java/ru/lebedev/se/animals/MainClass.java @@ -0,0 +1,22 @@ +package ru.lebedev.se.animals; + +public class MainClass { + public static void main(String[] args) { + Animal[] animals = new Animal[4]; + animals[0] = new Cat("Васька"); + animals[1] = new Cat("Машка"); + animals[2] = new Dog("Тузик"); + animals[3] = new Dog("Шарик"); + + for (Animal animal : animals) { + animal.info(); + animal.run(100); + animal.run(450); + animal.jump(0.3); + animal.jump(1); + animal.swim(5); + animal.swim(15); + System.out.println("----------------------"); + } + } +} diff --git a/src/test/java/ru/lebedev/se/AppTest.java b/src/test/java/ru/lebedev/se/HelloWorldTest.java similarity index 78% rename from src/test/java/ru/lebedev/se/AppTest.java rename to src/test/java/ru/lebedev/se/HelloWorldTest.java index 6c4ab1b..c9c0bef 100644 --- a/src/test/java/ru/lebedev/se/AppTest.java +++ b/src/test/java/ru/lebedev/se/HelloWorldTest.java @@ -5,9 +5,9 @@ import org.junit.Test; /** - * Unit test for simple App. + * Unit test for simple HelloWorld. */ -public class AppTest +public class HelloWorldTest { /** * Rigorous Test :-)