Софтуерно Инженерство
Loading...
+ Нов въпрос
VyaraG avatar VyaraG 45 Точки

[Homework, OOP principles] Human, Student, Worker

Здравейте :)) Опитвам се да пренапиша кода от задачата Human, Worker, Student (от темата за наследяване, от курса по ООП) на Java. Стигнах до сравняването на връщаната от метод стойност в тестовия клас. Не мога да разбера как трябва да се достъпи,за да се използва :/ Става въпрос за редове 32-37 от класа Worker, съответно редове 45-49 от Tester. Ето го кода до тук (и условието) https://github.com/VyaraGGeorgieva/JavaProjects/tree/master/OOP%20Practice/HumanStudentWorker

Тагове:
0
Java Advanced
RoYaL avatar RoYaL SoftUni Team Trainer 6795 Точки

Здравей,

За да сортираш с Компаратор, трябва да предоставиш имплементация на функционалния интерфейс Comparator<T> и по-специално на неговият метод int compare(T object1, T object2) (или на boolean equals(Object o)). Този метод приема два аргумента - двойка T-та (Objects) в твоя случай Worker и трябва да върне Integer. Ако два worker-а са еднакви, трябва да върне нула. Ако първият е по-голям от втория - число по-голямо от 0 (1 например) и ако първият е по-малък от втория - число по-малко от 0 (-1 например).

Кога един Worker е по-голям от друг Worker решаваш ти. Не съм гледал задачата, но до колкото разбирам, един Worker е по-голям от друг, когато взима повече пари на час. Тогава твоята имплементация трябва да проверява, ако Парите на Час на Object1 са повече от Парите на Час на Object2 => return 1 и т.н.

По принцип има вградени методи за това към object wrapper-ите на примитивите в Java. Double.compare(double x, double y) например. До колкото видях ти ползваш BigDecimal, там работата е като при стринговете - на едната инстанция викаш compareTo() и подаваш другата.

Т.е. твоята имплементация (било то функционална или конкретна) трябва да направи "return ПаритеНаРаботник1.compareTo(ПаритеНаРаботник2)"

TL;DR: sorted((worker1, worker2) -> worker1.MoneyPerHour().compareTo(worker2.MoneyPerHour()));

P.S.: Би трябвало методът да се казва нещо то сорта на getMoneyPerHour() или getHourSalary() тъй като методите описват действие, а "Пари на час" не е валидно действие

3
18/09/2015 11:51:12
VyaraG avatar VyaraG 45 Точки

Мерси много за обясненията, оправих го :)) Проблемът идваше от изчисленията, сега мисля, че работи коректно  smiley.

0