![]() |
Цитата:
Аналогию можно провести к USB-порту. К примеру вы берёте объект "мышка", проверяете есть ли у него интерфейс "USB", если есть, значит Вы можете его подключить к USB на Вашем компьютере и начать ею пользоваться. Но это не значит что если вы подключили мишку и начали использовать USB порт, то все устройства с USB начнут работать. И соответсвенно существует огромное количество девайсов с "USB-интерфейсом", флешка, блютуз, клавиатура, колонки, мышка и так далее которые используют USB-интерфейс по своим нуждам. Что-бы подключить какой-либо из устройств, нам нужно узнать, реализовывает ли объект USB-интерфейс и если реализовывает использовать его по своим нуждам ( соответсвено передвигая мышкой мы будем передавать данные через сам интерфейс, а с другой стороны эти данные будут считываться ). То-есть прямоугольный штекер с четырьмя контактами по которым передаются различные данные. Что в программирование реализовывалось бы, как различные методы по работе данного интерфейса. |
Цитата:
|
Как пример допустим у нас есть два класса ( пишу не для компилятора )
Код AS3:
Код AS3:
Код AS3:
Код AS3:
|
Цитата:
|
Код AS3:
Код AS3:
Код AS3:
|
1. Почему "не красиво"?
2. А как "красиво"? 3. Вообще, использовать интерфейсы для наследников ДО немного не тру ООП, поэтому и заморачиваться не стоит. В том смысле, что вообще-то не совсем нормально, когда всякие методы хранит и реализует Спрайт. Предполагается, что ДО это только отображение, картинка Сущности, а сама Сущность это "Модель Сущности", и всякие хитрые методы — у нее. В простых проектах, конечно, так не заморачиваются. Но в них и интерфейсы не шибко то применяют)) |
1. Потому что объект, в конце концов, должен сам решать, как он будет отображать свою информацию (разумеется мы сначала ведем переговоры и делаем так, чтобы накладок с отображением не возникало: если нашим часам нужен контейнер для отображения себя - предоставим, но это уже конкретная реализация конкретного класса)
2. Добавлять этот объект на экран там, где мы точно знаем, что это DisplayObject, и его точно можно добавить на сцену, только и всего :) На примере кода товарища AlexCooper, добавлять на экран сами объекты mClock и dClock (там они все равно добавляются одновременно) Или определить передачу контейнера в класс, в который (в контейнер), конкретные часы будут добавлять нужные вещи 3. Приму к сведению, спасибо) |
1. Ну так он сам и решает, как отображать свою информацию. Вы решаете только, отображать ли этот объект)))
2. Ну так вы и проверяете, точно ли это ДО))) А как иначе, если метод принял объект в переменную типа Интерфейс? Делайте наоборот)) принимайте как ДО и проверяйте на интерфейс перед вызовом методов интерфейса. Просто мне непонятно, где страдает "красота". Точно так же Вы можете принимать объект как ДО, но вам придется делать такую же проверку, если захочется использовать методы Текстфилда или МувиКлипа. Чтобы "точно знать" надо отказаться от полиморфизма во всех его проявлениях ;) |
KumoKairo я же сделал пометку что пишу не для компилятора.
Суть вовсе не в DisplayObject и addChild. Реализаций можно придумать немереное количество. Естественно чтоб всё работало классы MechanicsClock и DigitalClock должны прежде всего наследоваться от DisplayObject или классов его наследников. А потом только уже пихать в addChild. Давайте не будем отходить от темы "Помогите разобрать понятие интерфейса" к теме "Как не словить ошибку при addChild" Добавлено через 4 минуты поддерживаю мнение Wolsh. |
Не стал создавать тему из-за неоднозначности своего вопроса.
Дело вот в чём - после прочтения книг, в моем сознании отпечаталось, что при реализации интерфейса не обязательно соблюдать строгий порядок , как при переопределении. То есть, можно добавлять новые параметры. Вчера я открыл книгу с целью подтверждения своих слов и не обнаружил там не чего похожего. Если я путаю и так нельзя, то с чем я путаю?) |
| Часовой пояс GMT +4, время: 02:55. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.