![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#21 | |
ios developer
Старожил
Регистрация: 16.11.2007
Сообщений: 2,885
|
![]()
Полиморфизм через абстракции - частный случай полиморфизма. Реализаций оного полно.
Цитата:
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
Последний раз редактировалось crazy horse; 04.08.2015 в 15:25. |
|
![]() |
![]() |
![]() |
#22 | |
Форумчанин
Регистрация: 24.04.2012
Сообщений: 300
|
![]() Цитата:
Код:
Помог? Оставляем отзыв =)
|
|
![]() |
![]() |
![]() |
#23 | |
ios developer
Старожил
Регистрация: 16.11.2007
Сообщений: 2,885
|
![]() Цитата:
С другой стороны нехило было бы цитаты вставлять в комменты подобные, чтобы было понятно, к чему относятся ![]()
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
|
|
![]() |
![]() |
![]() |
#24 |
Заблокирован
Регистрация: 06.02.2011
Сообщений: 1,999
|
![]()
Helloween полиморфизм был в первом сообщении.
зачем вообще приводить тип производного класса к типу базового ? А* b = new С; тем самым делать функции виртуальными ![]() С* b = new С; - чем это плохо? |
![]() |
![]() |
![]() |
#25 |
ios developer
Старожил
Регистрация: 16.11.2007
Сообщений: 2,885
|
![]()
Представьте, что у вас есть два класса - наследники класса фигура: круг и квадрат.
У обоих есть свой метод расчета площади. В случае с полиморфизмом - остальному коду пофигу, какую из фигур конкретно вы ему подсунули (предположим, созданную где-то в другом месте). В обоих случаях площадь будет посчитана правильно, а интерфейс - один и тот же. Не ясно, не? Конечно же, можно написать кучу кейсов под обработку каждого конкретного шейпа. Я такое видел часто.
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
|
![]() |
![]() |
![]() |
#26 |
Заблокирован
Регистрация: 06.02.2011
Сообщений: 1,999
|
![]()
тоесть в данном случае идет ключевое слово фигура, а полиморфизм
сам в состоянии выяснить что это за фигура ? типо Код:
|
![]() |
![]() |
![]() |
#27 |
ios developer
Старожил
Регистрация: 16.11.2007
Сообщений: 2,885
|
![]()
Нет, не в состоянии *он* ничего выяснить. В данном случае, он просто позволяет обращаться к любому типу - наследнику, как к абстрактному базовому типу, оставляя нюансы реализации на плечах последнего. Предположим, у вас есть некий массив фигур. Контейнер. В него может попасть всё, что угодно, но мы знаем, что всё, что туда попадает, в общем случае, реализует абстрактный метод класса shape - area. Нам надо вычислить общую площадь всех фигур в нём. Вместо того, чтобы долго и натужно в рантайме определять, что за конкретная сущность нам попалась, мы тупо берём каждую в цикле как абстрактный тип shape и пинаем известный нам абстрактный метод. Складываем, радуемся. Это, конечно, приянутый за уши пример, но очень наглядный.
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
Последний раз редактировалось crazy horse; 04.08.2015 в 19:20. |
![]() |
![]() |
![]() |
#28 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]() Цитата:
Это не плохо, но во многих случаях у многих твоих классов может быть одинаковый интерфейс. Например, юниты в игре могут иметь одинаковый набор методов типа move(), group(), fight(), ... . Но самих типов юнитов могут быть десятки и ты просто так не сможешь писать Код:
И вот так тоже не удобно: Код:
Но вот если ты пишешь: Код:
Там выше было два моих поста, где я описал это все (сначала виртуальные функции, а потом невиртуальные) и мне вот кажется, что если вопрос такой возник, то ты те посты недочитал. |
|
![]() |
![]() |
![]() |
#29 |
Заблокирован
Регистрация: 06.02.2011
Сообщений: 1,999
|
![]()
rrrFer благодарю за четкое разьяснение.
посты про таблицы виртуальных функций я читал. в принципе с помощью полиморфизма я могу делать перестановку указателей. - сначала pfigure1 вызывал метод вычисления площади круга, а потом площади квадрата; - сначала pfigure2 вызывал метод вычисления площади квадрата, а потом площади круга. Код:
|
![]() |
![]() |
![]() |
#30 |
ios developer
Старожил
Регистрация: 16.11.2007
Сообщений: 2,885
|
![]()
Я, честно говоря, уже и не знаю, что вам на это ответить.
Где вы в своем коде полиморфизм увидели? Наверное, раз читали и не вычитали, бросьте вы это дело с принципами ооп. Не забивайте голову ни себе, ни людям.
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
Последний раз редактировалось crazy horse; 05.08.2015 в 12:29. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Многоуровневый if/else | Bender1000 | JavaScript, Ajax | 9 | 04.12.2014 15:48 |
Многоуровневый нумерованный список Word2010 | КарандашТМ | Microsoft Office Word | 3 | 13.09.2014 18:29 |
Многоуровневый список в ворде. | NewLamer&Programer | Помощь студентам | 1 | 28.06.2013 09:31 |
многоуровневый комбобокс на основе ExtJS | sashonk | JavaScript, Ajax | 0 | 02.09.2010 16:58 |
Многоуровневый заголовок (Delphi) | VadEr | Помощь студентам | 1 | 02.03.2010 14:54 |