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 j4 = new JuniorScientist(950, 7);
// Формирование списка уникальных объектов типа Scientist
ArrayList<Scientist> uniqueScientists = new ArrayList<>();
// Массив всех объектов
Scientist[] allScientists = { s1, s2, j1, j2, j3, e1, e2, e3, s3, j4 };
// Формирование списка уникальных объектов (используем equals() для проверки)
ArrayList<Scientist> 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());
}
}
}

@ -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()) +
" }";
}
}

@ -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

@ -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

@ -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

Loading…
Cancel
Save