diff --git a/src/main/java/lesson_3/Item.java b/src/main/java/lesson_3/Item.java new file mode 100644 index 0000000..9dae6c3 --- /dev/null +++ b/src/main/java/lesson_3/Item.java @@ -0,0 +1,15 @@ +package lesson_3; + +public abstract class Item { + protected String name; + + public Item(String name) { + this.name = name; + } + + public abstract void displayInfo(); + + public String getName() { + return name; + } +} diff --git a/src/main/java/lesson_3/park/Park.java b/src/main/java/lesson_3/park/Park.java new file mode 100644 index 0000000..942d90d --- /dev/null +++ b/src/main/java/lesson_3/park/Park.java @@ -0,0 +1,50 @@ +package lesson_3.park; + +import lesson_3.Item; + +import java.util.ArrayList; +import java.util.List; + +public class Park { + private String parkName; + private List attractions; + + public Park(String parkName) { + this.parkName = parkName; + this.attractions = new ArrayList<>(); + } + + public void addAttraction(String name, String workingHours, double cost) { + attractions.add(new Attraction(name, workingHours, cost)); + } + + public void showAttractions() { + System.out.println("Парк: " + parkName); + for (Attraction attraction : attractions) { + attraction.displayInfo(); + } + } + + public String getParkName() { + return parkName; + } + + public class Attraction extends Item { + private String workingHours; + private double cost; + + public Attraction(String name, String workingHours, double cost) { + super(name); + this.workingHours = workingHours; + this.cost = cost; + } + + @Override + public void displayInfo() { + System.out.println("Аттракцион: " + name); + System.out.println("Время работы: " + workingHours); + System.out.println("Стоимость: " + cost); + System.out.println("---------------------------"); + } + } +} \ No newline at end of file diff --git a/src/main/java/lesson_3/park/ParkMain.java b/src/main/java/lesson_3/park/ParkMain.java new file mode 100644 index 0000000..438a892 --- /dev/null +++ b/src/main/java/lesson_3/park/ParkMain.java @@ -0,0 +1,22 @@ +package lesson_3.park; + +public class ParkMain { + public static void main(String[] args) { + Park amusementPark = new Park("Весёлый городок"); + + amusementPark.addAttraction("Колесо обозрения", "10:00 - 22:00", 300); + amusementPark.addAttraction("Американские горки", "11:00 - 21:00", 500); + amusementPark.addAttraction("Комната страха", "14:00 - 23:00", 400); + + Park pokatushkiPark = new Park("Покатушки"); + + pokatushkiPark.addAttraction("Машинки", "10:00 - 22:00", 200); + pokatushkiPark.addAttraction("Американские горки", "11:00 - 21:00", 500); + pokatushkiPark.addAttraction("Комната страха", "14:00 - 23:00", 400); + pokatushkiPark.addAttraction("Карусель", "10:00 - 22:00", 250); + + amusementPark.showAttractions(); + System.out.println(); + pokatushkiPark.showAttractions(); + } +} \ No newline at end of file diff --git a/src/main/java/lesson_3/product/Product.java b/src/main/java/lesson_3/product/Product.java new file mode 100644 index 0000000..8801cf0 --- /dev/null +++ b/src/main/java/lesson_3/product/Product.java @@ -0,0 +1,32 @@ +package lesson_3.product; + +import lesson_3.Item; + +public class Product extends Item { + private String productionDate; + private String manufacturer; + private String countryOfOrigin; + private double price; + private boolean isReserved; + + public Product(String name, String productionDate, String manufacturer, + String countryOfOrigin, double price, boolean isReserved) { + super(name); + this.productionDate = productionDate; + this.manufacturer = manufacturer; + this.countryOfOrigin = countryOfOrigin; + this.price = price; + this.isReserved = isReserved; + } + + @Override + public void displayInfo() { + System.out.println("Название: " + name); + System.out.println("Дата производства: " + productionDate); + System.out.println("Производитель: " + manufacturer); + System.out.println("Страна происхождения: " + countryOfOrigin); + System.out.println("Цена: " + price); + System.out.println("Забронировано: " + (isReserved ? "Да" : "Нет")); + System.out.println("---------------------------"); + } +} \ No newline at end of file diff --git a/src/main/java/lesson_3/product/ProductMain.java b/src/main/java/lesson_3/product/ProductMain.java new file mode 100644 index 0000000..d31da67 --- /dev/null +++ b/src/main/java/lesson_3/product/ProductMain.java @@ -0,0 +1,22 @@ +package lesson_3.product; + +public class ProductMain { + public static void main(String[] args) { + Product[] productsArray = new Product[5]; + + productsArray[0] = new Product("Samsung S25 Ultra", "01.02.2025", + "Samsung Corp.", "Korea", 5599, true); + productsArray[1] = new Product("Apple iPhone 15", "15.09.2024", + "Apple Inc.", "USA", 9999, false); + productsArray[2] = new Product("Xiaomi Mi 13", "10.03.2024", + "Xiaomi", "China", 4999, false); + productsArray[3] = new Product("Sony WH-1000XM5", "20.07.2023", + "Sony", "Japan", 2999, true); + productsArray[4] = new Product("Dell XPS 13", "05.11.2023", + "Dell", "USA", 11999, false); + + for (Product p : productsArray) { + p.displayInfo(); + } + } +} \ No newline at end of file diff --git a/src/main/java/lesson_4/animals/Animal.java b/src/main/java/lesson_4/animals/Animal.java new file mode 100644 index 0000000..5071451 --- /dev/null +++ b/src/main/java/lesson_4/animals/Animal.java @@ -0,0 +1,37 @@ +package lesson_4.animals; + +import lombok.Getter; + +public abstract class Animal { + protected String name; + protected int runLimit; + protected int swimLimit; + + @Getter + private static int animalsCount = 0; + + public Animal(String name, int runLimit, int swimLimit) { + this.name = name; + this.runLimit = runLimit; + this.swimLimit = swimLimit; + animalsCount++; + } + + public void run(int distance) { + if (distance <= runLimit) { + System.out.println(name + " пробежал " + distance + " м."); + } else { + System.out.println(name + " не смог пробежать " + distance + " м."); + } + } + + public void swim(int distance) { + if (swimLimit == 0) { + System.out.println(name + " не умеет плавать."); + } else if (distance <= swimLimit) { + System.out.println(name + " проплыл " + distance + " м."); + } else { + System.out.println(name + " не смог проплыть " + distance + " м."); + } + } +} \ No newline at end of file diff --git a/src/main/java/lesson_4/animals/AnimalsMain.java b/src/main/java/lesson_4/animals/AnimalsMain.java new file mode 100644 index 0000000..938378e --- /dev/null +++ b/src/main/java/lesson_4/animals/AnimalsMain.java @@ -0,0 +1,42 @@ +package lesson_4.animals; + +public class AnimalsMain { + public static void main(String[] args) { + Cat[] cats = { + new Cat("Барсик"), + new Cat("Мурка"), + new Cat("Рыжик") + }; + + Dog dog = new Dog("Бобик"); + + Bowl bowl = new Bowl(20); + + for (Cat cat : cats) { + cat.eat(bowl, 15); + } + + System.out.println(); + + bowl.addFood(30); + for (Cat cat : cats) { + if (!cat.isFull()) { + cat.eat(bowl, 15); + } + } + + System.out.println(); + + cats[0].run(100); + cats[0].swim(5); + + dog.run(400); + dog.swim(8); + + System.out.println(); + + System.out.println("Создано котов: " + Cat.getCatsCount()); + System.out.println("Создано собак: " + Dog.getDogsCount()); + System.out.println("Всего животных: " + Animal.getAnimalsCount()); + } +} \ No newline at end of file diff --git a/src/main/java/lesson_4/animals/Bowl.java b/src/main/java/lesson_4/animals/Bowl.java new file mode 100644 index 0000000..cf2fae6 --- /dev/null +++ b/src/main/java/lesson_4/animals/Bowl.java @@ -0,0 +1,23 @@ +package lesson_4.animals; + +import lombok.Getter; + +@Getter +public class Bowl { + private int foodAmount; + + public Bowl(int foodAmount) { + this.foodAmount = Math.max(foodAmount, 0); + } + + public void decreaseFood(int amount) { + foodAmount = Math.max(foodAmount - amount, 0); + } + + public void addFood(int amount) { + if (amount > 0) { + foodAmount += amount; + System.out.println("Добавлено " + amount + " еды. Сейчас в миске: " + foodAmount); + } + } +} \ No newline at end of file diff --git a/src/main/java/lesson_4/animals/Cat.java b/src/main/java/lesson_4/animals/Cat.java new file mode 100644 index 0000000..ca478d0 --- /dev/null +++ b/src/main/java/lesson_4/animals/Cat.java @@ -0,0 +1,26 @@ +package lesson_4.animals; + +import lombok.Getter; + +@Getter +public class Cat extends Animal { + @Getter + private static int catsCount = 0; + private boolean isFull; + + public Cat(String name) { + super(name, 200, 0); + this.isFull = false; + catsCount++; + } + + public void eat(Bowl bowl, int amount) { + if (bowl.getFoodAmount() >= amount) { + bowl.decreaseFood(amount); + isFull = true; + System.out.println(name + " покушал и теперь сыт."); + } else { + System.out.println(name + " остался голодным. Недостаточно еды "); + } + } +} \ No newline at end of file diff --git a/src/main/java/lesson_4/animals/Dog.java b/src/main/java/lesson_4/animals/Dog.java new file mode 100644 index 0000000..96e8dac --- /dev/null +++ b/src/main/java/lesson_4/animals/Dog.java @@ -0,0 +1,13 @@ +package lesson_4.animals; + +import lombok.Getter; + +public class Dog extends Animal { + @Getter + private static int dogsCount = 0; + + public Dog(String name) { + super(name, 500, 10); + dogsCount++; + } +} \ No newline at end of file diff --git a/src/main/java/lesson_4/shapes/Circle.java b/src/main/java/lesson_4/shapes/Circle.java new file mode 100644 index 0000000..1c2b78b --- /dev/null +++ b/src/main/java/lesson_4/shapes/Circle.java @@ -0,0 +1,20 @@ +package lesson_4.shapes; + +public class Circle extends GeometricFigure { + private double radius; + + public Circle(double radius, String fillColor, String borderColor) { + super(fillColor, borderColor); + this.radius = radius; + } + + @Override + public double getPerimeter() { + return 2 * Math.PI * radius; + } + + @Override + public double getArea() { + return Math.PI * radius * radius; + } +} \ No newline at end of file diff --git a/src/main/java/lesson_4/shapes/GeometricFigure.java b/src/main/java/lesson_4/shapes/GeometricFigure.java new file mode 100644 index 0000000..b362540 --- /dev/null +++ b/src/main/java/lesson_4/shapes/GeometricFigure.java @@ -0,0 +1,26 @@ +package lesson_4.shapes; + +public abstract class GeometricFigure implements Measurable { + protected String fillColor; + protected String borderColor; + + public GeometricFigure(String fillColor, String borderColor) { + this.fillColor = fillColor; + this.borderColor = borderColor; + } + + public String getFillColor() { + return fillColor; + } + + public String getBorderColor() { + return borderColor; + } + + public void printFullInfo() { + printInfo(); + System.out.println("Цвет заливки: " + fillColor); + System.out.println("Цвет границы: " + borderColor); + System.out.println("---------------------------"); + } +} \ No newline at end of file diff --git a/src/main/java/lesson_4/shapes/Measurable.java b/src/main/java/lesson_4/shapes/Measurable.java new file mode 100644 index 0000000..a319e90 --- /dev/null +++ b/src/main/java/lesson_4/shapes/Measurable.java @@ -0,0 +1,11 @@ +package lesson_4.shapes; + +public interface Measurable { + double getPerimeter(); + double getArea(); + + default void printInfo() { + System.out.println("Периметр: " + getPerimeter()); + System.out.println("Площадь: " + getArea()); + } +} \ No newline at end of file diff --git a/src/main/java/lesson_4/shapes/Rectangle.java b/src/main/java/lesson_4/shapes/Rectangle.java new file mode 100644 index 0000000..b062652 --- /dev/null +++ b/src/main/java/lesson_4/shapes/Rectangle.java @@ -0,0 +1,22 @@ +package lesson_4.shapes; + +public class Rectangle extends GeometricFigure { + private double width; + private double height; + + public Rectangle(double width, double height, String fillColor, String borderColor) { + super(fillColor, borderColor); + this.width = width; + this.height = height; + } + + @Override + public double getPerimeter() { + return 2 * (width + height); + } + + @Override + public double getArea() { + return width * height; + } +} \ No newline at end of file diff --git a/src/main/java/lesson_4/shapes/ShapesMain.java b/src/main/java/lesson_4/shapes/ShapesMain.java new file mode 100644 index 0000000..203fa87 --- /dev/null +++ b/src/main/java/lesson_4/shapes/ShapesMain.java @@ -0,0 +1,16 @@ +package lesson_4.shapes; + +public class ShapesMain { + public static void main(String[] args) { + GeometricFigure[] figures = { + new Circle(5, "Красный", "Чёрный"), + new Rectangle(4, 6, "Синий", "Зелёный"), + new Triangle(3, 4, 5, "Жёлтый", "Фиолетовый") + }; + + for (GeometricFigure figure : figures) { + System.out.println(figure.getClass().getSimpleName() + ":"); + figure.printFullInfo(); + } + } +} \ No newline at end of file diff --git a/src/main/java/lesson_4/shapes/Triangle.java b/src/main/java/lesson_4/shapes/Triangle.java new file mode 100644 index 0000000..ac92eba --- /dev/null +++ b/src/main/java/lesson_4/shapes/Triangle.java @@ -0,0 +1,23 @@ +package lesson_4.shapes; + +public class Triangle extends GeometricFigure { + private double a, b, c; + + public Triangle(double a, double b, double c, String fillColor, String borderColor) { + super(fillColor, borderColor); + this.a = a; + this.b = b; + this.c = c; + } + + @Override + public double getPerimeter() { + return a + b + c; + } + + @Override + public double getArea() { + double s = getPerimeter() / 2; + return Math.sqrt(s * (s - a) * (s - b) * (s - c)); + } +} \ No newline at end of file