Compare commits

...

2 Commits
main ... lab3

Author SHA1 Message Date
tisit 1d8369e047 done pages documents
3 weeks ago
tisit 041fd09bc5 lab 3
3 weeks ago

Binary file not shown.

Binary file not shown.

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

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

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

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

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

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

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save