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 Trainer 6849 Точки

Здравей,

За да сортираш с Компаратор, трябва да предоставиш имплементация на функционалния интерфейс 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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.