|
|
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Добрый всем день. Пытаюсь освоить ООП и выбрал для этого JAVA. Поэтому просьба не пинать меня сразу :-) посмотрел небольшой какой - то курс по ООП. И захотелось реализовать какую-нибудь классическую задачку. Но тривиальные задачки на геометрические фигуры , животные и т.п. не интересно. И вот выбрал кое - что посерьезнее (правда это вопрос из собеседования на C#) . Итак, сама задача (возможно она знаменита) : Построить три класса (базовый и 2 потомка), описывающих некоторых работников с почасовой оплатой (один из потомков) и фиксированной оплатой (второй потомок). Описать в базовом классе абстрактный метод для расчета среднемесячной заработной платы. Для «повременщиков» формула для расчета такова: «среднемесячная заработная плата = 20.8 * 8 * почасовую ставку», для работников с фиксированной оплатой «среднемесячная заработная плата = фиксированной месячной оплате». a) Упорядочить всю последовательность работников по убыванию среднемесячного заработка. При совпадении зарплаты – упорядочивать данные по алфавиту по имени. Вывести идентификатор работника, имя и среднемесячный заработок для всех элементов списка. b) Вывести первые 5 имен работников из полученного в пункте а) списка. c) Вывести последние 3 идентификатора работников из полученного в пункте а) списка. d) Организовать запись и чтение коллекции в/из файл. e) Организовать обработку некорректного формата входного файла. Если читать первую часть задания , то вроде как всё просто. Описываем абстрактного предка с абстрактным методом GetSalary, в потомках описываем логику GetSalary в зависимости от класса: оклад ли там или повремёнка. что-то вроде этого : Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. Но вопросы начинаются с нюансов а - е. Выясняется , что работников много и их хотят сортировать . исходя из этого выходит как - то так: 1) таким образом встаёт вопрос о том как хранить входные данные. Понятно , что это либо массив , либо список. Допустим даже это массив из 10 сотрудников(упростим). 2) получается, что абсолютно ВСЕ сотрудники должны находиться в одном экземпляре некоего класса (а о нём ведь в задании ни слова), который наверно будет потомком fix и povremensh (а java разве позволяет это делать ? ). 3) таким образом массив создаем в этом классе . Короче я возможно написал и полнейший бред, но поясните как я тогда должен проектировать свои классы ? интересна сама инициализация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 14:10 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, 1) либо в памяти коллекция либо в субд. 2) зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 14:20 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, Классы именуются с заглавной буквы строго на английском языке. http://www.oracle.com/technetwork/java/codeconvtoc-136057.html Вам в коде не хватает вот этого: Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 14:21 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Blazkowiczandron81, Классы именуются с заглавной буквы строго на английском языке. http://www.oracle.com/technetwork/java/codeconvtoc-136057.html Вам в коде не хватает вот этого: Код: java 1. 2. 3. Спасибо за ответ. Вы наверно вот так хотели написать ? Код: java 1. 2. 3. я наверно крайне невежественный в ООП. Но не понимаю как скажем в экземпляре "employees[0]" класса "pers" есть конструктор от класса fix, тогда как класс fix это наследник от pers , а не наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 15:06 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
спасибо. Petro123andron81, 1) либо в памяти коллекция либо в субд. ну коллекция это круто ещё и не смотрел я эту тему. думаю СУБД тоже излишне в данной задачке. тут ведь речь идёт о файлах А вот массивы в самый раз Petro1232) зачем? Затем что я так понимал, но из сообщения ниже понял, что действительно незачем :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 15:11 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81Вы наверно вот так хотели написать ? Ну, да. Многопоточность дала сбой. andron81я наверно крайне невежественный в ООП. Но не понимаю как скажем в экземпляре "employees[0]" класса "pers" есть конструктор от класса fix, тогда как класс fix это наследник от pers , а не наоборот. Класс FixedPriceEmployee расширяет класс Employee. Экземпляр FixedPriceEmployee является так же экземпляром Employee. Поэтому всё что может Employee может и FixedPriceEmployee. Поэтому Employee e = new FixedPriceEmployee(); А вот конструкция FixedPriceEmployee fpe = new Employee(); уже не допустима, потому что у FixedPriceEmployee могут быть методы, которые Employee не реализует. Просто сосредоточтесь и подумайте над этим. И переходите на внятные имена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 16:16 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
запутался я . вы пишите : BlazkowiczЭкземпляр FixedPriceEmployee является так же экземпляром Employee. Поэтому всё что может Employee может и FixedPriceEmployee. Поэтому Employee e = new FixedPriceEmployee(); но в Employee нет конструктора FixedPriceEmployee() конструкция Employee e = new FixedPriceEmployee(2, "Коля", 14); разве прокатит? код переписал как вы хотели Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 21:27 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
и самое интересное , что да, работает. но это я и не пойму . вот этим мы создаём экземпляр e: Employee e = new FixedPriceEmployee(2, "Коля", 14); я думал , что Employee это предок FixedPriceEmployee , а значит потомок FixedPriceEmployee наследует теоретически всё от Employee. (об этом свидетельствует строка public class FixedPriceEmployee extends Employee ) но никак не наоборот. Выходит класс "Employee" ничего не знает об "FixedPriceEmployee" , в том числе и о конструкторе FixedPriceEmployee. а выходит нет - знает ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 21:38 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, полиморфизм - один из китов ООП. Совсем рядом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 21:57 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Petro123andron81, полиморфизм - один из китов ООП. Совсем рядом. да , но тут его не понимаю ))) не могли бы пояснить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 22:22 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, https://www.youtube.com/user/pro100fox2/videos ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 08:34 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81и самое интересное , что да, работает. Я бы на вашем месте, разобрался с тем почему так работает. Вы вместо этого пытаетесь натянуть свои фантазии на факты. А они не совпадают. andron81Выходит класс "Employee" ничего не знает об "FixedPriceEmployee" , в том числе и о конструкторе FixedPriceEmployee. а выходит нет - знает ! Нет, не знает. Почему вы решили то знает? Конструкторы это отдельная тема. Конструкторы FixedPriceEmployee явно и не явно вызывают конструкторы Employee. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 08:39 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЯ бы на вашем месте, разобрался с тем почему так работает. Вы вместо этого пытаетесь натянуть свои фантазии на факты. А они не совпадают. с чего вы взяли , что я хочу пропустить эту тему ? я как раз хочу разобраться, а фантазии это то как я понимаю BlazkowiczAndron81Выходит класс "Employee" ничего не знает об "FixedPriceEmployee", в том числе и о конструкторе FixedPriceEmployee. а выходит нет - знает ! Нет, не знает. Почему вы решили то знает? потому как вот это: Employee e = new FixedPriceEmployee(2, "Коля", 14); я понимаю так: грубо говоря "e" делаем типа класса "Employee". А после "=" начинаются непонятные моменты : делаем инициализацию FixedPriceEmployee(2, "Коля", 14). тогда как FixedPriceEmployee это метод не из Employee, а из класса FixedPriceEmployee. А класс FixedPriceEmployee это наследник Employee, а не наоборот, поэтому непонятно как мы можем применить этот метод из Employee. то есть вот так было бы понятно: FixedPriceEmployee e = new FixedPriceEmployee(2, "Коля", 14); так как "e" мы делаем типом FixedPriceEmployee и поэтому можем в инициализации тут же вызвать метод FixedPriceEmployee(параметры) а в случае Employee e = new FixedPriceEmployee(2, "Коля", 14) в моём понимании мы делаем e типа Employee, но этот класс ничего не знает о существовании "FixedPriceEmployee" Blazkowicz Конструкторы FixedPriceEmployee явно и не явно вызывают конструкторы Employee. это я понимаю на всякий случай привожу ещё раз код Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 09:32 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, Employee e - это переменная, которая указывает на объект типа Employee. new FixedPriceEmployee() - это конструктор, который создаёт новый объект типа FixedPriceEmployee. Является ли объект типа FixedPriceEmployee так же объектом типа Employee? Да! Значит переменная типа Employee может ссылаться и на вновь созданный объект. Что в этой логике не понятного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 10:18 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, Юмор люблю). Я не пойму, это вы тестируете Blazkowicz или он вас? )) Nixic вам дал ссылку. Вы её изучили? Вникайте во всё что вам дают. А потом спрашивайте...не торопясь. imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 11:17 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Petro123 Nixic вам дал ссылку. Вы её изучили? ок. беру паузу тогда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 12:41 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, как раз парень и задаёт волнующий для меня вопрос на 39:30 http://www.youtube.com/watch?v=9GdtWiovvIQ&list=PLmqFxxywkatR3qNmxqcFIHF9MN2-_eteU ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 14:30 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, Добавьте в ваш пример помимо getSalary методы уникальные для каждого типа. И поэксперементируйте в IDE с тем как эти методы вызываются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 14:35 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Blazkowiczandron81, Добавьте в ваш пример помимо getSalary методы уникальные для каждого типа. И поэксперементируйте в IDE с тем как эти методы вызываются. Все методы сделайте public, чтобы они были виртуальными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 14:36 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81то есть берем FixedPriceEmployee и обращаемся с ним как Employee . таким образом это и есть полиморфизм1 andron81получаем весь фарш Employee , но явным образом обращаться к FixedPriceEmployee мы уже не можем . нечего не понял. - в конструкторе наследника нужно вызывать супер класса конструктор. - в коде в переменной суперкласса программа автоматом вызовет процедуру наследника. Это полиморфизм2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 14:37 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 14:39 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Petro123andron81получаем весь фарш Employee , но явным образом обращаться к FixedPriceEmployee мы уже не можем . ничего не понял. я имел ввиду, что мы уже не можем обратиться к методам FixedPriceEmployee если их нет в предке. ладно... проехали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 14:53 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81я имел ввиду, что мы уже не можем обратиться к методам FixedPriceEmployee если их нет в предке. ладно... проехали - приведение типов если очень надо http://ru.stackoverflow.com/questions/271985/Явное-приведение-типов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2016, 15:04 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Petro123andron81я имел ввиду, что мы уже не можем обратиться к методам FixedPriceEmployee если их нет в предке. ладно... проехали - приведение типов если очень надо http://ru.stackoverflow.com/questions/271985/Явное-приведение-типов в такие дебри пока не лезу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2016, 17:27 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Код: java 1. 2. 3. подскажите, а вот если мне нужно сортировать элементы я вынужден буду тупо общаться тогда с элементами своего массива посредством Get, Set-ов из метода Main ? а есть ли другие способы ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2016, 22:28 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39335373&tid=2123539]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 430ms |

| 0 / 0 |
