![]() |
|
Модераторы: SoWa |
![]()
|
|
| AlDev |
|
||||
|
Опытный идиотъ ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1927 Регистрация: 17.4.2005 Где: Irk, rus Репутация: 8 Всего: 50 |
Еще одна задачка на знание Flash Platform.
Есть код:
соотв. TestClass.as:
Вопрос: что будет при запуске и почему? ) |
||||
|
|||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 18 |
да ничего не будет...
-------------------- ГЫ... |
|||
|
||||
| AlDev |
|
|||
|
Опытный идиотъ ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1927 Регистрация: 17.4.2005 Где: Irk, rus Репутация: 8 Всего: 50 |
тому кто правильно ответит и обоснует - ставлю +
Добавлено @ 14:54 AntonioBanderaz, ты не праф =) в icq объяснил ) |
|||
|
||||
| Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: нет Всего: 73 |
Если эта запись корректна, то должен вылететь ексепшен при попытке использовать приватный член. ЗЫ AS2 не знаю вааще, а на AS1 года два не писал... Посему за глупость не бейте -------------------- Теперь при чем :P |
|||
|
||||
| szz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 6 Всего: 33 |
А какой приз дают? Лицензионный диск восьмого флеша и клевую бондану?
--------------------
|
|||
|
||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
Выполнится trace (а именно выведется "text"), потому что к приватной функции обращаются через обычный метод класса, который к ней имеет доступ
-------------------- ![]() ![]() |
|||
|
||||
| szz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 6 Всего: 33 |
выполнится функция. А потому что наш любимый АС2 - дырявое решето! Простите за грубость, но не хочется распинаться по поводу всяких "особенностей АС, когда динамически вызванная функция класса, который, как известно, транслируется в АС1, не может быть отловлена на момент компиляции", а просто АС1 - рассадник багов и дырок
Что, не могли написать проверку на рантайме? Приватная функция, блин, все ООП коту под хвост!!! С++ никогда бы не допустил подобного. --------------------
|
|||
|
||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
Нашли с чем сравнивать! Очень грубо... Он этого не заслужил... -------------------- ![]() ![]() |
|||
|
||||
| szz |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 6 Всего: 33 |
Что значит "через", когда приватная функция - и есть тот метод класса? Вася через Васю? )))) Честно говоря, я немного в бешенстве от такого безалаберного поведения АС. Но давайте будем уповать на третий, авось там всякое тяжелое наследие прошлых лет будет упразднено. АС умер, да здравствует АС! --------------------
|
||||
|
|||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
Да. Вася1 - публик и имеет доступ к привату, а вася2 - собственно и есть приват. Через вася1 обращаемся к вася2 Что тут непонятного? Что значит "авось"? Про АС3 уже давно можно прочитать в многочисленных статьях, о том, какие там нововведения. Да нормальное поведение! Это особенность. Мне например не нравиться в С++ то, что там return не может возвращать все подряд. Это сообщение отредактировал(а) GZep - 17.1.2007, 20:23 -------------------- ![]() ![]() |
|||
|
||||
| szz |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 6 Всего: 33 |
Попишите в нем подольше, и если есть бекграунд написания на С/С++ (я несколько лет писать на С++ прежде чем плавно занялся АС), то будете злиться поболе моего. Помню, когда я писал не С++, то есть была какая-то ошибка в программе, то я был уверен, что это моя ошибка. Такую же уверенность я применял и про написании на ас, но он мне много раз показал, что я виноват в этом сам и легкостью написания на ультравысоком языке скомпенсировалась поиском загадочных багов, когда "все вроде правильно написано, а работает не так". Правда все мною найденные дырки в АС были довольно труднозавернутые, чтобы их так лаконично выложить. AlDev, молодец, что нашел такую дырищу. Красота: приватная функция класса спокойно без напрягов вызывается снаружи. Хочется просто скомкать весь этот АС и выбросить в мусорку )))) Тока невозможно, ибо мы уже так подсееели на флеееш ))) Вердикт: Настоящая причина такова: АС дырявый как дуршлаг. Отмазочная причина: дело в том, что классы АС2 перед выполнением транспортируются в АС1 прототипные объекты, которые как известно не имеют таких кайфоф как приватные методы. Соответственно АС компилятор может проверять тоько то, что явно написано hardcoded. А в нашем примере функция была вызвана динамически, соответственно, компилятор проворонил, а код выполняет не ваш красивый АС2 класс, а уродливый прототип АС1 (интересно было бы кстати посмотреть на сгенерированные прототипы, наверно они уродливы до жути Все, плюсик мой --------------------
|
||||
|
|||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
За что Вам плюс то? Ваша критика непонятна мне! С++: (никогда с ним не работал, но много слышал о нем) PHP - огромное количество претензий, но я его все-равно люблю JavaScript - это проблема кроссбраузерности меня добивает. делфи - медленный для задач, которые он выполняет. -------------------- ![]() ![]() |
|||
|
||||
| szz |
|
||||||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 6 Всего: 33 |
Ну нету там такого! Написано же - private! Нет никакого паблика! Метод только один, и он приватный!
Конечно может! Используй тип Var или сам напиши такой класс, который является типом "все подряд" и используй его! Но тут ты явно заметишь как страдает скорость выполнения. Вообще С++ - язык расширяемый. Разумеется, на С++ писать в сотни раз сложнее и больше занимает времени, чем на AS. Но и работает он в сотни раз быстрее. У меня мечта такая: писать на С++ в IDE Flash ))) Заместо АС
Особенность? Аааа... я щас в обморок упаду... откройте окна, профессору плохо... Приватные члены класса - одна из базовых концепций ООП. Если нарушено - то все насмарку, Нахрена нам тогда этот АС2? Чтоб красиво писать class BlaBla как в Java? Уж лучше я на ас1 прототипы буду гонять... хоть голая уродливая правда, но все же правда. Спроси у разроботчиков Flash - они наверняка начнут виновато ввинчивать носок в пол, потупив глаза и скажут, что, мол, мы это скоро исправим... И не посмеют говорить, что это фича. GZep, прости пожалуста за возможную грубость, но я правда немного опешил. Воспринимай это как здоровую критику. Просто давайте учиться на ошибках и не оправдывать Флеш. Я тоже очень люблю Flash, счастлив что он есть, но надо быть все же объективным, и если флеш подкачал - то признавать это. Добавлено @ 20:48
За правильное объяснение задачки. И бандану клевую
Во-во, а попробуйте! Думаю будете очарованы строгостью и грацией этого языка.
Ну, в паре с flash они красиво вальсируют Так, что-то мы за оффтопили мощно --------------------
|
||||||||||||||
|
|||||||||||||||
| Ignat |
|
||||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: нет Всего: 73 |
Скажу сразу - я офигел от такого поведения
szz, подписываюсь. В данном примере мы имеем нарушение интерпретатором инкапсуляции, что позволяет говорить об отсутствии нормальной реализации ООП. // небольшой оффтоп для szz. Нарушение ООП?
-------------------- Теперь при чем :P |
||||
|
|||||
| szz |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 6 Всего: 33 |
Нет, указатель ведь публичный.
Так решил сделать разработчик класса. А не пользователь класса, который с ним работает! С таким же успехом можно и это назвать нарушением:
Главное то, чтобы не нарушалась задумка разработчика КЛАССА. --------------------
|
||||
|
|||||
| Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: нет Всего: 73 |
Однако обращение к приватному члену вне класса Это относится к умышленным нарушениям инкапсуляции, которые компилятор не в состоянии предотвратить. Это можно сказать обычный аксессор. ЗЫ но вообщем действительно:
Всем сорри за оффтоп. -------------------- Теперь при чем :P |
|||
|
||||
| AlDev |
|
||||
|
Опытный идиотъ ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1927 Регистрация: 17.4.2005 Где: Irk, rus Репутация: 8 Всего: 50 |
читать не могу. температура 39. прикол в том что запись
равносильна такому:
то есть private существует только для компиллятора. => ActionScript 2 - это более удобный способ записи прототипов. и фсе Добавлено @ 08:57 ответ на вот эту задачу http://forum.vingrad.ru/topic-132019.html точно такой же Добавлено @ 09:02 Ну за полгода работы на AS3 никаких подобных дырок там не нашел. Единственное, чего IMHO не хватает для счастья - это абстрактных классов |
||||
|
|||||
| szz |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 6 Всего: 33 |
Ну, вот и здорово. Скоро наверное перейду.
Ну ничего, ведь выпустят когда-то ас4 В первых версиях С++ тоже не было абстрактных классов, а шаблоны до сих пор еще не совсем стандартно включены --------------------
|
||||||
|
|||||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
ИМХО ООП - это в первую очередь для пространства имен, а уж потом для всего остального. 8)
-------------------- ![]() ![]() |
|||
|
||||
| szz |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 6 Всего: 33 |
Ну, даже не знаю что и ответить... Только одно: ты глубоко заблуждаешься. --------------------
|
||||
|
|||||
| AlDev |
|
||||
|
Опытный идиотъ ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1927 Регистрация: 17.4.2005 Где: Irk, rus Репутация: 8 Всего: 50 |
GZep,
с чего-ж ты такое взял то? в as3 они то же есть =)
|
||||
|
|||||
![]()
|
| Правила форума "Flash" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, AlDev, SoWa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | ActionScript 1,2 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |