diff --git a/src/Main.java b/src/Main.java index 273105c..b75a9b0 100644 --- a/src/Main.java +++ b/src/Main.java @@ -8,20 +8,18 @@ import java.util.ArrayList; public class Main { public static void main(String[] args) { 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 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 e2 = new Engineer(700, 4); // дубликат e1 + Scientist e2 = new Engineer(700, 4); Scientist e3 = new Engineer(750, 3); Scientist s3 = new SeniorScientist(1100, 8); Scientist j4 = new JuniorScientist(950, 7); - // Массив всех объектов 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)) { @@ -29,16 +27,7 @@ public class Main { } } - // Демонстрация установки характеристик через set-методы (пример) - if (!uniqueScientists.isEmpty()) { - Scientist first = uniqueScientists.get(0); - // Изменим ставку и стаж для первого объекта - first.setSalary(1050); - first.setSeniority(11); - } - - // Вывод характеристик каждого уникального объекта через перегруженный метод toString() - System.out.println("Характеристики уникальных научных сотрудников:"); + System.out.println("Уникальные научные сотрудники:"); for (Scientist sc : uniqueScientists) { System.out.println(sc.toString()); } diff --git a/src/base/EmployeeActions.java b/src/base/EmployeeActions.java new file mode 100644 index 0000000..7562ee2 --- /dev/null +++ b/src/base/EmployeeActions.java @@ -0,0 +1,8 @@ +package base; + +public interface EmployeeActions { + void hire(); + void fire(); + void transfer(); + void accrueSalary(); +} diff --git a/src/base/Scientist.java b/src/base/Scientist.java index 810433a..4e8a766 100644 --- a/src/base/Scientist.java +++ b/src/base/Scientist.java @@ -1,77 +1,9 @@ package base; -public abstract class Scientist { - protected double salary; - protected int seniority; - - public Scientist(double salary, int seniority) { - this.salary = salary; - 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()) + - " }"; - } +public interface Scientist { + double getSalary(); + void setSalary(double salary); + int getSeniority(); + void setSeniority(int seniority); + double computeBonus(); } diff --git a/src/engineer/Engineer.java b/src/engineer/Engineer.java index c09fd12..78a692f 100644 --- a/src/engineer/Engineer.java +++ b/src/engineer/Engineer.java @@ -1,16 +1,67 @@ package engineer; 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) { - super(salary, seniority); // вызов конструктора суперкласса + this.salary = salary; + this.seniority = seniority; } @Override public double computeBonus() { - double x = 0.01; - return salary * seniority * x; + return salary * seniority * 0.01; + } + + @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()) + " }"; } } diff --git a/src/junior/JuniorScientist.java b/src/junior/JuniorScientist.java index 88111d3..f969f6f 100644 --- a/src/junior/JuniorScientist.java +++ b/src/junior/JuniorScientist.java @@ -1,16 +1,67 @@ package junior; 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) { - super(salary, seniority); // вызов конструктора суперкласса + this.salary = salary; + this.seniority = seniority; } @Override public double computeBonus() { - double x = 0.02; - return salary * seniority * x; + return salary * seniority * 0.02; + } + + @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()) + " }"; } } diff --git a/src/senior/SeniorScientist.java b/src/senior/SeniorScientist.java index eccde91..04b86ab 100644 --- a/src/senior/SeniorScientist.java +++ b/src/senior/SeniorScientist.java @@ -1,16 +1,67 @@ package senior; 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) { - super(salary, seniority); // вызов конструктора суперкласса + this.salary = salary; + this.seniority = seniority; } @Override public double computeBonus() { - double x = 0.03; - return salary * seniority * x; + return salary * seniority * 0.03; + } + + @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()) + " }"; } } diff --git a/отчет лб 2.pages b/отчет лб 2.pages new file mode 100644 index 0000000..cb70d1e Binary files /dev/null and b/отчет лб 2.pages differ diff --git a/отчет лб 3.pages b/отчет лб 3.pages new file mode 100644 index 0000000..70e7b0c Binary files /dev/null and b/отчет лб 3.pages differ