diff --git a/.idea/._workspace.xml b/.idea/._workspace.xml deleted file mode 100644 index b71a66a..0000000 Binary files a/.idea/._workspace.xml and /dev/null differ diff --git a/src/Main.java b/src/Main.java index ec9abd6..273105c 100644 --- a/src/Main.java +++ b/src/Main.java @@ -18,27 +18,29 @@ public class Main { Scientist s3 = new SeniorScientist(1100, 8); Scientist j4 = new JuniorScientist(950, 7); - // Формирование списка уникальных объектов типа Scientist - ArrayList 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