|
|
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#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 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, хотя возможно меня сейчас начнут жестко пинать , обвиняя в полном непонимании ООП , но я вот о чем : если предположить , что метод employees не абстрактный, можно было бы организовать в нем такой метод который эту сортировку бы осуществлял, хотя возможно это полный бред , хотя вот в это я тоже с трудом поверил , что так можно , когда увидел : Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2016, 22:33 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81подскажите, а вот если мне нужно сортировать элементы я вынужден буду тупо общаться тогда с элементами своего массива посредством Get, Set-ов из метода Main ? а есть ли другие способы ? Можно при помощи Comparator и Arrays.sort(T[] a,Comparator<? super T> c) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 00:12 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевМожно при помощи Comparator и Arrays.sort(T[] a,Comparator<? super T> c) ну то есть я могу создать метод Sorting внутри класса Employee в предположении, что Employee не абстрактный? (исходный код смотреть выше ) я просто не понимаю, если JAVA позволяет экземпляры класса (в нашем случае это Employee) создавать в виде элементов массива, но тогда не укладывается в голове как мы можем организовать метод Sorting внутри класса Employee , который будет работать не только с текущим экземпляром , но и вмешиваться в другие. наверно это фантастика но это было бы идеальное решение . Хотя возможно это совсем недопустимо ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 10:01 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, По ООП уже придумали Списки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 10:03 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Petro123andron81, По ООП уже придумали Списки совсем не пойму причем тут списки. я упростил задачу : свёл количество элементов к константе. мне непонятна технология сортировки массива . Всё было бы ясно, если бы экземпляр содержал массив в качестве поля. но у нас элементы разбросаны по разным экземплярам каждый из которых будет содержать свой метод Sorting, тем не менее метод должен работать с группой экземпляров, но внутри одного метода, как так получается ))))))))))))))))) p.s. и не хочу пользоваться стандартными возможностями Comparator и Arrays.sort . хочу для понимания изобрести свой велосипед. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 10:35 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81Всё было бы ясно, если бы экземпляр содержал массив в качестве поля Если тупой массив, то - Да. Т.к. вы добаляете функционал типа сортировки, то массив уже не годится. Что тут непонятного? andron81хочу для понимания изобрести свой велосипед. Изобретайте - делайте наследник или помощник для массива. Но ОТДЕЛЬНЫЙ класс - список. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 10:51 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, по ООП, класс\бизнес-объект\бизнес-сущность внутри которого массив, сам не должен его сортировать. Он только его может выдать. Например: Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 11:10 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
второй вариант вычисления задачи - шаблон Визитор\Посетитель. Он проходит по всем объектам и вычисляет зарплату. Но это IMHO сложновато для вас будет на данном этапе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 11:13 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Petro123andron81Всё было бы ясно, если бы экземпляр содержал массив в качестве поля Если тупой массив, то - Да. Т.к. вы добаляете функционал типа сортировки, то массив уже не годится. Что тут непонятного? функционал сортировки я бы мог добавить в виде говнкода в методе main. но поэтому случаю я и спришваю если мы делаем так: Код: java 1. то с ваших слов выходит не представляется возможным спрятать логику сортировки в класс employees в виде метода - если так то оно понятно. Однако это выйдет если мы организуем экземпляры не как элементы массива, а как список. Верно ? Petro123andron81хочу для понимания изобрести свой велосипед. Изобретайте - делайте наследник или помощник для массива. Но ОТДЕЛЬНЫЙ класс - список. последнее предложение ваше про отдельный класс-список поясните, пожалуйста . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 11:23 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81то с ваших слов выходит не представляется возможным спрятать логику сортировки в класс employees в виде метода - если так то оно понятно. Однако это выйдет если мы организуем экземпляры не как элементы массива, а как список. Верно ? можно и навесить на employees, если это конец задачи. Если не конец и employees - безнес сущность, то лучше в employees иметь помощника в виде умного класса-массива под именем "Список" (List) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 11:31 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
тогда будет: Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 11:34 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Petro123тогда будет: Код: java 1. 2. 3. да, тяжко для меня : вот это "абстрактныйКласс" вынос мозга ))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 11:39 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, авторУ некоторых читателей может возникнуть вопрос: зачем нам коллекции, если у нас есть массивы ? В самом деле, многие используют коллекции там где нужно и не нужно. http://www.quizful.net/post/Java-Collections andron81да, тяжко для меня : вот это "абстрактныйКласс" вынос мозга ))))) делай по шагам. У тебя же в коде он есть - базовый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 11:40 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Blazkowiczandron81Вы наверно вот так хотели написать ? Ну, да. Многопоточность дала сбой. andron81я наверно крайне невежественный в ООП. Но не понимаю как скажем в экземпляре "employees[0]" класса "pers" есть конструктор от класса fix, тогда как класс fix это наследник от pers , а не наоборот. Класс FixedPriceEmployee расширяет класс Employee. да. не спорю andron81Экземпляр FixedPriceEmployee является так же экземпляром Employee. Поэтому всё что может Employee может и FixedPriceEmployee. да. может я не так вопрос ставил ? смотрите Employee e = new FixedPriceEmployee(); выражение слева от "=" означает , что резервируется переменная e с типом Employee, то есть под экземпляр класса Employee . а справа создаётся новый экземпляр с типом класса FixedPriceEmployee. Но как это реально ??? присвоить переменной зарезервированной под класс Employee экземпляр FixedPriceEmployee? Ведь последний является потомком первого, как раз-таки в экземпляре могут содержаться методы о которых не знает переменная e. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 19:56 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81Ведь последний является потомком первого, как раз-таки в экземпляре могут содержаться методы о которых не знает переменная e. Всё верно. И это не страшно. Мы можем обращаться с FixedPriceEmployee, как с Employee. Просто часть методов нам может быть не видна. Но мы используем переменную типа Employee в том случае когда нам всё равно какой именно там Employee внутри. Это и есть полиморфизм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 07:50 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Чтобы стало совсем понятно нужно ещё вспомнить про виртуальные методы. Когда мы вызываем Employee.getSalary() в коде, мы не знаем какой именно из двух методов FixedPriceEmployee.getSalary() или PartTimeEmployee.getSalary(). Конкретный метод будет определен в рантайме динамически в зависимости от типа объекта на который ссылается переменная. Попробуйте понять вот эти утверждения: 1. Переменная это ссылка. 2. Объект имеет конкретный тип. 3. Все методы кроме private, static и final являются виртуальными. Их вызов определяется динамически во время выполнения кода через таблицу виртуальных методов. Вызовы не виртуальных методов "линкуются" во время компиляции на конкретные реализации этих методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 07:58 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Blazkowiczandron81Ведь последний является потомком первого, как раз-таки в экземпляре могут содержаться методы о которых не знает переменная e. Всё верно. И это не страшно. ну как это не страшно ? вам же никто не позволит сделать например вот так : int i = 5; i="Hello, world"; BlazkowiczМы можем обращаться с FixedPriceEmployee, как с Employee. да, можем так как FixedPriceEmployee наследник Employee. Blazkowicz Просто часть методов нам может быть не видна. Но мы используем переменную типа Employee в том случае когда нам всё равно какой именно там Employee внутри. где там внутри ??? как может быть внутри Employee быть FixedPriceEmployee ? это в FixedPriceEmployee может быть Employee. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 08:38 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81где там внутри ??? как может быть внутри Employee быть FixedPriceEmployee ? это в FixedPriceEmployee может быть Employee. Вы путаете переменную и объект\тип. Я говори про "внутри" переменной. Переменная ссылается на любой тип. В Java строгая типизация, поэтому тип объекта должен совпадать или быть наследником типа переменной. Существуют языки без строгой типизации. Там переменная вообще может ссылаться на объект любого типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 08:44 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Blazkowicz...тип объекта должен быть наследником типа переменной. вооот ! в этом то и фишка. в моём понимании наоборот ))) у меня именно это в голове и не укладывается с точки зрения логики переменная e резервируется под предка (набор функций предка) а объект наряду с функциями предка обладает ещё доп. функциями (набор функций предка + собственные функции) и как можно первому дать значение в виде второго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 09:11 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81вооот ! в этом то и фишка. в моём понимании наоборот ))) у меня именно это в голове и не укладывается с точки зрения логики переменная e резервируется под предка (набор функций предка) а объект наряду с функциями предка обладает ещё доп. функциями (набор функций предка + собственные функции) и как можно первому дать значение в виде второго. Нет. Ничего никуда не резервируется. Вы понимаете как работает память? Объект это данные, которые лежат по определенному адресу. Переменная, это ссылка. Она может содержать любой адрес. Вообще любой. И есть такая штука, как компилятор. В нём реализована строгая типизация. Вот он и следит за тем чтобы определенные ссылки могли ссылаться только на определенные объекты. (есть конечно ещё и дополнительный контроль типа в рантайме, но это отдельная история) Мне кажется, вам стоило бы отложить ООП в сторону и освоить азы С\С++ или другого низкоуровнего языка. Тогда бы было поверх чего строить понимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 09:18 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Мне кажется, вам стоило бы отложить ООП в сторону и освоить азы С\С++ или другого низкоуровнего языка. Тогда бы было поверх чего строить понимание. ну да. я никогда не задумывался в такой конструкции как : int i ; i=10; всегда расценивал с математической точки зрения. и мне этого хватало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 09:29 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, Наследники это матрешка. Ссылку Обозначить можно на любой элемент матрешки. Но если мы обозначим на базовую, то туда просто больше штук из одной матрёшки влезет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 09:30 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Petro123, вроде бы стал немного допекать : Employee e = new FixedPriceEmployee(); мы в e присваиваем ссылку на экземпляр подкласса FixedPriceEmployee. А new FixedPriceEmployee() - это создание экземпляра. таким образом в "e" будут доступны только методы которые есть в "e" . понятно , что если есть методы с такой же сигнатурой описанные в FixedPriceEmployee то будут они выполняться. но это другая история. Самое важно, что я для себя уяснил выделил выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 10:58 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81понятно , что если есть методы с такой же сигнатурой описанные в FixedPriceEmployee то будут они выполняться. но это другая история. Самое важно, что я для себя уяснил выделил выше. Смотри. Код: java 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 11:05 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Blazkowiczandron81понятно , что если есть методы с такой же сигнатурой описанные в FixedPriceEmployee то будут они выполняться. но это другая история. Самое важно, что я для себя уяснил выделил выше. Смотри. Код: java 1. 2. 3. 4. 5. финт ушами мне пока рано . спасибо участникам за помощь и терпение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 11:08 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81 таким образом в "e" будут доступны только методы которые есть в "e" . без указания компилятору что преобразуем тип (по простому) - все какие есть в e, но вызван будет из старшей матрёшки. (Blazkowicz написал). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 11:10 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81финт ушами мне пока рано . спасибо участникам за помощь и терпение Ну, по-моему это важно для понимания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 11:18 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Petro123без указания компилятору что преобразуем тип (по простому) то есть ? поясните ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 11:18 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Код: java 1. А разве не метод описанный в конкретном типе? (Если конечно приведение типов состоится) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 11:18 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевА разве не метод описанный в конкретном типе? Ну, я пытаюсь объяснить по простому, а не быть академически точным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 11:22 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81финт ушами мне пока рано . На самом деле с него и надо начинать. Виртуальные методы это способ позднего связывания. Рассматривай класс, как табличку ссылок, слева как называется (и общее описание, вроде того, что передать методу и какого типа результат), справа, что подразумевается. При наследовании можно (не всегда правда) менять содержимое правого столбца и добавлять строки. Приведение типа к предку выглядит, как шаблон с вырезанными дырками в местах, где были описания у предка. При наложении шаблона, мы видим только то, где дырки. Но правый столбец тот, что создан у потомка. Если привести назад к типу потомка (заменить шаблон), то увидим то, что есть у потомка. При этом предка привести к потомку не получится - у него на против добавленных строк ничего нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 11:26 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81Petro123без указания компилятору что преобразуем тип (по простому) то есть ? поясните Blazkowicz же последней строкой написал пример. - компилятор (IDE) тупой, и без указания автоматом подбирает самый старший наследник. Логично? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 11:38 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Petro123, да . только непонятно зачем это надо. Если я верно понимаю в этом случае мы отказываемся от полиморфизма ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 11:41 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81Petro123, да . только непонятно зачем это надо. Если я верно понимаю в этом случае мы отказываемся от полиморфизма ? Да. И на твоём этапе это не надо. Иди по цели топика . Иначе никогда не дойдёшь до версии 1.0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 11:44 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Petro123, может быть это понадобится, когда у нас такое построение классов : предок - > наследник1 -> наследник2 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 11:47 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81Petro123, может быть это понадобится, когда у нас такое построение классов : предок - > наследник1 -> наследник2 ? откроешь другой топик. Там море ньюансов. И задачу реальную надо придумать). Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 11:53 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
всё же странно себя ведёт массив из классов ))) Код: java 1. 2. 3. 4. 5. 6. здесь хотелось бы видеть "Коля" , а выводит "Петя". Код: 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. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 16:44 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, не делай больше одной пустой строки. Самое время пройтись пошаговой отладкой самому и выяснить вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 16:51 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Заодно выясните отличие static поля от не static. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 17:07 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81всё же странно себя ведёт массив из классов ))) Осталось понять кто и зачем в этом коде написал ключевое слово static. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 17:07 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, ок. все советы учту ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 17:21 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, понятно. исходя из подсказок вывод: сделал жесткое поле Name значение которого таскается постоянно, все экземпляры ссылаются на то что было присвоено. короче для каждого экземпляра не создаётся Name. а надо бы динамическим это поле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 22:28 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81, короче static для полиморфизма зло судя по всему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 22:31 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
andron81короче static для полиморфизма зло судя по всему Существует статический полиморфизм. И вообще разные его проявления. http://stackoverflow.com/questions/20783266/what-is-the-difference-between-dynamic-and-static-polymorphism-in-java http://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html Хотя в большинстве случаев под полиморфизмом понимают именно виртуальные методы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 22:38 |
|
||
|
задача о персонале с фикс и повременной з.п.
|
|||
|---|---|---|---|
|
#18+
можно попинать, с точки зрения ООП и не только. :) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: 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. Код: 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. Код: 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. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2016, 17:19 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2123539]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
132ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
89ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 507ms |

| 0 / 0 |
