From 4d8ee31059397395369320c1e8c6f95f79cbef60 Mon Sep 17 00:00:00 2001 From: tisit Date: Wed, 19 Mar 2025 14:54:16 +0300 Subject: [PATCH] refactor --- .idea/._workspace.xml | Bin 4096 -> 0 bytes src/Main.java | 26 ++++++++++++++------------ src/base/Scientist.java | 21 ++++++++++++++++----- src/engineer/Engineer.java | 2 +- src/junior/JuniorScientist.java | 2 +- src/senior/SeniorScientist.java | 2 +- 6 files changed, 33 insertions(+), 20 deletions(-) delete mode 100644 .idea/._workspace.xml diff --git a/.idea/._workspace.xml b/.idea/._workspace.xml deleted file mode 100644 index b71a66a1641a5d5ff748332322e25a5b74fa030e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$v2KF^nnUm53wrgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5jO2q uniqueScientists = new ArrayList<>(); - + // Массив всех объектов Scientist[] allScientists = { s1, s2, j1, j2, j3, e1, e2, e3, s3, j4 }; + // Формирование списка уникальных объектов (используем equals() для проверки) + ArrayList uniqueScientists = new ArrayList<>(); for (Scientist sc : allScientists) { if (!uniqueScientists.contains(sc)) { uniqueScientists.add(sc); } } - // В случае если уникальных объектов больше 9, выводим первые 9 - int count = Math.min(uniqueScientists.size(), 9); + // Демонстрация установки характеристик через set-методы (пример) + if (!uniqueScientists.isEmpty()) { + Scientist first = uniqueScientists.get(0); + // Изменим ставку и стаж для первого объекта + first.setSalary(1050); + first.setSeniority(11); + } - System.out.println("Величина надбавок и общая зарплата для уникальных научных сотрудников:"); - for (int i = 0; i < count; i++) { - Scientist sc = uniqueScientists.get(i); - double bonus = sc.computeBonus(); - double totalSalary = sc.getSalary() + bonus; - System.out.println("Объект " + (i+1) + ": " + - "Надбавка = " + bonus + ", Общая зарплата = " + totalSalary); + // Вывод характеристик каждого уникального объекта через перегруженный метод toString() + System.out.println("Характеристики уникальных научных сотрудников:"); + for (Scientist sc : uniqueScientists) { + System.out.println(sc.toString()); } } } diff --git a/src/base/Scientist.java b/src/base/Scientist.java index c14cf96..810433a 100644 --- a/src/base/Scientist.java +++ b/src/base/Scientist.java @@ -28,17 +28,17 @@ public abstract class Scientist { // Абстрактный метод вычисления надбавки public abstract double computeBonus(); - // Дополнительные методы + // Методы действий public void hire() { - System.out.println("Научный сотрудник принят на работу."); + System.out.println(getClass().getSimpleName() + " принят на работу."); } public void fire() { - System.out.println("Научный сотрудник уволен."); + System.out.println(getClass().getSimpleName() + " уволен."); } public void transfer() { - System.out.println("Научный сотрудник перемещён на новую должность."); + System.out.println(getClass().getSimpleName() + " перемещён на новую должность."); } public void accrueSalary() { @@ -48,7 +48,7 @@ public abstract class Scientist { " (ставка: " + salary + ", надбавка: " + bonus + ")"); } - // Переопределение equals() и hashCode() для проверки уникальности + // Переопределение equals() и hashCode() для проверки уникальности объектов @Override public boolean equals(Object o) { if (this == o) return true; @@ -63,4 +63,15 @@ public abstract class Scientist { public int hashCode() { return java.util.Objects.hash(getClass(), salary, seniority); } + + // Переопределение toString() для вывода характеристик объекта + @Override + public String toString() { + return getClass().getSimpleName() + + " { salary = " + salary + + ", seniority = " + seniority + + ", bonus = " + computeBonus() + + ", totalSalary = " + (salary + computeBonus()) + + " }"; + } } diff --git a/src/engineer/Engineer.java b/src/engineer/Engineer.java index 6141843..c09fd12 100644 --- a/src/engineer/Engineer.java +++ b/src/engineer/Engineer.java @@ -5,7 +5,7 @@ import base.Scientist; public class Engineer extends Scientist { public Engineer(double salary, int seniority) { - super(salary, seniority); + super(salary, seniority); // вызов конструктора суперкласса } @Override diff --git a/src/junior/JuniorScientist.java b/src/junior/JuniorScientist.java index 53a1698..88111d3 100644 --- a/src/junior/JuniorScientist.java +++ b/src/junior/JuniorScientist.java @@ -5,7 +5,7 @@ import base.Scientist; public class JuniorScientist extends Scientist { public JuniorScientist(double salary, int seniority) { - super(salary, seniority); + super(salary, seniority); // вызов конструктора суперкласса } @Override diff --git a/src/senior/SeniorScientist.java b/src/senior/SeniorScientist.java index 9997858..eccde91 100644 --- a/src/senior/SeniorScientist.java +++ b/src/senior/SeniorScientist.java @@ -5,7 +5,7 @@ import base.Scientist; public class SeniorScientist extends Scientist { public SeniorScientist(double salary, int seniority) { - super(salary, seniority); + super(salary, seniority); // вызов конструктора суперкласса } @Override