diff --git a/._.git b/._.git deleted file mode 100644 index b71a66a..0000000 Binary files a/._.git and /dev/null differ diff --git a/._.gitignore b/._.gitignore deleted file mode 100644 index b71a66a..0000000 Binary files a/._.gitignore and /dev/null differ diff --git a/._.idea b/._.idea deleted file mode 100644 index b71a66a..0000000 Binary files a/._.idea and /dev/null differ diff --git a/._lab2.iml b/._lab2.iml deleted file mode 100644 index b71a66a..0000000 Binary files a/._lab2.iml and /dev/null differ diff --git a/._out b/._out deleted file mode 100644 index b71a66a..0000000 Binary files a/._out and /dev/null differ diff --git a/._src b/._src deleted file mode 100644 index b71a66a..0000000 Binary files a/._src and /dev/null differ diff --git a/._отчет лб 2.docx b/._отчет лб 2.docx deleted file mode 100644 index 27de555..0000000 Binary files a/._отчет лб 2.docx and /dev/null differ diff --git a/.idea/._.gitignore b/.idea/._.gitignore deleted file mode 100644 index b71a66a..0000000 Binary files a/.idea/._.gitignore and /dev/null differ diff --git a/.idea/._misc.xml b/.idea/._misc.xml deleted file mode 100644 index b71a66a..0000000 Binary files a/.idea/._misc.xml and /dev/null differ diff --git a/.idea/._modules.xml b/.idea/._modules.xml deleted file mode 100644 index b71a66a..0000000 Binary files a/.idea/._modules.xml and /dev/null differ diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/._MyDate.java b/src/._MyDate.java deleted file mode 100644 index b71a66a..0000000 Binary files a/src/._MyDate.java and /dev/null differ diff --git a/src/Main.java b/src/Main.java index 3e59c38..ec9abd6 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,5 +1,44 @@ +import base.Scientist; +import senior.SeniorScientist; +import junior.JuniorScientist; +import engineer.Engineer; + +import java.util.ArrayList; + public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + Scientist s1 = new SeniorScientist(1000, 10); + Scientist s2 = new SeniorScientist(1000, 10); // дубликат s1 + Scientist j1 = new JuniorScientist(800, 5); + Scientist j2 = new JuniorScientist(900, 6); + Scientist j3 = new JuniorScientist(800, 5); // дубликат j1 + Scientist e1 = new Engineer(700, 4); + Scientist e2 = new Engineer(700, 4); // дубликат e1 + Scientist e3 = new Engineer(750, 3); + 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 }; + + for (Scientist sc : allScientists) { + if (!uniqueScientists.contains(sc)) { + uniqueScientists.add(sc); + } + } + + // В случае если уникальных объектов больше 9, выводим первые 9 + int count = Math.min(uniqueScientists.size(), 9); + + 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); + } } -} \ No newline at end of file +} diff --git a/src/base/Scientist.java b/src/base/Scientist.java new file mode 100644 index 0000000..c14cf96 --- /dev/null +++ b/src/base/Scientist.java @@ -0,0 +1,66 @@ +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("Научный сотрудник принят на работу."); + } + + public void fire() { + System.out.println("Научный сотрудник уволен."); + } + + public void transfer() { + System.out.println("Научный сотрудник перемещён на новую должность."); + } + + 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); + } +} diff --git a/src/engineer/Engineer.java b/src/engineer/Engineer.java new file mode 100644 index 0000000..6141843 --- /dev/null +++ b/src/engineer/Engineer.java @@ -0,0 +1,16 @@ +package engineer; + +import base.Scientist; + +public class Engineer extends Scientist { + + public Engineer(double salary, int seniority) { + super(salary, seniority); + } + + @Override + public double computeBonus() { + double x = 0.01; + return salary * seniority * x; + } +} diff --git a/src/junior/JuniorScientist.java b/src/junior/JuniorScientist.java new file mode 100644 index 0000000..53a1698 --- /dev/null +++ b/src/junior/JuniorScientist.java @@ -0,0 +1,16 @@ +package junior; + +import base.Scientist; + +public class JuniorScientist extends Scientist { + + public JuniorScientist(double salary, int seniority) { + super(salary, seniority); + } + + @Override + public double computeBonus() { + double x = 0.02; + return salary * seniority * x; + } +} diff --git a/src/senior/SeniorScientist.java b/src/senior/SeniorScientist.java new file mode 100644 index 0000000..9997858 --- /dev/null +++ b/src/senior/SeniorScientist.java @@ -0,0 +1,16 @@ +package senior; + +import base.Scientist; + +public class SeniorScientist extends Scientist { + + public SeniorScientist(double salary, int seniority) { + super(salary, seniority); + } + + @Override + public double computeBonus() { + double x = 0.03; + return salary * seniority * x; + } +}