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

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

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

Регистрация: May 2011
Сообщений: 221
Question Помогите разобрать понятие интерфейса

Уселся читать книженцию Коллина Мука по AS3. Добрался до темы "Интерфейсы" в которой окончательно заплутал.

Объясните пожалуйста, в чем принципиальная разница между интерфейсом и классом? Что значит класс реализует интерфейс? Почему интерфейс не может быть сам реализован?

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

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
Почему интерфейс не может быть сам реализован?
Потому, что в этом его предназначение.
Цитата:
в чем принципиальная разница между интерфейсом и классом?
интерфейс - абстракция.
класс - реализация.

Старый 06.06.2011, 18:31
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 3  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Ну вот давайте представим такую систему.
Есть у вас в руках 10 ручек, разных производителей, разных паст , все ручки соотв. Для чего нужны все эти ручки ? чтобы писать наверное. Значит они реализуют метод Write. Рассмотрим это на примере

Код AS3:
class Pencil implements IPencil
 
    public function doWrtite():void {
    }
public interface IPencil
    function doWrite():void;
 
Main class
 
var pn1:IPencil = new Pencil(color , mark )
var pn2:Ipencil = new EmptyPancil ( color , mark )
Классы Pencil и EmptyPencil - разные , но реализуют общий интерфейс IPencil имеющий 1 метод всего лишь doWrite()
__________________
Марк Tween

Старый 06.06.2011, 18:37
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 4  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
В интерфейсе указывается, какие параметры функция принимает и что возвращает. Реализации (т.е. что собсно делать с этими параметрами и как получать возвращаемое значение) - в интерфейсе нет.
В AS3 можно имлементить сколько угодно интерфейсов, но наследоваться только от одного класса.
PS: Есть термин "абстрактные функции", это как-раз только такие описания функций, как в интерфейсе. В as3 нет таких функций. В С++ есть такие функции, но нет интерфейсов %)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 06.06.2011, 18:41
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 5  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
PS: Есть термин "абстрактные функции", это как-раз только такие описания функций, как в интерфейсе. В as3 нет таких функций. В С++ есть такие функции, но нет интерфейсов %)
В C# зато есть и то, и то

2автор: понимание, зачем они нужны, придет со временем. Если вы только начали изучать as3, советую не останавливаться и идти дальше. Но в будущем обязательно вернитесь к этой главе.
__________________
тут я

Старый 06.06.2011, 18:46
Фенёк вне форума Посмотреть профиль Отправить личное сообщение для Фенёк Найти все сообщения от Фенёк
  № 6  
Ответить с цитированием
Фенёк

Регистрация: May 2011
Сообщений: 221
Но ведь интерфейсы могут содержать методы, разве это не будет реализацией?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Есть утюг, телевизор, ноутбук и паяльник. Все делают совершенно разные вещи, но у всех один интерфейс "вилка на 220". Он гарантирует, что если у Вас в стене есть розетка на 220, то Вы сможете воспользоваться любым из этих приборов. Если класс А и класс В реализуют интерфейс IC, описывающий метод show(), это гарантирует что у обоих классов есть метод show(), принимающий такие-то типы данных и возвращающий такой-то тип данных. Это значит, что Вы можете использовать в коде экземпляр как класса А, так и класса В в одной и той же ситуации, и ошибки – отсутствия у экземпляра метода show() – не произойдет. Что именно происходит внутри метода – реализация – зависит уже от класса. Например рисовальные инструменты – все они при движении мышки оставляют след на "бумаге". Какой именно, размытый как у кисточки или резкий как у карандаша – это уже конкретная реализация. Важно что мы можем подставить любой инструмент и вызывать у него метод "рисуй" единым для всех образом. Заменяемость и расширяемость, универсальность – основные цели Интерфейсов.

Добавлено через 1 минуту
Интерфейсы НЕ могут содержать методы. Они только описывают сигнатуру.
__________________
Reality.getBounds(this);

Старый 06.06.2011, 18:52
Фенёк вне форума Посмотреть профиль Отправить личное сообщение для Фенёк Найти все сообщения от Фенёк
  № 8  
Ответить с цитированием
Фенёк

Регистрация: May 2011
Сообщений: 221
А разве не будет альтернативой вместо интерфейса создать другой класс, который будет расширяться?

Старый 06.06.2011, 19:02
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 9  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
А разве не будет альтернативой вместо интерфейса создать другой класс, который будет расширяться?
Ну попробуйте
Вообще, Wolsh хорошо донес суть, как, впрочем, и in4core.

Старый 06.06.2011, 19:07
Nemez вне форума Посмотреть профиль Отправить личное сообщение для Nemez Найти все сообщения от Nemez
  № 10  
Ответить с цитированием
Nemez
 
Аватар для Nemez

Регистрация: Jun 2010
Сообщений: 189
Интерфейс удобен. А есть ли ситуации, при которых он необходим?

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

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

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


 


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


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