lab2
tisit 3 weeks ago
parent 863a001f64
commit 4d8ee31059

Binary file not shown.

@ -18,27 +18,29 @@ public class Main {
Scientist s3 = new SeniorScientist(1100, 8); Scientist s3 = new SeniorScientist(1100, 8);
Scientist j4 = new JuniorScientist(950, 7); Scientist j4 = new JuniorScientist(950, 7);
// Формирование списка уникальных объектов типа Scientist // Массив всех объектов
ArrayList<Scientist> uniqueScientists = new ArrayList<>();
Scientist[] allScientists = { s1, s2, j1, j2, j3, e1, e2, e3, s3, j4 }; Scientist[] allScientists = { s1, s2, j1, j2, j3, e1, e2, e3, s3, j4 };
// Формирование списка уникальных объектов (используем equals() для проверки)
ArrayList<Scientist> uniqueScientists = new ArrayList<>();
for (Scientist sc : allScientists) { for (Scientist sc : allScientists) {
if (!uniqueScientists.contains(sc)) { if (!uniqueScientists.contains(sc)) {
uniqueScientists.add(sc); uniqueScientists.add(sc);
} }
} }
// В случае если уникальных объектов больше 9, выводим первые 9 // Демонстрация установки характеристик через set-методы (пример)
int count = Math.min(uniqueScientists.size(), 9); if (!uniqueScientists.isEmpty()) {
Scientist first = uniqueScientists.get(0);
// Изменим ставку и стаж для первого объекта
first.setSalary(1050);
first.setSeniority(11);
}
System.out.println("Величина надбавок и общая зарплата для уникальных научных сотрудников:"); // Вывод характеристик каждого уникального объекта через перегруженный метод toString()
for (int i = 0; i < count; i++) { System.out.println("Характеристики уникальных научных сотрудников:");
Scientist sc = uniqueScientists.get(i); for (Scientist sc : uniqueScientists) {
double bonus = sc.computeBonus(); System.out.println(sc.toString());
double totalSalary = sc.getSalary() + bonus;
System.out.println("Объект " + (i+1) + ": " +
"Надбавка = " + bonus + ", Общая зарплата = " + totalSalary);
} }
} }
} }

@ -28,17 +28,17 @@ public abstract class Scientist {
// Абстрактный метод вычисления надбавки // Абстрактный метод вычисления надбавки
public abstract double computeBonus(); public abstract double computeBonus();
// Дополнительные методы // Методы действий
public void hire() { public void hire() {
System.out.println("Научный сотрудник принят на работу."); System.out.println(getClass().getSimpleName() + " принят на работу.");
} }
public void fire() { public void fire() {
System.out.println("Научный сотрудник уволен."); System.out.println(getClass().getSimpleName() + " уволен.");
} }
public void transfer() { public void transfer() {
System.out.println("Научный сотрудник перемещён на новую должность."); System.out.println(getClass().getSimpleName() + " перемещён на новую должность.");
} }
public void accrueSalary() { public void accrueSalary() {
@ -48,7 +48,7 @@ public abstract class Scientist {
" (ставка: " + salary + ", надбавка: " + bonus + ")"); " (ставка: " + salary + ", надбавка: " + bonus + ")");
} }
// Переопределение equals() и hashCode() для проверки уникальности // Переопределение equals() и hashCode() для проверки уникальности объектов
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) return true;
@ -63,4 +63,15 @@ public abstract class Scientist {
public int hashCode() { public int hashCode() {
return java.util.Objects.hash(getClass(), salary, seniority); 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()) +
" }";
}
} }

@ -5,7 +5,7 @@ import base.Scientist;
public class Engineer extends Scientist { public class Engineer extends Scientist {
public Engineer(double salary, int seniority) { public Engineer(double salary, int seniority) {
super(salary, seniority); super(salary, seniority); // вызов конструктора суперкласса
} }
@Override @Override

@ -5,7 +5,7 @@ import base.Scientist;
public class JuniorScientist extends Scientist { public class JuniorScientist extends Scientist {
public JuniorScientist(double salary, int seniority) { public JuniorScientist(double salary, int seniority) {
super(salary, seniority); super(salary, seniority); // вызов конструктора суперкласса
} }
@Override @Override

@ -5,7 +5,7 @@ import base.Scientist;
public class SeniorScientist extends Scientist { public class SeniorScientist extends Scientist {
public SeniorScientist(double salary, int seniority) { public SeniorScientist(double salary, int seniority) {
super(salary, seniority); super(salary, seniority); // вызов конструктора суперкласса
} }
@Override @Override

Loading…
Cancel
Save