|
0 / 0 / 0
Регистрация: 10.11.2016
Сообщений: 3
|
|||||||||||
Правильное понимание и обоснование использования полиморфизма08.12.2016, 16:40. Показов 3008. Ответов 34
Метки нет (Все метки)
Всем привет!
Помогите понять полиморфизм правильно. Так как примеров в Интернете много и все они отличаются друг от друга. Как я его понимаю. Это когда свойство базового класса может использовать методы производных классов. Пример кода.
Все приведенные мной примеры показывают полиморфизм или только первый ? Заранее спасибо !
0
|
|||||||||||
| 08.12.2016, 16:40 | |
|
Ответы с готовыми решениями:
34
Не понимание полиморфизма и статического поля на примере представленного кода Правильное понимание Правильное понимание последовательности арифметических операций |
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
|||
| 08.12.2016, 17:19 | |||
|
2. Полиформизм не показан, но присутствует - у admin есть возможность вызвать setName() родителя. 3. Будет ошибка, метод test() нигде не объявлен.
0
|
|||
|
0 / 0 / 0
Регистрация: 10.11.2016
Сообщений: 3
|
|||||||||||
| 08.12.2016, 17:48 [ТС] | |||||||||||
|
Извиняюсь..
Вариант 1
0
|
|||||||||||
|
36 / 33 / 10
Регистрация: 14.06.2013
Сообщений: 432
|
|
| 08.12.2016, 19:43 | |
|
bnt, да, все верно, override (переопределение) - тоже полиморфизм
0
|
|
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|||
| 08.12.2016, 23:09 | |||
|
0
|
|||
|
0 / 0 / 0
Регистрация: 10.11.2016
Сообщений: 3
|
||
| 09.12.2016, 15:34 [ТС] | ||
Или все-таки как объяснили мне ниже если использую $admin->setName(); , то это переопределение (что тоже считается). Народ, большое спасибо за ответы!!!)
0
|
||
|
14 / 50 / 3
Регистрация: 26.12.2009
Сообщений: 406
|
|
| 24.12.2016, 20:37 | |
|
Забей на этот полиморфизм.
Это все - ненужная академическая ерунда. Кто это спрашивает на собеседовании - тот просто сам плавает и не понимает, чего хочет от программиста.
0
|
|
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
|
| 24.12.2016, 20:53 | |
|
Madrid, пожалуйста, не спамьте по всем темам общие фразы про плохое ООП. Это никому не нужно и в решении задач не помогает. Если чешутся руки - создайте отдельную тему "ООП - зло" и изливайте там душу.
1
|
|
|
14 / 50 / 3
Регистрация: 26.12.2009
Сообщений: 406
|
|
| 24.12.2016, 21:29 | |
|
ООП нужно применять там, где это нужно!
Применение его там, где не нужно, признак лоха. ![]() ООП - это только инструмент. Не принимайте все так близко к сердцу.
0
|
|
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
||||
| 24.12.2016, 22:01 | ||||
|
Это совсем другой подход к построению приложений. И вопрос использования ООП должен решать сам программист в зависимости от личных предпочтений. Поэтому я считаю, что если человек пишет в ООП стиле одностраничник, это ни в коем случае не характеризует его как лоха, а лишь отражает его вкус.
1
|
||||
|
14 / 50 / 3
Регистрация: 26.12.2009
Сообщений: 406
|
||||||||
| 24.12.2016, 22:27 | ||||||||
|
Кто-то более умный за {censored} ООП, отписавшихся тут, написал:
Это, {censored}, даже тупая постановка вопроса. "Типа пишу код, ходу сделать полиморфизм." {censored}, тебе задачу нужно решить, или полиморфизм присобачить? ![]() Добавлено через 21 минуту ![]() Есть 2 подхода: 1. Решать задачу и искать подходящие способы ее решения. 2. Подстраивание решения задачи под "лучшие практики", описанные в интернете. ![]() Эти 3 кита ООП - ерунда. ![]() ![]() ![]() А, вообще, в вебе чрезмерное ООП не нужно. ![]() Это ж просто вывод html-я. ![]() А вот когда он так решил из-за хайпа - то он - лох. Сужу по себе, когда применял ООП без понимания.
0
|
||||||||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
|||||||||||
| 24.12.2016, 23:06 | |||||||||||
![]() 2. Цитату вам стоило бы перечитать, ведь это вы затеваете "споры про подобные мелочи" сразу в куче тем. Да ещё и вразумить пытаетесь тех людей, которые только учатся и сами ООП ещё слабо понимают. Ваша позиция - ООП больше подходит для одних ситуаций, процедуры - для других. Вот я и прошу описать, в каких конкретных случаях использовать ООП неправильно. Изменили характеристики товара -> автоматически изменилось название (актуально для магазинов техники, где названия типа ПК Офигенный i3-3220 | 4Gb PC-3200 | 500Gb | DVD)
1
|
|||||||||||
|
14 / 50 / 3
Регистрация: 26.12.2009
Сообщений: 406
|
||||||||||
| 24.12.2016, 23:57 | ||||||||||
![]() Тема {censored} была в цитате. Поэтому так. Вы же {censored} на ООП, раз так задело? Не {censored} на ООП, и все. ![]() 2. Так я говорю, что это ерунда, на которую не стоит обращать внимания. ![]() А тут такая разгромная статья на хабре {censored}, ну это как-то показывает умение программиста программировать? ![]() Я как бы не говорю, что магазин нужно делать только в ООП стиле, или только в процедурном. Магазин - это по сути такой же сайт. Определенные части можно сделать в таком стиле, определенные - в другом. Когда есть какой-то код в одном методе action определенного класса контроллера, но он не использует другие методы этого контроллера - то это по сути plain-код, просто оформленный в методе контроллера. ![]() Классы более удобно использовать лишь для группировки и автозагрузки. ![]() Городить же ООП огород - зачастую не нужно. ![]() Большинству сайтов никакой парсинг не нужен. Можно вообще ограничиться json_decode() Для этого нужен метод в товаре? Это можно реализовать несколькими строками кода в обработчике события изменения товара. Ну и смотря чья доставка. ![]() Если доставка на аутсорсе, то лучше написать, кто аутсорсит и расчитывать цену доставки в момент заказа. Товар же не меняется сам в объемах. ![]() Он не расдувается и не сжимается. ![]() У него нет такого свойства. Это просто фикс неправильных данных. ![]() Выносить эти несколько строк в отдельный метод, раз он используется только в одном месте, я бы не стал. ![]() Кто-то вынес бы. Но все равно, я бы не совал это в сущность товара.Кстати, что у Вас сущность товара? Это типа ActiveRecord? Ну, то есть, товар умеет сам себя сохранять и вытягивать из базы? ![]() ![]() Но если он так и не научился программировать? Если продолжает прыгать с фреймворка на фреймворк, ибо внезапно предыдущий стал УГ, а все хайпят новенький.
0
|
||||||||||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
|||||||||
| 25.12.2016, 00:29 | |||||||||
![]() ![]() Но некоторые вещи не могу переварить, например кверибилдеры $db->select()->from()->where()->join()... В несложных случаях (лично мне) хватает 2 классов - один для коннекта и скачивания товаров, второй - сервис, получает товары от парсера и передаёт на сохранение модулю товаров (у которого да, уже классов побольше). Он также не пахнет и звуков не издаёт, хотя такими свойствами мы его можем наделить.Добавлено через 43 секунды
0
|
|||||||||
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
||
| 25.12.2016, 09:53 | ||
|
1
|
||
|
14 / 50 / 3
Регистрация: 26.12.2009
Сообщений: 406
|
||||||||
| 25.12.2016, 16:25 | ||||||||
![]() Можете поискать, вдруг что-то полезное найдете. Хотя да, там в последнее время много противоречивых статей. Это у Вас глобальный объект? Или статические методы класса? ![]() ![]() ![]() Это обработка GET/POST запроса. Добавлено через 6 минут Его нужно применять к месту. ![]() Я еще в чем-то не прав в последних ООП-темах? ) Создайте тему, обсудим. ![]() Добавлено через 59 секунд php - это не Java, где все - объект.
0
|
||||||||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
||||||
| 25.12.2016, 17:36 | ||||||
|
Он не глобальный (вернее, глобальным его делает сервис-локатор), не статический (хотя можно и статикой сделать).
0
|
||||||
|
14 / 50 / 3
Регистрация: 26.12.2009
Сообщений: 406
|
||||||||
| 25.12.2016, 18:09 | ||||||||
|
Есть и другие виды полиморфизма. ![]() В разных классах метод может делать разные вещи. Ну и что тут особенного? Это ж просто наследование с возможностью переопределения или просто реализация интерфейса. Ну реализовывай как хочешь. Из этого делать кита ООП? ![]() ![]() ![]() (Лучше - это значит, что так удобнее для меня )Не ООП ж единым. ![]() Вы что-то кроме ООП признаете? ООП код удобен в сопровождении? Во вливании новых программистов в проект?
0
|
||||||||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
|||||||||||||||||||||||||
| 25.12.2016, 20:11 | |||||||||||||||||||||||||
|
Если мы говорим об ООП в PHP, то помимо просто переопределения есть возможность унификации принимаемых параметров в методах. К примеру, следующий код вызовет ошибку:
В обоих случаях полиформизм в PHP шире, чем вы описываете.
0
|
|||||||||||||||||||||||||
|
Фрилансер
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
|
|
| 25.12.2016, 21:00 | |
|
Madrid, Я посмотрел ваши темы в разделе PHP и OOП , и складываются такое чувство что вы 'профи' и знаете где нужно использовать ООП, а где нет. Кому использовать , а кому не использовать.
Так вот, предлагаю Вам создать тему в которой вы опишите все свои мысли и доводы про ООП. Если хотите можете даже записать на аудио/видео съемку , возможно у Вас стоит 'поучится' ООП. кто знает , кто знает.....
0
|
|
| 25.12.2016, 21:00 | |
|
Помогаю со студенческими работами здесь
20
Пример использования генератора случайных чисел для демонстрации динамического полиморфизма Обоснование отказа от БД Математическое обоснование календаря Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|