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

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

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

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

пожалуйста помогите по этой теме, на простых примерах

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Динамическое связывание, полиморфизм. Что не понятно?

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

Регистрация: Jun 2012
Сообщений: 40
Цитата:
Сообщение от bav Посмотреть сообщение
там нет примеров связанных с as

Старый 18.09.2012, 19:32
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
в теориях не силен, сори, если что
но мне представляется совсем простая штука:
с полиморфизмом понятно - наследники могут могут иметь свою реализацию свойств\методов базового класса,
а динамическим в этом контексте связывание будет потому, что на этапе компиляции не обязательно должно быть известно какая именно из реализаций понадобится
вот пример как бы из букваря, типов фигур может быть сколько захочешь, можно и других добавить - код не изменится
Код AS3:
package
{
 
	public class Main extends Sprite
	{
 
		public function Main():void
		{
			var list:Vector.<Figure> = Vector.<Figure>([new Circle(), new Square()]);
 
			for each(var fig:Figure in list)
			{
				// компилятор здесь не знает какие наследники Figure в списке
				// все это выяснится в рантайме
				trace( "fig : " + fig +"; area : " + fig.area());
			}
 
		}
 
	}
 
}
 
class Figure
{
	public var size:Number = 1;
	public function area():Number {	return 0;}
}
 
class Circle extends Figure
{
	override public function area():Number 	{ return 0.25 * Math.PI * size * size;	}
}
 
class Square extends Figure
{
	override public function area():Number 	{ return  size * size;	}
}

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

Регистрация: Jun 2012
Сообщений: 40
Цитата:
Сообщение от bav Посмотреть сообщение
первая ссылка вообще не к теме...


silin, я не разобрался с примером, просто я не все изучил и есть в этом примере вещи мне непонятные

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

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

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

под динамическим связыванием вы вероятно имели в виду Data binding
метафора: кукла вуду связана с жертвой, если куклу колоть иголками, то это мгновенно отразится на жертве
(свойство "полученный урон" жертвы связано с аналогичным свойством куклы)
__________________
Хороший отдых - половина работы.


Последний раз редактировалось artcraft; 18.09.2012 в 21:03.
Старый 18.09.2012, 21:05
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 7  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
пудель одновременно является собакой
А если переопределить его методы "гав" и "апорт", то он сможет быть и танком. Вот такая тут метафора, вот такая полиморфизма.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 18.09.2012, 21:12
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 8  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
Цитата:
Сообщение от dimarik Посмотреть сообщение
А если переопределить его методы "гав" и "апорт", то он сможет быть и танком. Вот такая тут метафора, вот такая полиморфизма.
Только вот делать такого нельзя, так как это нарушает базовый принцип ООП. Если метод есть у родителя, то должен быть и у потомка, и делать то же самое. Детали реализации внутри могут быть разные, конечно, но результат должен быть одинаков. Поэтому танк и собака не могут быть в одной цепочке наследования(ну кроме базовой "объект реального мира"), так как либо собака будет стрелять, либо танк гавкать.

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

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

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

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

Старый 18.09.2012, 21:45
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 10  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Цитата:
Сообщение от wisconsin Посмотреть сообщение
я не разобрался с примером, просто я не все изучил и есть в этом примере вещи мне непонятные

может есть какая-нибудь метафора для объяснения полиморфизма и динам связ
с метафорами еще хуже, чем с теорией
геометрическая фигура (Figure) может быть всякой, что и описываем в наследниках (Circle и Square)
в моем примере это вычисление площади, в базовом классе пустышка (необязательно, но здесь так уж вышло), для круга и квадрата своя конкретика, реализация area() для каждого своя - полиморфизм

теперь такие ситуации:
1)работаем конкретно с кругом,
создаем экземпляр и вычисляем его площадь
Код AS3:
var circle:Circle = new Circle();
var circleArea:Number = circle.area();
компилятор заведомо знает метод какого класса вызывается - статическое связывание

2)работаем с любой фигурой
вычисляем, например объем 3d-плюшки, выдавленной из фигуры
Код AS3:
function calcVolume(fig:Figure, height:Number):Number
{
	return height * fig.area();
}
компилятор не знает, какая фигура (экземпляр какого класса) будет передана в метод, но сработает fig.area(), соответствующий именно типу (классу) этого экземпляра - динамическое связывание

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

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

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


 


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


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