diff --git a/Employee.java b/Employee.java index ec82d2a..5989d94 100644 --- a/Employee.java +++ b/Employee.java @@ -22,7 +22,17 @@ public int getSalaryInEuro() { return salaryInEuro; } - public void setSalaryInEuro(int salaryInEuro) { + public void setSalaryInEuro(int salaryInEuro) + throws SalaryDecreaseException, SalaryIncreaseTooHighException { + if (this.salaryInEuro > salaryInEuro) { + throw new SalaryDecreaseException(); + } + + double change = (double) (salaryInEuro - this.salaryInEuro) / this.salaryInEuro; + if (change > 0.1) { + throw new SalaryIncreaseTooHighException(); + } + this.salaryInEuro = salaryInEuro; } diff --git a/Exercise.java b/Exercise.java index 85f47d5..1f0c6a2 100644 --- a/Exercise.java +++ b/Exercise.java @@ -17,6 +17,39 @@ public static void main(String[] args) { company.addEmployee(new Employee(4, new Person("Peter Schneider"), 55000)); company.addEmployee(new Employee(5, new Person("Miriam Albers"), 90000)); + try { + e1.setSalaryInEuro(55000); + e2.setSalaryInEuro(77000); + e3.setSalaryInEuro(45000); + } catch (SalaryDecreaseException | SalaryIncreaseTooHighException e) { + System.err.println(e.getMessage()); + } + + // alternative multiple catch: + try { + e1.setSalaryInEuro(55000); + e2.setSalaryInEuro(77000); + e3.setSalaryInEuro(45000); + } catch (SalaryDecreaseException e) { + System.out.println(e.getMessage()); + } catch (SalaryIncreaseTooHighException e) { + System.out.println(e.getMessage()); + } + + // alternative instance of + try { + e1.setSalaryInEuro(55000); + e2.setSalaryInEuro(77000); + e3.setSalaryInEuro(45000); + } catch (Exception e) { + if (e instanceof SalaryDecreaseException) { + System.out.println(e.getMessage()); + } + if (e instanceof SalaryIncreaseTooHighException) { + System.out.println(e.getMessage()); + } + } + System.out.println(company.toString()); } } diff --git a/SalaryDecreaseException.java b/SalaryDecreaseException.java new file mode 100644 index 0000000..f1a6e10 --- /dev/null +++ b/SalaryDecreaseException.java @@ -0,0 +1,7 @@ +public class SalaryDecreaseException extends Exception { + + public SalaryDecreaseException() { + super("Das neue Gehalt muss hoeher sein als das bisherige"); + // alternativ: super(); + } +} diff --git a/SalaryIncreaseTooHighException.java b/SalaryIncreaseTooHighException.java new file mode 100644 index 0000000..47b65f5 --- /dev/null +++ b/SalaryIncreaseTooHighException.java @@ -0,0 +1,7 @@ +public class SalaryIncreaseTooHighException extends Exception { + + public SalaryIncreaseTooHighException() { + super("Das neue Gehalt darf maximal 10% ueber dem bisherigen Gehalt liegen"); + // alternativ: super(); + } +}