tisit 1 month ago
parent 4d8ee31059
commit 041fd09bc5

@ -8,20 +8,18 @@ import java.util.ArrayList;
public class Main { public class Main {
public static void main(String[] args) { public static void main(String[] args) {
Scientist s1 = new SeniorScientist(1000, 10); Scientist s1 = new SeniorScientist(1000, 10);
Scientist s2 = new SeniorScientist(1000, 10); // дубликат s1 Scientist s2 = new SeniorScientist(1000, 10);
Scientist j1 = new JuniorScientist(800, 5); Scientist j1 = new JuniorScientist(800, 5);
Scientist j2 = new JuniorScientist(900, 6); Scientist j2 = new JuniorScientist(900, 6);
Scientist j3 = new JuniorScientist(800, 5); // дубликат j1 Scientist j3 = new JuniorScientist(800, 5);
Scientist e1 = new Engineer(700, 4); Scientist e1 = new Engineer(700, 4);
Scientist e2 = new Engineer(700, 4); // дубликат e1 Scientist e2 = new Engineer(700, 4);
Scientist e3 = new Engineer(750, 3); Scientist e3 = new Engineer(750, 3);
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[] 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<>(); ArrayList<Scientist> uniqueScientists = new ArrayList<>();
for (Scientist sc : allScientists) { for (Scientist sc : allScientists) {
if (!uniqueScientists.contains(sc)) { if (!uniqueScientists.contains(sc)) {
@ -29,16 +27,7 @@ public class Main {
} }
} }
// Демонстрация установки характеристик через set-методы (пример) System.out.println("Уникальные научные сотрудники:");
if (!uniqueScientists.isEmpty()) {
Scientist first = uniqueScientists.get(0);
// Изменим ставку и стаж для первого объекта
first.setSalary(1050);
first.setSeniority(11);
}
// Вывод характеристик каждого уникального объекта через перегруженный метод toString()
System.out.println("Характеристики уникальных научных сотрудников:");
for (Scientist sc : uniqueScientists) { for (Scientist sc : uniqueScientists) {
System.out.println(sc.toString()); System.out.println(sc.toString());
} }

@ -0,0 +1,8 @@
package base;
public interface EmployeeActions {
void hire();
void fire();
void transfer();
void accrueSalary();
}

@ -1,77 +1,9 @@
package base; package base;
public abstract class Scientist { public interface Scientist {
protected double salary; double getSalary();
protected int seniority; void setSalary(double salary);
int getSeniority();
public Scientist(double salary, int seniority) { void setSeniority(int seniority);
this.salary = salary; double computeBonus();
this.seniority = seniority;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public int getSeniority() {
return seniority;
}
public void setSeniority(int seniority) {
this.seniority = seniority;
}
// Абстрактный метод вычисления надбавки
public abstract double computeBonus();
// Методы действий
public void hire() {
System.out.println(getClass().getSimpleName() + " принят на работу.");
}
public void fire() {
System.out.println(getClass().getSimpleName() + " уволен.");
}
public void transfer() {
System.out.println(getClass().getSimpleName() + " перемещён на новую должность.");
}
public void accrueSalary() {
double bonus = computeBonus();
double totalSalary = salary + bonus;
System.out.println("Начислена зарплата: " + totalSalary +
" (ставка: " + salary + ", надбавка: " + bonus + ")");
}
// Переопределение equals() и hashCode() для проверки уникальности объектов
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Scientist scientist = (Scientist) o;
return Double.compare(scientist.salary, salary) == 0 &&
seniority == scientist.seniority;
}
@Override
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()) +
" }";
}
} }

@ -1,16 +1,67 @@
package engineer; package engineer;
import base.Scientist; import base.Scientist;
import base.EmployeeActions;
public class Engineer extends Scientist { public class Engineer implements Scientist, EmployeeActions {
private double salary;
private int seniority;
public Engineer(double salary, int seniority) { public Engineer(double salary, int seniority) {
super(salary, seniority); // вызов конструктора суперкласса this.salary = salary;
this.seniority = seniority;
} }
@Override @Override
public double computeBonus() { public double computeBonus() {
double x = 0.01; return salary * seniority * 0.01;
return salary * seniority * x; }
@Override
public double getSalary() {
return salary;
}
@Override
public void setSalary(double salary) {
this.salary = salary;
}
@Override
public int getSeniority() {
return seniority;
}
@Override
public void setSeniority(int seniority) {
this.seniority = seniority;
}
@Override
public void hire() {
System.out.println("Engineer hired.");
}
@Override
public void fire() {
System.out.println("Engineer fired.");
}
@Override
public void transfer() {
System.out.println("Engineer transferred.");
}
@Override
public void accrueSalary() {
System.out.println("Total salary: " + (salary + computeBonus()));
}
@Override
public String toString() {
return "Engineer { salary = " + salary +
", seniority = " + seniority +
", bonus = " + computeBonus() +
", totalSalary = " + (salary + computeBonus()) + " }";
} }
} }

@ -1,16 +1,67 @@
package junior; package junior;
import base.Scientist; import base.Scientist;
import base.EmployeeActions;
public class JuniorScientist extends Scientist { public class JuniorScientist implements Scientist, EmployeeActions {
private double salary;
private int seniority;
public JuniorScientist(double salary, int seniority) { public JuniorScientist(double salary, int seniority) {
super(salary, seniority); // вызов конструктора суперкласса this.salary = salary;
this.seniority = seniority;
} }
@Override @Override
public double computeBonus() { public double computeBonus() {
double x = 0.02; return salary * seniority * 0.02;
return salary * seniority * x; }
@Override
public double getSalary() {
return salary;
}
@Override
public void setSalary(double salary) {
this.salary = salary;
}
@Override
public int getSeniority() {
return seniority;
}
@Override
public void setSeniority(int seniority) {
this.seniority = seniority;
}
@Override
public void hire() {
System.out.println("Junior Scientist hired.");
}
@Override
public void fire() {
System.out.println("Junior Scientist fired.");
}
@Override
public void transfer() {
System.out.println("Junior Scientist transferred.");
}
@Override
public void accrueSalary() {
System.out.println("Total salary: " + (salary + computeBonus()));
}
@Override
public String toString() {
return "JuniorScientist { salary = " + salary +
", seniority = " + seniority +
", bonus = " + computeBonus() +
", totalSalary = " + (salary + computeBonus()) + " }";
} }
} }

@ -1,16 +1,67 @@
package senior; package senior;
import base.Scientist; import base.Scientist;
import base.EmployeeActions;
public class SeniorScientist extends Scientist { public class SeniorScientist implements Scientist, EmployeeActions {
private double salary;
private int seniority;
public SeniorScientist(double salary, int seniority) { public SeniorScientist(double salary, int seniority) {
super(salary, seniority); // вызов конструктора суперкласса this.salary = salary;
this.seniority = seniority;
} }
@Override @Override
public double computeBonus() { public double computeBonus() {
double x = 0.03; return salary * seniority * 0.03;
return salary * seniority * x; }
@Override
public double getSalary() {
return salary;
}
@Override
public void setSalary(double salary) {
this.salary = salary;
}
@Override
public int getSeniority() {
return seniority;
}
@Override
public void setSeniority(int seniority) {
this.seniority = seniority;
}
@Override
public void hire() {
System.out.println("Senior Scientist hired.");
}
@Override
public void fire() {
System.out.println("Senior Scientist fired.");
}
@Override
public void transfer() {
System.out.println("Senior Scientist transferred.");
}
@Override
public void accrueSalary() {
System.out.println("Total salary: " + (salary + computeBonus()));
}
@Override
public String toString() {
return "SeniorScientist { salary = " + salary +
", seniority = " + seniority +
", bonus = " + computeBonus() +
", totalSalary = " + (salary + computeBonus()) + " }";
} }
} }

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save