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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.08.2009, 02:48
teda вне форума Посмотреть профиль Отправить личное сообщение для teda Найти все сообщения от teda
  № 1  
Ответить с цитированием
teda
[+6 24.06.11]
 
Аватар для teda

Регистрация: Mar 2001
Адрес: תל אביב
Сообщений: 68
По умолчанию реальное применение интерфейсов, примеры из жизни ?

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

например в книге : ActionScript 3.0 Design Patterns "William B. Sanders and Chandima Cumaranatunge"

приводится пример :

file : IVid.as
Код AS3:
package
{
  import flash.display.DisplayObject;
 
  public interface IVid
   {
    function playVid(flv:String):void;
    function get displayObject():DisplayObject;
   }
}
file : VidPlayer.as
Код AS3:
package
{
      import flash.net.NetConnection;
      import flash.net.NetStream;
      import flash.media.Video;
      import flash.display.Sprite;
      import flash.display.DisplayObject;
 
      public class VidPlayer extends Sprite implements IVid
      {
       private var ns:NetStream;
       private var vid:Video;
       private var nc:NetConnection;
       public function get displayObject( ):DisplayObject
        {
         return this;
        }
       public function playVid(flv:String):void
           {
            nc=new NetConnection( );
            nc.connect(null);
            ns=new NetStream(nc);
            ns.play(flv);
            vid=new Video( );
            vid.attachNetStream(ns);
            addChild(vid);
           }
       }
}
file : DoVid.as

Код AS3:
package
{
   import flash.display.Sprite;
 
   public class DoVid extends Sprite
    {
      //Type as Interface
      private var showTime:IVid;
      public function DoVid( )
      {
       //Play the video
       showTime=new VidPlayer( );
       showTime.playVid("iVid.flv");
       //Include DisplayObject instance
       addChild(showTime.displayObject);
       showTime.displayObject.x=100;
       showTime.displayObject.y=50;
      }
    }
}
В чем смысл создания интерфейса, если можно обойтись без него ?
Код AS3:
var showTime:VidPlayer =new VidPlayer( );

Хотелось бы увидеть примеры с реальной необходимостью добавления интерфейсов?

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

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
а вот что у вас может быть к примеру быть 10 классов реализующих этот интерфейс. И скажем вам в массиве надо будет хранить Н-ое число экземпляров этих классов. Так вот чтоб не выкареживаться с выяснением и приведением типов и существуют интерфейсы.

Старый 07.08.2009, 04:50
teda вне форума Посмотреть профиль Отправить личное сообщение для teda Найти все сообщения от teda
  № 3  
Ответить с цитированием
teda
[+6 24.06.11]
 
Аватар для teda

Регистрация: Mar 2001
Адрес: תל אביב
Сообщений: 68
Наследование решает те-же задачи, и количество классов и Н-ое число экземпляров этих классов.
к тому же все равно писать реализацию или прописывать функции.


Последний раз редактировалось teda; 07.08.2009 в 04:53.
Старый 07.08.2009, 07:38
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Наследование не всегда полезно и подходит для решения задачи.

Старый 07.08.2009, 10:38
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 5  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
примеры из жизни, да пожалуйста:
школа/институт
интерфейсы:
ITeacher(задавать домашнее задание, з/п, ...)
IStudent(делать дом задание, знания ...)

Вася implements IStudent(раздолбай - делает дом. задание дооолго)
Мария Ивановна implements ITeacher(Супер учитель, способный воспитать и 10 Васей в людей, Лаурет различных бонусов, миллион дипломов ...)

Все они ходят в школу, школа принимает всех Iteachers & IStudent несмотря кто это Вася или Мария Ивановна.

Старый 07.08.2009, 11:21
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 6  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
r_r_f_r, завернул круто, но тема сисек не раскрыта)

по теме: интерфейсы удобны когда надо проверить, реализует ли инстанс этот интерфейс или нет, независимо от того экземпляр какого он класса.
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 07.08.2009, 11:34
Герыч вне форума Посмотреть профиль Отправить личное сообщение для Герыч Найти все сообщения от Герыч
  № 7  
Ответить с цитированием
Герыч
 
Аватар для Герыч

блогер
Регистрация: Apr 2009
Адрес: НиНо
Сообщений: 185
Записей в блоге: 12
Вроде бы ещё в AS нет множественного наследования, т.е. нельзя написать:
Код AS3:
class A extends B,C
а вот так можно:
Код AS3:
class A implements IB,IC
поправьте, если я ошибаюсь

ещё интерфейс нужны для того, чтобы требовать от объекта только "умения" что-то делать, не важно как он это делает. Например у меня в моём типа физ движке для водички есть силы(IPower), есть рисуемые объекты(IDrawable)
от сил я требую умение применять силу(IPower.applyPower()), от рисуемых объектов - нарисовать себя(IDrawable.draw());

Старый 07.08.2009, 11:43
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 8  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Цитата:
Сообщение от cleptoman Посмотреть сообщение
r_r_f_r, завернул круто, но тема сисек не раскрыта)
окей
все учителя и ученики являются отоброжаемыми объектами и есть ещё 3-и, нет 4-ре контроллера которые ими управляют(и все они работают не с интерфейсами а с одним из супер классов(их 4-ре, т.е. много)), т.е. всю эту структуру изменить дороже выйдет, нежели написать интерфейс.

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

Цитата:
Сообщение от cleptoman Посмотреть сообщение
по теме: интерфейсы удобны когда надо проверить, реализует ли инстанс этот интерфейс или нет, независимо от того экземпляр какого он класса.
А с классами случайно так нельзя сделать?Тема сисек раскрыта

Старый 07.08.2009, 12:31
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 9  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
можно, если нам нужно обратиться к методу , который 100% есть у родителя...а если нужно обратиться к методу который есть у нескольких наследников, но нет у родителя, то интересней проверять на интерфейс, с этим методом, чем перебирать всех наследников с этим методом
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

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

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

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


 


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


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