کیوان برنامه دارد یک اپلیکیشن جاوا برای انجام عملیات مقایسهای به صورت جامع طراحی کند. به دلیل سنگین بودن پیادهسازیهای مربوط به این اپلیکیشن، او تصمیم میگیرد که از شما برای تولید این اپلیکیشن کمک بگیرد.
کیوان یک آدم سختگیر است و علاوه بر اینکه (به شدت!!!) تاکید دارد قسمتهای مختلف اپلیکیشن به درستی کار کنند، میخواهد خطاهای برنامه نویسی مربوط به آنها نیز تا حد امکان در *زمان کامپایل* پیدا شوند.
شما قرار است قسمت مربوط به یافتن *maximum*ها را در این پروژه پیادهسازی کنید. متد استاتیک **findMax** در کلاس **Maximum** را طوری پیادهسازی کنید که در برنامهی زیر، خروجی مطابق کامنتها باشد.
*نکتهی مهم*: دقت کنید که متد **findMax** باید با دسترسی **public** تعریف شود.
```java
import java.util.Objects;
class Person {
int rank;
public Person(int rank) {
this.rank = rank;
}
}
class Developer extends Person implements Comparable<Person> {
public Developer(int rank) {
super(rank);
}
@Override
public int compareTo(Person o) {
return Integer.compare(rank, o.rank);
}
}
class Boss extends Person implements Comparable<Boss> {
int salary;
public Boss(int rank, int salary) {
super(rank);
this.salary = salary;
}
@Override
public int compareTo(Boss o) {
return Integer.compare(salary, o.salary);
}
}
class Employee extends Person implements Comparable<Boss> {
int timeToWork;
public Employee(int rank, int timeToWork) {
super(rank);
this.timeToWork = timeToWork;
}
@Override
public int compareTo(Boss o) {
return Integer.compare(timeToWork, o.salary);
}
}
public class Maximum {
public static void main(String[] args) {
Integer a = Maximum.findMax(0, 1, 2, 3); // a = 3
Person person1 = new Person(1);
Person person2 = new Person(2);
// Compile Error : Person should implements Comparable
Maximum.findMax(person1, person2);
Developer s1 = new Developer(20);
Developer s2 = new Developer(0);
Developer maxDeveloper = Maximum.findMax(s1, s2);
System.out.println(Objects.requireNonNull(maxDeveloper).rank); // prints 20
Boss boss1 = new Boss(3, 200);
Boss boss2 = new Boss(2, 400);
Boss boss3 = new Boss(1, 600);
Boss maxBoss = Maximum.findMax(boss1, boss2, boss3);
System.out.println(Objects.requireNonNull(maxBoss).salary); // prints 600
Employee employee1 = new Employee(3, 10);
Employee employee2 = new Employee(2, 20);
Employee employee3 = new Employee(1, 5);
// Compile Error : Employee should be compared to Boss only
Employee maxEmployee = Maximum.findMax(employee1, employee2, employee3);
}
}
```
## آن چه که باید آپلود کنید
یک فایل zip که وقتی آن را باز میکنیم، در آن **فقط** فایل Maximum.java را ببینیم.