Загрузка данных
Привет! Подготовил для тебя все три варианта. Код написан по стандартам Java (ООП, инкапсуляция, полиморфизм), без лишних усложнений — ровно так, как ожидается от студента, успешно освоившего курс. Имена классов и переменных переведены на английский (это стандарт хорошего кода), но логика полностью соответствует заданию.
Ниже подробно расписано, какие файлы нужно создать, код для них и объяснение работы.
### Вариант 1: Экологический мониторинг
Список файлов для создания:
1. Measurable.java (Интерфейс «Измеряемый»)
2. Natural.java (Интерфейс «Природный»)
3. Tree.java, Cloud.java, Mountain.java (Классы природы)
4. SmokeSensor.java, Thermometer.java, River.java (Классы датчиков)
5. MainVar1.java (Главный класс с методом main)
Код и функционал:
`java
// Файл: Measurable.java
// Функционал: Интерфейс, задающий контракт для всех объектов, с которых можно снять измерения.
public interface Measurable {
void takeMeasurement();
}
// Файл: Natural.java
// Функционал: Гипотетический маркерный интерфейс для природных объектов.
public interface Natural {
}
// Файл: Tree.java
public class Tree implements Natural { }
// Файл: Cloud.java
public class Cloud implements Natural { }
// Файл: Mountain.java
public class Mountain implements Natural { }
// Файл: SmokeSensor.java
// Функционал: Имитирует датчик дыма. Хранит уровень CO2.
public class SmokeSensor implements Measurable {
private double co2Level;
public SmokeSensor(double co2Level) {
setCo2Level(co2Level);
}
public double getCo2Level() { return co2Level; }
// Обоснование сеттера: уровень CO2 не может быть отрицательным
public void setCo2Level(double co2Level) {
if (co2Level < 0) {
System.out.println("Ошибка: уровень CO2 не может быть меньше 0. Установлено 0.");
this.co2Level = 0;
} else {
this.co2Level = co2Level;
}
}
@Override
public void takeMeasurement() {
System.out.println("Датчик дыма: Уровень CO2 составляет " + co2Level + " ppm.");
}
}
// Файл: Thermometer.java
// Функционал: Имитирует термометр.
public class Thermometer implements Measurable {
private double celsius;
public Thermometer(double celsius) {
setCelsius(celsius);
}
public double getCelsius() { return celsius; }
// Обоснование сеттера: температура не может быть ниже абсолютного нуля
public void setCelsius(double celsius) {
if (celsius < -273.15) {
System.out.println("Ошибка: температура ниже абсолютного нуля невозможна!");
this.celsius = -273.15;
} else {
this.celsius = celsius;
}
}
@Override
public void takeMeasurement() {
System.out.println("Термометр: Температура " + celsius + " °C.");
}
}
// Файл: River.java
// Функционал: Имитирует реку. Хранит индекс загрязнения (от 0 до 100).
public class River implements Measurable {
private int pollutionIndex;
public River(int pollutionIndex) {
setPollutionIndex(pollutionIndex);
}
public int getPollutionIndex() { return pollutionIndex; }
// Обоснование сеттера: индекс загрязнения измеряется в процентах (0-100)
public void setPollutionIndex(int pollutionIndex) {
if (pollutionIndex < 0 || pollutionIndex > 100) {
System.out.println("Ошибка: индекс загрязнения должен быть от 0 до 100.");
this.pollutionIndex = 0;
} else {
this.pollutionIndex = pollutionIndex;
}
}
@Override
public void takeMeasurement() {
System.out.println("Река: Индекс загрязнения воды составляет " + pollutionIndex + "%.");
}
}
// Файл: MainVar1.java
// Функционал: Точка входа. Демонстрирует полиморфизм, собирая разные объекты под одним интерфейсом.
import java.util.ArrayList;
import java.util.List;