From c0cfe49f3980d8ad779ae24fe43fc91550bb9e45 Mon Sep 17 00:00:00 2001 From: "vadim.s.ivanov" Date: Tue, 8 Aug 2023 18:10:20 +0300 Subject: [PATCH] add all classes --- .../java/basic/lesson11/oop2/Animal.java | 41 +++++++++++++++++++ .../ivanov/java/basic/lesson11/oop2/Cat.java | 7 ++++ .../ivanov/java/basic/lesson11/oop2/Dog.java | 14 +++++++ .../java/basic/lesson11/oop2/Horse.java | 13 ++++++ .../java/basic/lesson11/oop2/MainApp11.java | 40 ++++++++++++++++++ .../basic/lesson11/oop2/WaterfowlAnimal.java | 31 ++++++++++++++ 6 files changed, 146 insertions(+) create mode 100644 src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/Animal.java create mode 100644 src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/Cat.java create mode 100644 src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/Dog.java create mode 100644 src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/Horse.java create mode 100644 src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/MainApp11.java create mode 100644 src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/WaterfowlAnimal.java diff --git a/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/Animal.java b/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/Animal.java new file mode 100644 index 0000000..343cc42 --- /dev/null +++ b/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/Animal.java @@ -0,0 +1,41 @@ +package ru.otus.vadim.ivanov.java.basic.lesson11.oop2; + +//обычные животные +public abstract class Animal { + //имя + String name; + + //скорость бега м/с + private int runSpeed; + + //выносливость ед. + int endurance; + + //Все животные на 1 метр бега тратят 1 ед выносливости + private final int runCost = 1; + + public Animal(String name, int runSpeed, int endurance) { + this.name = name; + this.runSpeed = runSpeed; + this.endurance = endurance; + } + + public int run(int distance) { + int actionCost = runCost * distance; + if(actionCost > endurance) { + System.out.println("Животное "+name+" устало"); + return -1; + } + + endurance -= actionCost; + int time = distance/runSpeed; + System.out.println("Животное "+name+" пробежало "+distance+" м за "+time+" c"); + + return time; + } + + public void info() { + System.out.println("У "+name+" "+endurance+" ед выносливости."); + } + +} diff --git a/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/Cat.java b/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/Cat.java new file mode 100644 index 0000000..77d775e --- /dev/null +++ b/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/Cat.java @@ -0,0 +1,7 @@ +package ru.otus.vadim.ivanov.java.basic.lesson11.oop2; + +public class Cat extends Animal { + public Cat(String name, int runSpeed, int endurance) { + super(name, runSpeed, endurance); + } +} diff --git a/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/Dog.java b/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/Dog.java new file mode 100644 index 0000000..29b3a0b --- /dev/null +++ b/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/Dog.java @@ -0,0 +1,14 @@ +package ru.otus.vadim.ivanov.java.basic.lesson11.oop2; + +public class Dog extends WaterfowlAnimal { + + public Dog(String name, int runSpeed, int swimSpeed, int endurance) { + super(name,runSpeed,swimSpeed,endurance); + } + + @Override + int initSwimCost() { + // Собаки на 1 метр плавания - 2 ед. + return 2; + } +} diff --git a/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/Horse.java b/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/Horse.java new file mode 100644 index 0000000..8603565 --- /dev/null +++ b/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/Horse.java @@ -0,0 +1,13 @@ +package ru.otus.vadim.ivanov.java.basic.lesson11.oop2; + +public class Horse extends WaterfowlAnimal { + public Horse(String name, int runSpeed, int swimSpeed, int endurance) { + super(name,runSpeed,swimSpeed,endurance); + } + + @Override + int initSwimCost() { + //Лошади на 1 метр плавания тратят 4 единицы + return 4; + } +} diff --git a/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/MainApp11.java b/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/MainApp11.java new file mode 100644 index 0000000..2244ab2 --- /dev/null +++ b/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/MainApp11.java @@ -0,0 +1,40 @@ +package ru.otus.vadim.ivanov.java.basic.lesson11.oop2; + +public class MainApp11 { + + public static void main(String[] args) { + System.out.println("----hw11.oop2----"); + + System.out.println("----Cat----"); + Cat barsik = new Cat("Barsik",10, 100); + barsik.info(); + + barsik.run(10); + barsik.info(); + + barsik.run(100); + barsik.info(); + + System.out.println("----Dog----"); + Dog bobik = new Dog("Bobik",20,10,200); + bobik.info(); + + bobik.run(100); + bobik.info(); + + bobik.swim(10); + bobik.info(); + + bobik.swim(150); + + System.out.println("----Horse----"); + Horse maxim = new Horse("Maxim",100,50, 5000); + maxim.run(1000); + maxim.info(); + maxim.swim(500); + maxim.info(); + + + + } +} diff --git a/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/WaterfowlAnimal.java b/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/WaterfowlAnimal.java new file mode 100644 index 0000000..e80f905 --- /dev/null +++ b/src/main/java/ru/otus/vadim/ivanov/java/basic/lesson11/oop2/WaterfowlAnimal.java @@ -0,0 +1,31 @@ +package ru.otus.vadim.ivanov.java.basic.lesson11.oop2; + +//водоплавающие +public abstract class WaterfowlAnimal extends Animal { + + private int swimCost; + private int swimSpeed; + public WaterfowlAnimal(String name, int runSpeed, int swimSpeed, int endurance) { + super(name,runSpeed,endurance); + this.swimSpeed = swimSpeed; + + this.swimCost = initSwimCost(); + + } + + public int swim(int distance) { + int actionCost = swimCost * distance; + if(actionCost > endurance) { + System.out.println("Животное "+name+" устало"); + return -1; + } + + endurance -= actionCost; + int time = distance/swimSpeed; + System.out.println("Животное "+name+" проплыло "+distance+" м за "+time+" c"); + + return time; + } + + abstract int initSwimCost(); +}