diff --git a/src/main/java/school/lemon/changerequest/java/.gitkeep b/src/main/java/school/lemon/changerequest/java/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/school/lemon/changerequest/java/Employees/Accountant.java b/src/main/java/school/lemon/changerequest/java/Employees/Accountant.java new file mode 100644 index 0000000..910e958 --- /dev/null +++ b/src/main/java/school/lemon/changerequest/java/Employees/Accountant.java @@ -0,0 +1,29 @@ +package school.lemon.changerequest.java.Employees; + +/** + * Created by lbrdev on 04.01.2017. + * Project: oop.pr1 + */ +public class Accountant extends Employee { + private static int countAccountant; + + public Accountant(String name) { + super(name); + } + + @Override + public double calculateSalary() { + if (getRatioOfHours() >= 1.) { + return getSalary(); + } + return getRatioOfHours() * getSalary(); + } + + public int overallSalary(Employee[] employees) { + double i = 0.; + for (Employee employee : employees) { + i += employee.calculateSalary(); + } + return (int) i; + } +} \ No newline at end of file diff --git a/src/main/java/school/lemon/changerequest/java/Employees/Employee.java b/src/main/java/school/lemon/changerequest/java/Employees/Employee.java new file mode 100644 index 0000000..615c337 --- /dev/null +++ b/src/main/java/school/lemon/changerequest/java/Employees/Employee.java @@ -0,0 +1,51 @@ +package school.lemon.changerequest.java.Employees; + +/** + * Created by lbrdev on 04.01.2017. + * Project: oop.pr1 + */ +public class Employee { + private String name; + private int salary; + private int hours; + public static final int DEFAULT_HOURS = 160; + public static final int DEFAULT_SALARY = 100; + + + public Employee(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public int getSalary() { + return salary; + } + + public void setSalary(int salary) { + this.salary = salary; + } + + public int getHours() { + return hours; + } + + public void setHours(int hours) { + this.hours = hours; + } + + public double getRatioOfHours() { + return (double) getHours() / DEFAULT_HOURS; + } + + public double calculateSalary() { + return getRatioOfHours() * getSalary(); + } + + @Override + public String toString() { + return "Current month salary of " + getName() + " is " + calculateSalary(); + } +} diff --git a/src/main/java/school/lemon/changerequest/java/Employees/Manager.java b/src/main/java/school/lemon/changerequest/java/Employees/Manager.java new file mode 100644 index 0000000..6f740ce --- /dev/null +++ b/src/main/java/school/lemon/changerequest/java/Employees/Manager.java @@ -0,0 +1,20 @@ +package school.lemon.changerequest.java.Employees; + +/** + * Created by lbrdev on 04.01.2017. + * Project: oop.pr1 + */ +public class Manager extends Employee { + + public Manager(String name) { + super(name); + } + + @Override + public double calculateSalary() { + if (getRatioOfHours() >= 1.) { + return getSalary(); + } + return getRatioOfHours() * getSalary(); + } +} diff --git a/src/main/java/school/lemon/changerequest/java/Employees/Programmer.java b/src/main/java/school/lemon/changerequest/java/Employees/Programmer.java new file mode 100644 index 0000000..ddc895e --- /dev/null +++ b/src/main/java/school/lemon/changerequest/java/Employees/Programmer.java @@ -0,0 +1,17 @@ +package school.lemon.changerequest.java.Employees; + +/** + * Created by lbrdev on 04.01.2017. + * Project: oop.pr1 + */ +public class Programmer extends Employee { + + public Programmer(String name) { + super(name); + } + + @Override + public double calculateSalary() { + return getRatioOfHours() * getSalary(); + } +} diff --git a/src/main/java/school/lemon/changerequest/java/Employees/Test.java b/src/main/java/school/lemon/changerequest/java/Employees/Test.java new file mode 100644 index 0000000..466a94f --- /dev/null +++ b/src/main/java/school/lemon/changerequest/java/Employees/Test.java @@ -0,0 +1,47 @@ +package school.lemon.changerequest.java.Employees; + +/** + * Created by lbrdev on 04.01.2017. + * Project: oop.pr1 + */ +public class Test { + public static void main(String[] args) { +// + Employee[] employee = new Employee[6]; + + employee[0] = new Programmer("One"); + employee[0].setSalary(Employee.DEFAULT_SALARY); + employee[0].setHours(80); + + employee[1] = new Programmer("Two"); + employee[1].setSalary(Employee.DEFAULT_SALARY); + employee[1].setHours(320); + + employee[2] = new Accountant("Three"); + employee[2].setSalary(Employee.DEFAULT_SALARY); + employee[2].setHours(80); + + Accountant accountant = new Accountant("Four"); + accountant.setSalary(Employee.DEFAULT_SALARY); + accountant.setHours(320); + employee[3] = accountant; + + employee[4] = new Manager("Five"); + employee[4].setSalary(Employee.DEFAULT_SALARY); + employee[4].setHours(80); + + employee[5] = new Manager("Six"); + employee[5].setSalary(Employee.DEFAULT_SALARY); + employee[5].setHours(320); + + System.out.println("Employees salary is " + accountant.overallSalary(employee)); + System.out.printf("Programmer %4$s with salary %1$d worked %2$d hours - salary is %3$d \n", employee[0].getSalary(), employee[0].getHours(), (int) employee[0].calculateSalary(), employee[0].getName()); + System.out.printf("Programmer %4$s with salary %1$d worked %2$d hours - salary is %3$d \n", employee[1].getSalary(), employee[1].getHours(), (int) employee[1].calculateSalary(), employee[1].getName()); + System.out.printf("Accountant %4$s with salary %1$d worked %2$d hours - salary is %3$d \n", employee[2].getSalary(), employee[2].getHours(), (int) employee[2].calculateSalary(), employee[2].getName()); + System.out.printf("Accountant %4$s with salary %1$d worked %2$d hours - salary is %3$d \n", employee[3].getSalary(), employee[3].getHours(), (int) employee[3].calculateSalary(), employee[3].getName()); + System.out.printf("Manger %4$s with salary %1$d worked %2$d hours - salary is %3$d \n", employee[4].getSalary(), employee[4].getHours(), (int) employee[4].calculateSalary(), employee[4].getName()); + System.out.printf("Manger %4$s with salary %1$d worked %2$d hours - salary is %3$d \n", employee[5].getSalary(), employee[5].getHours(), (int) employee[5].calculateSalary(), employee[5].getName()); + + + } +} diff --git a/src/main/java/school/lemon/changerequest/java/FractionNumber/FractionNumber.java b/src/main/java/school/lemon/changerequest/java/FractionNumber/FractionNumber.java new file mode 100644 index 0000000..4ad8913 --- /dev/null +++ b/src/main/java/school/lemon/changerequest/java/FractionNumber/FractionNumber.java @@ -0,0 +1,70 @@ +package school.lemon.changerequest.java.FractionNumber; + +/** + * Created by lbrdev on 04.01.2017. + * Project: oop.pr1 + */ +public class FractionNumber { + private int dividend; + private int divisor; + private static int DEFAULT_DIVISOR = 1; + public static final FractionNumber ONE = new FractionNumber(1); + public static final FractionNumber ZERO = new FractionNumber(0); + + public FractionNumber(int dividend, int divisor) { + if (divisor == 0) throw new IllegalArgumentException("divisor must not be zero"); + if (dividend == 0) { + this.dividend = dividend; + this.divisor = DEFAULT_DIVISOR; + } else { + this.dividend = dividend; + this.divisor = divisor; + int nod = gcd(this.dividend, this.divisor); + this.dividend = dividend / nod; + this.divisor = divisor / nod; + } + } + + private int gcd(int dividend, int divisor) { + int maxValue; + int minValue; + int nod; + if (dividend > divisor) { + maxValue = dividend; + minValue = divisor; + } else { + maxValue = divisor; + minValue = dividend; + } + for (nod = maxValue; nod >= minValue; nod--) { + if (dividend % nod == 0 & divisor % nod == 0) + return nod; + } + return 1; + } + + + public FractionNumber(int dividend) { + this.dividend = dividend; + this.divisor = 1; + } + + public int getDividend() { + return this.dividend; + } + + public int getDivisor() { + return this.divisor; + } + + public double decimalValue() { + return ((double) dividend) / ((double) divisor); + } + + @Override + public String toString() { + return "" + dividend + "/" + divisor; + } + + +} diff --git a/src/main/java/school/lemon/changerequest/java/FractionNumber/FractionNumberOperations.java b/src/main/java/school/lemon/changerequest/java/FractionNumber/FractionNumberOperations.java new file mode 100644 index 0000000..1bd7773 --- /dev/null +++ b/src/main/java/school/lemon/changerequest/java/FractionNumber/FractionNumberOperations.java @@ -0,0 +1,59 @@ +package school.lemon.changerequest.java.FractionNumber; + +/** + * Created by lbrdev on 04.01.2017. + * Project: oop.pr1 + */ +public class FractionNumberOperations { + public FractionNumber add(FractionNumber a, FractionNumber b) { + + if (a.getDivisor() == b.getDivisor()) { + return new FractionNumber(a.getDividend() + a.getDividend(), a.getDivisor()); + } else { + int tmp = 1; + + while (tmp <= a.getDivisor() * b.getDivisor()) { + if (tmp % a.getDivisor() == 0 && tmp % b.getDivisor() == 0) { + break; + } + tmp++; + } + + int i = a.getDividend() * (tmp / a.getDivisor()); + int j = b.getDividend() * (tmp / b.getDivisor()); + + return new FractionNumber(i + j, tmp); + } + } + + public FractionNumber div(FractionNumber a, FractionNumber b) { + return new FractionNumber(a.getDividend() * b.getDivisor(), b.getDividend() * a.getDivisor()); + } + + public FractionNumber mul(FractionNumber a, FractionNumber b) { + return new FractionNumber(a.getDividend() * b.getDividend(), a.getDivisor() * b.getDivisor()); + } + + public FractionNumber sub(FractionNumber a, FractionNumber b) { + + if (a.getDivisor() == b.getDivisor()) { + return new FractionNumber(a.getDividend() - b.getDividend(), a.getDivisor()); + } else { + int tmp = 1; + + while (tmp <= a.getDivisor() * b.getDivisor()) { + if (tmp % a.getDivisor() == 0 && tmp % b.getDivisor() == 0) { + break; + } + tmp++; + } + + int i = a.getDividend() * (tmp / a.getDivisor()); + int j = b.getDividend() * (tmp / b.getDivisor()); + + return new FractionNumber(i - j, tmp); + } + + } +} + diff --git a/src/main/java/school/lemon/changerequest/java/FractionNumber/TestFractionNumber.java b/src/main/java/school/lemon/changerequest/java/FractionNumber/TestFractionNumber.java new file mode 100644 index 0000000..211786c --- /dev/null +++ b/src/main/java/school/lemon/changerequest/java/FractionNumber/TestFractionNumber.java @@ -0,0 +1,23 @@ +package school.lemon.changerequest.java.FractionNumber; + +/** + * Created by heroy on 04.01.2017. + */ +public class TestFractionNumber { + public static void main(String[] args) { + FractionNumberOperations operation = new FractionNumberOperations(); + FractionNumber number1 = new FractionNumber(1, 4); + FractionNumber number2 = new FractionNumber(5, 1); + System.out.println("GetNumber 1 = " + number1); + System.out.println("GetNumber 2 = " + number2); + System.out.println("Separately - " + number1.getDividend() + " and " + number1.getDivisor()); + System.out.println("To string - " + number1.toString()); + System.out.println("Object ONE and ZERO - " + FractionNumber.ONE + " " + FractionNumber.ZERO); + System.out.println("With only dividend - " + new FractionNumber(5)); + System.out.println("Decimal Value = " + number1.decimalValue()); + System.out.println("Num1*Num2= " + operation.mul(number1, number2)); + System.out.println("Num1/Num2= " + operation.div(number1, number2)); + System.out.println("Num1+Num2= " + operation.add(number1, number2)); + System.out.println("Num1-Num2= " + operation.sub(number1, number2)); + } +}