diff --git a/laba6/ElectroAppliance.java b/laba6/ElectroAppliance.java new file mode 100644 index 0000000..fa9eb1b --- /dev/null +++ b/laba6/ElectroAppliance.java @@ -0,0 +1,80 @@ +import java.util.ArrayList; + + +public class ElectroAppliance { + // Поля що містять потужність, електромагнітне випромінювання та назву + private int power; + private int electromagneticRadiation; + private String name; + // Статичні поля, які потрібні для зберігання даних про всі об'єкти класу + private static int totalPower = 0; + private static ArrayList sortedPowers = new ArrayList(); + private static ArrayList sortedNames = new ArrayList(); + private static ArrayList electromagneticList = new ArrayList(); + private static ArrayList namesList = new ArrayList(); + + + public ElectroAppliance(int power, int electromagneticRadiation, String name) { + // Присвоюємо полям значення + this.name = name; + this.power = power; + this.electromagneticRadiation = electromagneticRadiation; + // Додаємо потужність до загальної + totalPower = totalPower + power; + // Додаємо дані про електромагнітне випромінювання + electromagneticList.add(electromagneticRadiation); + namesList.add(name); + // Відразу в конструкторі сортуємо список з потужностями + if (sortedPowers.isEmpty()) { + sortedPowers.add(power); + sortedNames.add(name); + } else { + for (int i = sortedNames.size()-1; i>=0; i=i-1) { + if(power>sortedPowers.get(i)){ + sortedPowers.add(i+1, power); + sortedNames.add(i+1, name); + } else if(i==0&&power<=sortedPowers.get(i)){ + sortedPowers.add(0, power); + sortedNames.add(0, name); + } + } + } + + } + + public static void printSortedPowers(){ + for(int i = 0; i wantedElectromagneticRadiation = new ArrayList(); + ArrayList wantedElectromagneticNames = new ArrayList(); + // Відбираємо потрібні значення + for (int i = 0; i<=electromagneticList.size()-1; i=i+1){ + if(electromagneticList.get(i)<=top&&electromagneticList.get(i)>=bottom){ + wantedElectromagneticRadiation.add(electromagneticList.get(i)); + wantedElectromagneticNames.add(namesList.get(i)); + } + } + // Виводимо + System.out.println("Шуканий список:"); + for (int i = 0; i<=wantedElectromagneticRadiation.size()-1; i=i+1){ + System.out.println(wantedElectromagneticNames.get(i)+": " +Integer.toString(wantedElectromagneticRadiation.get(i))+" Вт"); + } + /** Метод шукає значення випромінювання в данному діапазоні і виводить ці значення */ + } + /** Клас елктроприладів, який має може повертати відсортований список приладів по потужності, загальну потужність і + * електромагнітне випромінювання в данному діапазоні + */ +} diff --git a/laba6/HeatingDevices.java b/laba6/HeatingDevices.java new file mode 100644 index 0000000..e9d346c --- /dev/null +++ b/laba6/HeatingDevices.java @@ -0,0 +1,16 @@ +public class HeatingDevices extends ElectroAppliance { + // Поля похідного класу Heating Devices + private int heatTransfer; + private static int totalHeatTransfer = 0; + // Конструктор який задає поля і шукає загальне випромінення тепла + public HeatingDevices(int heatTransfer, int power, int electromagneticRadiation, String name) { + super(power, electromagneticRadiation, name); + this.heatTransfer = heatTransfer; + totalHeatTransfer = totalHeatTransfer + heatTransfer; + } + // Повертає загальне випромінення тепла + public static int getTotalHeatTransfer() { + return totalHeatTransfer; + } + /** Похідний класу електроприбору, який ще має поле випромінення тепла*/ +} diff --git a/laba6/Main.java b/laba6/Main.java new file mode 100644 index 0000000..3f28331 --- /dev/null +++ b/laba6/Main.java @@ -0,0 +1,117 @@ + +import java.util.Scanner; +import java.util.InputMismatchException; +public class Main { + + public static void main(String[] args) { + // Вмикаємо прибори + TurnOn(); + // Виводимо відомості про систему + String totalPower = Integer.toString(ElectroAppliance.getTotalPower()); + System.out.println("Загальна споживана потужість:" + totalPower + " Вт"); + String totalWater = Integer.toString(WashingMashines.getTotalWaterConsumption()); + System.out.println("Загальна споживана вода:" + totalWater + " Л"); + String totalHeat = Integer.toString(HeatingDevices.getTotalHeatTransfer()); + System.out.println("Загальне виділення тепла:" + totalHeat + " Дж"); + String totalMech = Integer.toString(MechanicDevices.getTotalMechanicPower()); + System.out.println("Загальн механічна потужність:" + totalMech + " Вт"); + System.out.println("-------------------------"); + //Виводимо сортовані потужності + ElectroAppliance.printSortedPowers(); + System.out.println("-------------------------"); + //Виводимо електромагнітні випромінювання в шуканому діапазоні + ElectroAppliance.printDiapasonedElectromagneticRadiation(getLimits()); + } + + public static void TurnOn() { + + if (AskTrueOrFalse("Ввімкнути в розетку посудомийну машину(введіть так або ні)?")) { + WashingMashines DishWasher = new WashingMashines(11, 1000, 30, "Посудомийна машина"); + + } + if (AskTrueOrFalse("Ввімкнути в розетку пральну машину(введіть так або ні)?")) { + WashingMashines ClothesWasher = new WashingMashines(50, 2000, 10, "Пральна машина"); + } + if (AskTrueOrFalse("Ввімкнути в розетку мікрохвильовку(введіть так або ні)?")) { + HeatingDevices MicroWawe = new HeatingDevices(2000, 1100, 10000, "Мікрохвильвка"); + } + if (AskTrueOrFalse("Ввімкнути в розетку духову піч(введіть так або ні)?")) { + HeatingDevices Oven = new HeatingDevices(1000, 800, 1000, "Духова піч"); + } + if (AskTrueOrFalse("Ввімкнути в розетку блендер(введіть так або ні)?")) { + MechanicDevices Blender = new MechanicDevices(200, 400, 1, "Блендер"); + } + if (AskTrueOrFalse("Ввімкнути в розетку пилосос(введіть так або ні)?")) { + MechanicDevices VacuumCleaner = new MechanicDevices(50, 300, 3, "Пилосос"); + } + /** + * Цей метод створений для того, щоб запитати у користувача, які він прилади хоче ввімкнути в розетку і потім, + * якщо відповідь буде позитивна, створює об'єект цього класу. + */ + } + public static int[] getLimits(){ + int[] limits = new int[2]; + while (true) { + int low = 0; + System.out.println("Введіть нижню границю пошуку"); + Scanner scanner = new Scanner(System.in); + + while (true) { + try { + low = scanner.nextInt(); + break; + } catch (InputMismatchException e) { + System.out.println("Введені символи не є цілим числом, спробуйте ще раз."); + scanner.nextLine(); + } + } + System.out.println("Введіть нижню границю пошуку"); + int top = 0; + while (true) { + try { + top = scanner.nextInt(); + break; + } catch (InputMismatchException e) { + System.out.println("Введені символи не є цілим числом, спробуйте ще раз."); + scanner.nextLine(); + } + } + if (top >= low) { + limits[0]=low; + limits[1]=top; + break; + } else { + System.out.println("Нижня границя більна верхньої"); + } + } + + return limits; + /** + * Цей метод створений для того, щоб запитати у користувача нижню і верхню границю пошуку, і при цьому оброботи + * всі можливі помилки, такі як ввід не цілого числа, та перевищення нижньої границі верхньої + */ + } + public static boolean AskTrueOrFalse(String question) { + System.out.println(question); + Scanner scanner = new Scanner(System.in); + boolean x = true; + while (true) { + String anwser = scanner.nextLine(); + if (anwser.equalsIgnoreCase("так")) { + x = true; + break; + } else if (anwser.equalsIgnoreCase("ні")) { + x = false; + break; + } else { + System.out.println("Ви ввели не правильний текст, спробуйте ще раз"); + } + } + return x; + } + /** + * Цей метод створений для того, щоб запитати у користвуча відповідь так або ні. Він приймає текстовий аргумент, + * виводить його на екран і очікує ввід. Потім він перевіряє відповіть на рівність "так" або "ні" + * і повертає значення true або false. + */ +} diff --git a/laba6/MechanicDevices.java b/laba6/MechanicDevices.java new file mode 100644 index 0000000..96af5bb --- /dev/null +++ b/laba6/MechanicDevices.java @@ -0,0 +1,17 @@ +public class MechanicDevices extends ElectroAppliance { + // Поля похідного класу Mechanic Devices + private int mechanicPower; + private static int totalMechanicPower = 0; + // Конструктор який дає значення полям і шукає загальну механічна потужність + public MechanicDevices(int mechanicPower, int power, int electromagneticRadiation, String name) { + super(power, electromagneticRadiation, name); + this.mechanicPower = mechanicPower; + totalMechanicPower = totalMechanicPower + mechanicPower; + } + // Метод, який повертає загальну механічну потужність + + public static int getTotalMechanicPower() { + return totalMechanicPower; + } + /** Похідний класу електроприбору, який ще має поле механічної потужності */ +} diff --git a/laba6/WashingMashines.java b/laba6/WashingMashines.java new file mode 100644 index 0000000..7c5f758 --- /dev/null +++ b/laba6/WashingMashines.java @@ -0,0 +1,17 @@ +public class WashingMashines extends ElectroAppliance { + // Поля похідного класу Washing Machines + private int waterConsumption; + private static int totalWaterConsumption = 0; + // Конструктор який задає поля і шукає загальне споживання води + public WashingMashines(int waterConsumption, int power, int electromagneticRadiation, String name) { + super(power, electromagneticRadiation, name); + this.waterConsumption = waterConsumption; + totalWaterConsumption = totalWaterConsumption + waterConsumption; + } + // Метод що повертає загальне споживання води + public static int getTotalWaterConsumption() { + return totalWaterConsumption; + } + /** Похідний класу електроприбору, який ще має поле споживання води */ +} +