mirror of
				https://github.com/ASDjonok/OOP_IO-2x_2023.git
				synced 2025-10-30 22:49:24 +02:00 
			
		
		
		
	Лабораторна робота 6
This commit is contained in:
		
							parent
							
								
									c27b4fbae5
								
							
						
					
					
						commit
						4409214bef
					
				
							
								
								
									
										80
									
								
								laba6/ElectroAppliance.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								laba6/ElectroAppliance.java
									
									
									
									
									
										Normal file
									
								
							| @ -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<Integer> sortedPowers = new ArrayList<Integer>(); | ||||||
|  |     private static ArrayList<String> sortedNames = new ArrayList<String>(); | ||||||
|  |     private static ArrayList<Integer> electromagneticList = new ArrayList<Integer>(); | ||||||
|  |     private static ArrayList<String> namesList = new ArrayList<String>(); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     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<sortedNames.size(); i=i+1){ | ||||||
|  |             System.out.println(sortedNames.get(i)+": "+ Integer.toString(sortedPowers.get(i))+" Вт"); | ||||||
|  |         } | ||||||
|  |         /** Метод повертає відсортований список приборів по потужності */ | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static int getTotalPower() { | ||||||
|  |         return totalPower; | ||||||
|  |         /** Метод повертає загальну потужність*/ | ||||||
|  |     } | ||||||
|  |     public static void printDiapasonedElectromagneticRadiation(int[] limits){ | ||||||
|  |         // Втсановлюємо границі з отриманого списку | ||||||
|  |         int top = limits[1]; | ||||||
|  |         int bottom = limits[0]; | ||||||
|  |         // Створюємо списки з кінцевими значеннями | ||||||
|  |         ArrayList<Integer> wantedElectromagneticRadiation = new ArrayList<Integer>(); | ||||||
|  |         ArrayList<String> wantedElectromagneticNames = new ArrayList<String>(); | ||||||
|  |         // Відбираємо потрібні значення | ||||||
|  |         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))+" Вт"); | ||||||
|  |         } | ||||||
|  |         /** Метод шукає значення випромінювання в данному діапазоні і виводить ці значення */ | ||||||
|  |     } | ||||||
|  |     /** Клас елктроприладів, який має може повертати відсортований список приладів по потужності, загальну потужність і | ||||||
|  |      * електромагнітне випромінювання в данному діапазоні | ||||||
|  |      */ | ||||||
|  | } | ||||||
							
								
								
									
										16
									
								
								laba6/HeatingDevices.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								laba6/HeatingDevices.java
									
									
									
									
									
										Normal file
									
								
							| @ -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; | ||||||
|  |     } | ||||||
|  |     /** Похідний класу електроприбору, який ще має поле випромінення тепла*/ | ||||||
|  | } | ||||||
							
								
								
									
										117
									
								
								laba6/Main.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								laba6/Main.java
									
									
									
									
									
										Normal file
									
								
							| @ -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. | ||||||
|  |      */ | ||||||
|  | } | ||||||
							
								
								
									
										17
									
								
								laba6/MechanicDevices.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								laba6/MechanicDevices.java
									
									
									
									
									
										Normal file
									
								
							| @ -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; | ||||||
|  |     } | ||||||
|  |     /** Похідний класу електроприбору, який ще має поле механічної потужності */ | ||||||
|  | } | ||||||
							
								
								
									
										17
									
								
								laba6/WashingMashines.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								laba6/WashingMashines.java
									
									
									
									
									
										Normal file
									
								
							| @ -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; | ||||||
|  |     } | ||||||
|  |     /** Похідний класу електроприбору, який ще має поле споживання води */ | ||||||
|  | } | ||||||
|  | 
 | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user