Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.09.2012, 22:21
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 11  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
Цитата:
Сообщение от artcraft Посмотреть сообщение
полиморфизм это не наследование
хоть и тесно связаны

полиморфизм это когда к одной конкретной собаке в зависимости от контекста можно обращаться по разному, эй пудель, или эй шарик, или эй кучерявый и в любой ситуации это будет верно т.к. эта конкретная собака является кучерявым пуделем шариком

наследование это когда пудель расширяет более общее понятие собака, которое в свою очередь расширяет еще более общее понятие зверь
Если писать про полиморфизм в терминах собак, то выходит немного не так.
В данном случае полиморфизм-это "интерфейс" i_Жрать_Спать_Гадить, который реализуют класс Собака и класс Кошка. Соответственно, нам известно, что шарик(экземпляр класса Собака), может быть накормлен, так как реализует этот интерфейс i_Жрать_Спать_Гадить. Причем неважно, это шарик или мурка(экземпляр класса Кошка)- в обоих случаях он может быть накормлен. То есть вообще неважно, к какому классу принадлежит объект-главное наличие реализации i_Жрать_Спать_Гадить

Старый 18.09.2012, 22:43
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 12  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
ну я не стал про интерфейсы писать, там у автора поста похоже и так не успевает укладываться всё голове.

приведение объекта типа пудель к типу животное это полиморфизм, я всё верно написал

выгода в том что пуделя можно записать в один список с кошкой муркой и диким крокодилом,
а потом в цикле обращаться с ними как со зверями - кормить и гладить

и одновременно этот пудель может быть в другом списке - запись к парикмахеру
__________________
Хороший отдых - половина работы.

Старый 18.09.2012, 22:55
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 13  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Даже зная что такое полиморфизм, когда читаешь все объяснения - начинаешь путаться

Не находил еще толкового примера. Все объясняют на своих примерах, придуманных в своей голове и понятных зачастую только себе. Полиморфизм можно объяснить и на пальцах, только иногда очень важно видеть лицо человека и понимать, он уже запутался или еще нет.
__________________
adobe AS3 manual

Старый 18.09.2012, 23:28
wisconsin вне форума Посмотреть профиль Отправить личное сообщение для wisconsin Найти все сообщения от wisconsin
  № 14  
Ответить с цитированием
wisconsin

Регистрация: Jun 2012
Сообщений: 40
с динамическим и статическим связыванием разобрался

а полиморфизм это принцип, при котором подклассы имеющие общий суперкласс, содержат общие свойства и методы, а также перекрытые методы выполняющие одинаковую цель, но по разному... как-то так

главное, что я для себя понял, то что полиморфизм это принцип, а не средства языка, с помощью которых можно использовать этот принципы

Старый 18.09.2012, 23:40
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 15  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
полиморфизм это когда к классу можно обратиться как к суперклассу или как к интерфейсу

например
класс А имплементирует интерфейс IA
а класс В наследуется от класса А

так вот полиморфизм это то что можно сделать так
Код AS3:
var a:IA = new B();
__________________
Хороший отдых - половина работы.

Старый 18.09.2012, 23:43
wisconsin вне форума Посмотреть профиль Отправить личное сообщение для wisconsin Найти все сообщения от wisconsin
  № 16  
Ответить с цитированием
wisconsin

Регистрация: Jun 2012
Сообщений: 40
Цитата:
Сообщение от artcraft Посмотреть сообщение

полиморфизм это когда к одной конкретной собаке в зависимости от контекста можно обращаться по разному, эй пудель, или эй шарик, или эй кучерявый и в любой ситуации это будет верно т.к. эта конкретная собака является кучерявым пуделем шариком
хм, и как это изобразить в виде иерархии классов

Старый 19.09.2012, 00:17
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 17  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
тут не только иерархия но и интерфейсы

Код:
сlass Пудель extends Cобака
сlass МояСобака extends Пудель implements IКучерявый, IШарик

var мойПёс:МояСобака = new МояСобака();
trace( мойПёс is Пудель ); //true
trace( мойПёс is Cобака); //true
trace( мойПёс is IКучерявый); //true
trace( мойПёс is IШарик); //true
__________________
Хороший отдых - половина работы.

Старый 19.09.2012, 15:21
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 18  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от Krusty Посмотреть сообщение
Только вот делать такого нельзя, так как это нарушает базовый принцип ООП. Если метод есть у родителя, то должен быть и у потомка, и делать то же самое. Детали реализации внутри могут быть разные, конечно, но результат должен быть одинаков. Поэтому танк и собака не могут быть в одной цепочке наследования(ну кроме базовой "объект реального мира"), так как либо собака будет стрелять, либо танк гавкать.
Расскажите еще что-нибудь про то, что нельзя делать. Заодно раскройте суть фразы "делать то же самое". И где та грань, которая определяет "тоже самое" от "совершенно другое"? Я не страдаю тягой переносить в архитектуру аналогии из окружающего мира. Перефразирую. "Прапорщик сказал, что собака — танк, значит ищи пушку".
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 19.09.2012, 15:52
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 19  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
Я ваш сарказм не понимаю.

Старый 19.09.2012, 17:02
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 20  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
я целиком согласен с Krusty
ничего не мешает сделать из собаки танк, но делать этого не стоит
если вы хотите использовать повторно то общее что есть и в собаке и в танке, то следует вынести это общее в отдельный класс
__________________
Хороший отдых - половина работы.

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:21.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.