From 47e1eb9506c435cced7ec3457162f61cb3b28da1 Mon Sep 17 00:00:00 2001 From: valerpan Date: Sat, 18 Jul 2026 23:57:01 +0300 Subject: [PATCH] Initial commit --- .gitignore | 39 +++++++++ pom.xml | 17 ++++ src/main/java/Zoo.java | 89 +++++++++++++++++++++ src/main/java/animals/Animal.java | 34 ++++++++ src/main/java/animals/Carnivore.java | 24 ++++++ src/main/java/animals/Fly.java | 5 ++ src/main/java/animals/Herbivore.java | 24 ++++++ src/main/java/animals/Run.java | 5 ++ src/main/java/animals/Swim.java | 5 ++ src/main/java/animals/Voice.java | 5 ++ src/main/java/animals/carnivores/Bear.java | 26 ++++++ src/main/java/animals/carnivores/Fish.java | 20 +++++ src/main/java/animals/carnivores/Kotik.java | 26 ++++++ src/main/java/animals/herbivores/Deer.java | 21 +++++ src/main/java/animals/herbivores/Duck.java | 44 ++++++++++ src/main/java/animals/herbivores/Sheep.java | 26 ++++++ src/main/java/employee/Worker.java | 47 +++++++++++ src/main/java/food/Food.java | 7 ++ src/main/java/food/Grass.java | 9 +++ src/main/java/food/Meat.java | 9 +++ 20 files changed, 482 insertions(+) create mode 100644 .gitignore create mode 100644 pom.xml create mode 100644 src/main/java/Zoo.java create mode 100644 src/main/java/animals/Animal.java create mode 100644 src/main/java/animals/Carnivore.java create mode 100644 src/main/java/animals/Fly.java create mode 100644 src/main/java/animals/Herbivore.java create mode 100644 src/main/java/animals/Run.java create mode 100644 src/main/java/animals/Swim.java create mode 100644 src/main/java/animals/Voice.java create mode 100644 src/main/java/animals/carnivores/Bear.java create mode 100644 src/main/java/animals/carnivores/Fish.java create mode 100644 src/main/java/animals/carnivores/Kotik.java create mode 100644 src/main/java/animals/herbivores/Deer.java create mode 100644 src/main/java/animals/herbivores/Duck.java create mode 100644 src/main/java/animals/herbivores/Sheep.java create mode 100644 src/main/java/employee/Worker.java create mode 100644 src/main/java/food/Food.java create mode 100644 src/main/java/food/Grass.java create mode 100644 src/main/java/food/Meat.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..480bdf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,39 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ +.kotlin + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..d590b80 --- /dev/null +++ b/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + org.example + PW2 + 1.0-SNAPSHOT + + + 8 + 8 + UTF-8 + + + \ No newline at end of file diff --git a/src/main/java/Zoo.java b/src/main/java/Zoo.java new file mode 100644 index 0000000..e67f91c --- /dev/null +++ b/src/main/java/Zoo.java @@ -0,0 +1,89 @@ +import animals.Animal; +import animals.Swim; +import animals.carnivores.Bear; +import animals.carnivores.Fish; +import animals.carnivores.Kotik; +import animals.herbivores.Deer; +import animals.herbivores.Duck; +import animals.herbivores.Sheep; +import employee.Worker; +import food.Grass; +import food.Meat; + +import java.util.ArrayList; +import java.util.List; + +public class Zoo { + + private static final List allAnimals = new ArrayList<>(); + + public static void main(String[] args) { + + System.out.println("Зоопарк: "); + + Bear bear1 = new Bear("Миша"); + Kotik kotik1 = new Kotik("Мурка"); + Fish fish1 = new Fish("Олег"); + Deer deer1 = new Deer("Бемби"); + Duck duck1 = new Duck("Кряква"); + Sheep sheep1 = new Sheep("Долли"); + + allAnimals.add(bear1); + allAnimals.add(kotik1); + allAnimals.add(fish1); + allAnimals.add(deer1); + allAnimals.add(duck1); + allAnimals.add(sheep1); + + Worker worker1 = new Worker("Алина"); + Worker worker2 = new Worker("Сергей"); + + Grass grass = new Grass(); + Meat meat = new Meat(); + + kotik1.run(); + bear1.run(); + duck1.fly(); + fish1.swim(); + + worker1.feed(bear1, grass); + worker1.feed(kotik1, meat); + worker1.feed(fish1, meat); + worker2.feed(deer1, grass); + worker2.feed(duck1, grass); + worker2.feed(sheep1, meat); + + worker1.getVoice(bear1); + worker1.getVoice(kotik1); + worker2.getVoice(fish1); + + Animal[] pond = createPond(); + + + if (pond.length > 0){ + + System.out.println("Пруд: "); + + for (Animal animal : pond) { + if (animal.getName() != null) { + ((Swim) animal).swim(); + } + } + } + else { + System.out.println("В пруду никого нет."); + } + } + + public static Animal[] createPond(){ + List pondList = new ArrayList<>(); + + for (Animal animal : allAnimals) { + if (animal instanceof Swim) { + pondList.add(animal); + } + } + + return pondList.toArray(new Animal[0]); + } +} diff --git a/src/main/java/animals/Animal.java b/src/main/java/animals/Animal.java new file mode 100644 index 0000000..824cc84 --- /dev/null +++ b/src/main/java/animals/Animal.java @@ -0,0 +1,34 @@ +package animals; + +import food.Food; + +public abstract class Animal { + private String name; + private int satiety; + + public String getName(){ + return this.name; + } + + public void setName(String name){ + this.name = name; + } + + public int getSatiety(){ + return this.satiety; + } + + public void setSatiety(int satiety){ + this.satiety = satiety; + } + + public abstract void eat(Food food); + + public Animal() { + } + + public Animal(String name) { + this.name = name; + this.satiety = 2; + } +} diff --git a/src/main/java/animals/Carnivore.java b/src/main/java/animals/Carnivore.java new file mode 100644 index 0000000..3c33358 --- /dev/null +++ b/src/main/java/animals/Carnivore.java @@ -0,0 +1,24 @@ +package animals; +import food.Food; +import food.Meat; + +public abstract class Carnivore extends Animal{ + + public Carnivore() {} + + public Carnivore(String name) { + super(name); + } + + @Override + public void eat(Food food) { + int satiety = this.getSatiety(); + if (food instanceof Meat) { + satiety += food.getEnergy(); + System.out.println("Животное ест."); + } + else { + System.out.println("Не получилось. Это животное ест только мясо."); + } + } +} diff --git a/src/main/java/animals/Fly.java b/src/main/java/animals/Fly.java new file mode 100644 index 0000000..a93acaa --- /dev/null +++ b/src/main/java/animals/Fly.java @@ -0,0 +1,5 @@ +package animals; + +public interface Fly { + void fly(); +} diff --git a/src/main/java/animals/Herbivore.java b/src/main/java/animals/Herbivore.java new file mode 100644 index 0000000..182caa0 --- /dev/null +++ b/src/main/java/animals/Herbivore.java @@ -0,0 +1,24 @@ +package animals; +import food.Food; +import food.Grass; + +public class Herbivore extends Animal{ + + public Herbivore() {} + + public Herbivore(String name) { + super(name); + } + + @Override + public void eat(Food food) { + int satiety = this.getSatiety(); + if (food instanceof Grass) { + satiety += food.getEnergy(); + System.out.println("Животное ест."); + } + else { + System.out.println("Не получилось. Это животное ест только траву."); + } + } +} diff --git a/src/main/java/animals/Run.java b/src/main/java/animals/Run.java new file mode 100644 index 0000000..c3b8427 --- /dev/null +++ b/src/main/java/animals/Run.java @@ -0,0 +1,5 @@ +package animals; + +public interface Run { + void run(); +} diff --git a/src/main/java/animals/Swim.java b/src/main/java/animals/Swim.java new file mode 100644 index 0000000..e6fbe4c --- /dev/null +++ b/src/main/java/animals/Swim.java @@ -0,0 +1,5 @@ +package animals; + +public interface Swim { + void swim(); +} diff --git a/src/main/java/animals/Voice.java b/src/main/java/animals/Voice.java new file mode 100644 index 0000000..f4892e3 --- /dev/null +++ b/src/main/java/animals/Voice.java @@ -0,0 +1,5 @@ +package animals; + +public interface Voice { + String getVoice(); +} diff --git a/src/main/java/animals/carnivores/Bear.java b/src/main/java/animals/carnivores/Bear.java new file mode 100644 index 0000000..997933a --- /dev/null +++ b/src/main/java/animals/carnivores/Bear.java @@ -0,0 +1,26 @@ +package animals.carnivores; +import animals.Carnivore; +import animals.Run; +import animals.Voice; + +public class Bear extends Carnivore implements Run, Voice { + + public Bear(String name) { + super(name); + } + + @Override + public void run() { + if (this.getName() != null){ + System.out.println("Медведь " + this.getName() + " бегает."); + } + else { + System.out.println("Медведь + бегает."); + } + } + + @Override + public String getVoice(){ + return "гррр"; + } +} diff --git a/src/main/java/animals/carnivores/Fish.java b/src/main/java/animals/carnivores/Fish.java new file mode 100644 index 0000000..2aabb6c --- /dev/null +++ b/src/main/java/animals/carnivores/Fish.java @@ -0,0 +1,20 @@ +package animals.carnivores; +import animals.Carnivore; +import animals.Swim; + +public class Fish extends Carnivore implements Swim { + + public Fish(String name) { + super(name); + } + + @Override + public void swim() { + if (this.getName() != null){ + System.out.println("Рыба " + this.getName() + " плавает."); + } + else { + System.out.println("Рыба плавает."); + } + } +} diff --git a/src/main/java/animals/carnivores/Kotik.java b/src/main/java/animals/carnivores/Kotik.java new file mode 100644 index 0000000..8ef1161 --- /dev/null +++ b/src/main/java/animals/carnivores/Kotik.java @@ -0,0 +1,26 @@ +package animals.carnivores; +import animals.Carnivore; +import animals.Run; +import animals.Voice; + +public class Kotik extends Carnivore implements Run, Voice { + + public Kotik(String name) { + super(name); + } + + @Override + public void run() { + if (this.getName() != null){ + System.out.println("Котик " + this.getName() + " бегает."); + } + else { + System.out.println("Котик бегает."); + } + } + + @Override + public String getVoice(){ + return "мяу"; + } +} diff --git a/src/main/java/animals/herbivores/Deer.java b/src/main/java/animals/herbivores/Deer.java new file mode 100644 index 0000000..a4dae45 --- /dev/null +++ b/src/main/java/animals/herbivores/Deer.java @@ -0,0 +1,21 @@ +package animals.herbivores; +import animals.Herbivore; +import animals.Run; + +public class Deer extends Herbivore implements Run { + + public Deer(String name) { + super(name); + } + + @Override + public void run() { + if (this.getName() != null){ + System.out.println("Олень " + this.getName() + " бегает."); + } + else { + System.out.println("Олень бегает."); + } + } + +} diff --git a/src/main/java/animals/herbivores/Duck.java b/src/main/java/animals/herbivores/Duck.java new file mode 100644 index 0000000..65175f1 --- /dev/null +++ b/src/main/java/animals/herbivores/Duck.java @@ -0,0 +1,44 @@ +package animals.herbivores; +import animals.*; + +public class Duck extends Herbivore implements Run, Swim, Fly, Voice { + + public Duck(String name) { + super(name); + } + + @Override + public void run() { + if (this.getName() != null){ + System.out.println("Утка " + this.getName() + " бегает."); + } + else { + System.out.println("Утка бегает."); + } + } + + @Override + public void swim() { + if (this.getName() != null){ + System.out.println("Утка " + this.getName() + " плавает."); + } + else { + System.out.println("Утка плаваеет."); + } + } + + @Override + public void fly() { + if (this.getName() != null){ + System.out.println("Утка " + this.getName() + " летает."); + } + else { + System.out.println("Утка летает."); + } + } + + @Override + public String getVoice(){ + return "кря"; + } +} diff --git a/src/main/java/animals/herbivores/Sheep.java b/src/main/java/animals/herbivores/Sheep.java new file mode 100644 index 0000000..3b08fa3 --- /dev/null +++ b/src/main/java/animals/herbivores/Sheep.java @@ -0,0 +1,26 @@ +package animals.herbivores; +import animals.Herbivore; +import animals.Run; +import animals.Voice; + +public class Sheep extends Herbivore implements Run, Voice { + + public Sheep(String name) { + super(name); + } + + @Override + public void run() { + if (this.getName() != null){ + System.out.println("Овечка " + this.getName() + " бегает."); + } + else { + System.out.println("Овечка бегает."); + } + } + + @Override + public String getVoice(){ + return "бее"; + } +} diff --git a/src/main/java/employee/Worker.java b/src/main/java/employee/Worker.java new file mode 100644 index 0000000..4c2a0c7 --- /dev/null +++ b/src/main/java/employee/Worker.java @@ -0,0 +1,47 @@ +package employee; + +import animals.Animal; +import animals.Swim; +import animals.Voice; +import food.Food; +import food.Grass; +import food.Meat; + +public class Worker { + private String Name; + + public void setName(String name) { + Name = name; + } + + public String getName() { + return Name; + } + + public void feed(Animal animal, Food food){ + String type = new String(); + + if (food instanceof Grass) type = " травой. "; + if (food instanceof Meat) type = " мясом. "; + + if (this.Name != null && animal.getName() != null) { + System.out.println(this.getName() + " кормит животное " + animal.getName() + type); + animal.eat(food); + } + } + + public void getVoice(Animal animal){ + if (this.Name != null || animal.getName() != null){ + if (animal instanceof Voice){ + System.out.println(this.getName() + " говорит с животным: " + animal.getName() + ". Животное отвечает - "+ ((Voice) animal).getVoice() +"."); + } + else { + System.out.println(this.getName() + " пытается говорить с животным: " + animal.getName() + ". Это животное не умеет издавать звук."); + } + } + } + + public Worker(String name){ + setName(name); + } +} diff --git a/src/main/java/food/Food.java b/src/main/java/food/Food.java new file mode 100644 index 0000000..059913f --- /dev/null +++ b/src/main/java/food/Food.java @@ -0,0 +1,7 @@ +package food; + +import javax.naming.Name; + +public abstract class Food { + public abstract int getEnergy(); +} diff --git a/src/main/java/food/Grass.java b/src/main/java/food/Grass.java new file mode 100644 index 0000000..d160936 --- /dev/null +++ b/src/main/java/food/Grass.java @@ -0,0 +1,9 @@ +package food; + +public class Grass extends Food{ + + @Override + public int getEnergy() { + return 1; + } +} diff --git a/src/main/java/food/Meat.java b/src/main/java/food/Meat.java new file mode 100644 index 0000000..aba5463 --- /dev/null +++ b/src/main/java/food/Meat.java @@ -0,0 +1,9 @@ +package food; + +public class Meat extends Food{ + + @Override + public int getEnergy() { + return 2; + } +}