Бесплатно скачать Adobe Flash Player
Flash Ripper RSS Readers

Бесплатная "Глава 9. ООП" из книги "ActionScript 2: программирование во Flash MX 2004 (+CD). Для профессионалов"

Не так давно вышла книга "ActionScript 2: программирование во Flash MX 2004 (+CD). Для профессионалов" (автор книги -- Д. А. Гурский) (а в магазине Bolero эта же книга стоит на 100 рублей дешевле, подсказывает нам Авлин Анатолий). Книга вызвала споры в среде русскоязычного флэш-сообщества -- кто-то ее ругает, кто-то наоборот. Как бы там ни было, теперь у посетителей сайта Ф. Потрошителя есть возможность составить собственное мнение об этой книге, прочитав Главу 9, "Объектно-ориентированное программирование" и самостоятельно рассмотрев прилагающийся к ней практический пример "Проект 9. Модель идеального газа":

Скачать: ZIP-архив [Глава 9. Объектно-ориентированное программирование + пример "Проект 9. Модель идеального газа"] (219 Кб).

// Via Саня [ruFlash]

Писал Rost, 22 Сентябрь 2004 15:03

Найдены баги:

Мнда, судя по примеру, визуал как всегда отдыхает.
Стыд да позор.

Ivan Sergeev - 22 Сентябрь 2004 21:19

> а в магазине Bolero эта же книга
> стоит на 100 рублей дешевле

А на книжной ярмарке эта книга стоит ещё на 100 руб. дешевле :)

Michael - 23 Сентябрь 2004 7:23

Да путёвая книга...
У нас, во всёком случае, и близко не с кем сравнивать.
Жаль упорно не выкладываются три последние главы.

Штрек - 23 Сентябрь 2004 23:40

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

но есть и то, что очень не нравится:

- первая и очень раздражающая особенность это категорическое неиспользование постфиксов в коде.
Как в исходнике, так и в книге. Если книга солидно-сурьезная, то уж не стоит учить тому, от чего потом приходится отучать. Использование постфиксов в AS - это стандарт. И коды должны быть написаны в этом стандарте.
И в эту же тему: именование переменных на русском языке (типа: polzunok) - неуважение к коллегам. Я регулярно сталкиваюсь с корейскими исходниками, которые нужно локализовать. Они используют корейское именование переменных. Ненавижу.
Использование английских именований переменных - тоже стандарт. И следует его придерживаться.
Исключение может быть только для псевдокода.

- вторая особенность - небрежность кодов и иногда их неправильность. К примеру my_new. Это был первый код, который я тестанул, так мало того, что при компиляции флэш ругается, но еще и ошибка присутствует:
вызов obj.constructor() должен быть последним перед return.

...читаю дальше.

Iv - 25 Сентябрь 2004 16:41

Иногда вводят в ступор фразы типа:
"Функции-конструкторы ведут себя как классы. Но настоящими классами они не являются."
- конструктор класса в AS является лишь частью класса и никогда не является собственно классом.
Как я понимаю, возможно, автор имеет ввиду классы в других языках программирования. Но как это понимать тем, для кого AS является первым и единственным языком?
Идти учить другие языки, прежде чем взяться за чтение этой книги?
Резюме:
Ссылки на знание других языков программирования допустимы только в том случае, если вначале книги прямо указано, что, например, для понимания книги желательно знать С#.
В противном случае утверждения типа:
"Эта ситуация идентична ситуации с объектами класса Array. По своей структуре они не являются массивами – но внешне их поведение весьма схоже с массивами универсальных языков."
Просто оставляют в непонятках.
Класс Array в AS это и есть класс Array и ничто иное. Другого не дано. Он так реализован.

...читаю дальше

Iv - 25 Сентябрь 2004 16:56

"Класс Object всегда завершает цепочку наследования."
- плиз, не так категорично. не всегда:
Object.prototype.bla = "bla";
myClass = function () {
};
myClass.prototype = null;
foo = new myClass();
trace(foo.bla);

Iv - 25 Сентябрь 2004 17:23

или myClass.prototype.__proto__ = null

Iv - 25 Сентябрь 2004 17:55

Цитата:
"Интересной особенностью ActionScript является то, что на объект Global указывает свойство __proto__ прототипа конструктора Object, однако, при этом, объекты не наследуют его свойств и методов: trace(Object.prototype.__proto__ == _global);"

- неправильная интерпретация кода.
Object.prototype.__proto__ возвращает undefined

т.е. фактически сравнение происходит такое:
trace(undefined==_global);
соответственно и выводы не должны иметь никакого отношения к Object.prototype.__proto__

Iv - 25 Сентябрь 2004 18:27

Цитата:
"Увы, но закрыть свойства также и от чтения извне невозможно (но это можно сделать при помощи атрибута private при использовании ООП в стиле ActionScript 2.0)."

- к сожалению, это распространенное заблуждение присутствует и здесь.
AS1 гораздо мощнее и гибче AS2, который ни в коем случае не предоставляет каких то преимуществ перед AS1.
Для того, чтобы посмотреть как делается private свойства и методы, достаточно заглянуть через ASV в код, который сгенерен с помощью AS2.

В AS1 на практие уже давно используются приватные методы.
Прмер:

this.setMyClass = function() {
_global.MyClass = function() {
};
// private:
var privateCall = function () {
trace("hello");
};
// public:
_global.MyClass.prototype.publicCall = function() {
trace("private method calling:");
privateCall();
};
delete this.setMyClass;
};
this.setMyClass();
my_instance = new MyClass();
my_instance.publicCall();

Iv - 25 Сентябрь 2004 18:57

Цитата:
"С другой стороны, введение getter/setter свойств снижает читабельность кода, а, следовательно, повышается сложность его отладки и внесения в него изменений."

- кто с этим согласен, поднимите руку.
Я-то глупый всегда пользую addProperty для улучшения читабельности кода. :)

Iv - 25 Сентябрь 2004 19:04

"valueOf(). В общем случае, данный метод возвращает величину свойства this собственного объекта активации. Обычно, это ссылка на объект, вызвавший метод. Но в случае экземпляров классов String, Boolean, Number возвращается связанная с объектом величина элементарного типа...."

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

Iv - 25 Сентябрь 2004 19:11

toLocaleString планировался возвращать (а может уже и возвращает, но только те языки, которые поддерживаются макромедией) строку в национальном языке.
Речь идет не об он-лайн переводчике :)
Например new Date().toLocaleString() в китайской интерпретации должен был бы вернуть название месяца на китайском.
Но это не официальная инфа. Т.е. не точная :).

Iv - 25 Сентябрь 2004 19:16

пока остановился на 9.3

Общее впечатление:

Книга ОФИГИТЕЛЬНАЯ!
Невзирая на всё мое старческое брюзжание.
Автор не побоялся рассмотреть такие области, которые обычно "официальные" авторы обходят стороной.
Разумеется, инициатива наказуема, что повлекло за собой ряд неточностей. Но это фигня, по сравнению с тем, какую исследовательскую работу проделал автор.
Молодца.

Iv - 25 Сентябрь 2004 19:21

Iv, анализ как всегда неплох, но ты вот сразу правильно написал - что судишь только по отрывкам из этой главы. Не знаю как кто, а я уже освоил эту книгу в полном объеме. И скажу вот что...

Большинство из первой половины комментов Iv-а, это суждение по фразам вырванным из контекста.

Автор где-то подробно останавливался на основных вещах, а по ходу изложения - лишь напоминает что-то, для полной ясности и для забывчивых (я сам такой). Так что манера изложения - выше всяких похвал. Спокойно, обстоятельно, сразу же соотв. пример, хоть и по самому маленькому вопросу.

Это все к тому, что если Iv прочитал в этой главе "хвостики" от предыдущих глав, то... (а иногда автор пишет, что сейчас мы коротко остановимся на чем-то, а подробное объяснение будет потом в соотв. главе).

Книга изначально рассчитана, как пишет автор в первой :-) главе - на знающих хорошо Flash. Если бы не мое участие в RuFlash, если бы не вникал раньше в скрипты от Iv, наверное не смог бы разобраться с этой книгой.

Что касательно преимуществ AS2 от AS1, то хотя, Iv, и весьма интересное замечание на счет атрибута private, но как пишет автор - AS2 дает НЕпривязку кода к временной шкале, на которой пишем код. Это сущий анахронизм был, имхо, даешь AS2 и долой тех, в ком силен профессиональный консерватизм!
;-)

Iv, прочитай всю книгу. :-) Потом напишешь окончательное свое мнение. :-)

Но вообще критика - весч хорошая. Все только на пользу.

Евгений Н. - 29 Сентябрь 2004 3:04

Хотелось бы еще такую же книгу по JSFL, от этого же автора. :-)

Так обстоятельно разобрать вопрос - сможет только он.

;-)

Евгений Н. - 29 Сентябрь 2004 3:06

ок, как прочитаю всю книгу, может по-новому взгляну на всё это.
НО:
"НЕпривязку кода к временной шкале" - это очень круто сказано. Еще раз напомню: AS1 и AS2 в итоге могут давать одинаковый байткод.
На AS1 можно сделать любой AS2 класс так, что байткод будет совпадать байт в байт. И это просто делается: ASV.
Если речь идет об #include, то есть #import.
Ну или я совсем не понимаю о чем речь. %)

Iv - 29 Сентябрь 2004 11:14

Господин Iv со своей нелюбовью к AS2 скоро превратится в Катона-старшего. :)

2 Iv: не могли бы вы напомнить мне — где именно указано что использование постфиксов в AS2 - это стандарт? А то мне почему-то кажется что это пережиток AS1. :)

Colin Moock - 3 Октябрь 2004 22:30

И вот ещё. По поводу фразы "Еще раз напомню: AS1 и AS2 в итоге могут давать одинаковый байткод.".
Код, написанный на Ассемблере и на C++ после компиляции может давать одинаковый машинный код. Но писать в наше время более-менее сложное приложение на Ассемблере, особенно если потом его нужно будет саппортить, может только человек со сквозным ранением в голову. Вот такое вот моё имхо.

Colin Moock - 3 Октябрь 2004 22:37

Дорогой Колин,

1. Любовь и ненависть.

В текущих комментариях я не давал повода к тому, чтобы сделать заключение о моей нелюбви к AS2.
Для меня AS2 - это лишь инструмент.
В этом смысле не многим отличающийся от молотка. Как и AS1. Инструмент нужно знать и уметь им пользоваться. Если нужно сверлить дыру - нужно брать дрель а не молоток. Не любить молоток за то, что он не умеет сверлить - глупо.
В AS2 есть свои преимущества. Есть недостатки. Как и у AS1.
Вот так я отношусь к AS2. Это чтобы не возникало свободных трактовок о том, что я люблю, что не люблю. Хм... Раз уж такие трактовки возникают.


2. Использование постфиксов.

Открываем новый .as файл во Flash.
Пишем: my_mc. - выпадает подсказка. Поддержка постфиксов никуда не делась.
- Объявляла ли макромедия о том, что Венгерская натация deprecated?
- Нет. Ни в коем случае. То, что при указании типа подсказка выпадает на любое слово это здорово, но действует только в рамках данного документа. Суффиксы - где угодно.
- Выпадание подсказки не показатель?
- Согласен. Для меня показатель хорошо написанного кода - его читабельность. Повышают ли постфиксы читабельность кода? - Да. Этого достаточно.
Возможно, с введением объявления типов, нет такой острой необходимости именовать локальные переменные с постфиксами. Ок. Право автора.
Но соряйте, там ведь не только AS2. Полно AS1. И ни намека на постфиксы.
А если взглянуть на практику именования переменных автором - всё становится на свои места и в УК квалифицируется как преступная халатность :).


3. Ассемблер vs С++

Проводить параллель в данном случае - бред. Утверждения, что преимущества структурной организации AS2 перед AS1 настолько большой шаг впреред - только вызывают улыбку.
AS2 более удобен в больших проектах. AS1 в маленьких. Ни больше ни меньше.
Саппортить маленький проект, в котором есть ссылка на огромную библиотеку классов с разветвленной системой инклудов тоже занятие не из приятных.
Случайно заинклудить пару десянков ненужных классов - запросто. Встречаюсь с такими исходниками через раз.
Я не против AS2. Но хороша ложка к обеду.

PS: Мне искренне жаль людей, которые в силу тех или иных обстоятельств вынуждены скрывать свою личность. Удачи Вам, уважаемый Колин, на поприще подпольщика.

Iv - 4 Октябрь 2004 12:28

Упорно игнорируется вопрос про обещанные три последних главы книги...
Качайте мол ребята, качайте...
Откуда качать, если нигде нет?
При некотором упорстве, можно отсудить
у автора гонорар и передать Флэшерам
далёкой Африки для приобретения лицензионного софта от Макромедии...

Штрек - 4 Октябрь 2004 23:20

2 Iv

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

- во Flash XM 2004 можно сделать указание пути до библиотек с классами. Как в глобальных настройках установленной программы, так и для конкретного fla-файла.

Лично для меня проблемы выбора ВООБЩЕ НЕТ. AS1 в первоначальном варианте MX-исходников - НЕ работает в пр-ме Flash MX 2004.

Поэтому я указываю пути к каталогам с классами в MX 2004, и как только упоминается любой класс в моем fla-файле, он автоматически подключается на стадии компиляции.

Лишнее - НЕ включается. И не нужно ничего самостоятельно инклудить.

Ну и понятно, что если есть какая-то модификация класса (например) - все варьируется только на уровне установок путей до библиотек с классами. Добавлением новой строки поиска классов и перетаскиванием ее на самый верх.

Евгений Н. - 5 Октябрь 2004 2:53

Обрати внимание на цитату: "Встречаюсь с такими исходниками через раз."
Что именно имеется ввиду:
в небольшом проекте требуется, например, одна функция, которая есть в неком классе. В этом классе, совсем в другой функции где-то в коде, ненароком встречается ссылка на другой класс, например обращение к синглетону: заметить крайне трудно. Этот класс содержит в себе инклуды еще пяти классов.
"Лишнее - НЕ включается" - согласен. В идеальном проекте не может быть ничего лишнего. Но автоматическое включение - потенциальная дыра, в которую в реальной жизни лезут ненужные классы.
Еще раз: "Встречаюсь с такими исходниками через раз."

Iv - 5 Октябрь 2004 11:24

>> Для меня показатель хорошо написанного кода - его читабельность.

Ив, один вопрос, из каких соображений класс Path был написан в том виде в котором он написан? :))

(прошу меня простить за оффтопик)

Nox Noctis - 8 Октябрь 2004 16:50

Из тех же, что и придуманы логарифмы, интегралы и прочая.
Ты там как хочешь назови переменные, понятней код не станет. Уж поверь.

Iv - 8 Октябрь 2004 17:09

Кстати, выложены для скачивания недостающие дополнительные главы к книге Гурского. Там же можно скачать и файлы к книге.

Рост - 22 Март 2005 13:19

Что-то ссылка ведёт в интернет магазин, а глав усё равно нема. И кстати нифига не правда, что AS1 классы не работает в МХ2004. Я в своё время столкнулся с проблемой - перекомпилировал старый fla(v5) файл в MX2004. И ОНО перестало работать. Чуть позже, когда я внимательно посмотрел на свой код допёр, что там регистры разные. В AS1 это никакой роли не играет, а вот в 2... %)

Antonio - 20 Сентябрь 2005 13:32

Люди, у меня диск к книге сгорел - у кого-нить есть исо, или ещё что-нибудь?

FLYNN - 13 Октябрь 2006 18:18

Люди, у меня диск к книге сгорел - у кого-нить есть исо, или ещё что-нибудь?

FLYNN - 13 Октябрь 2006 18:18

а кое где ее можно нахалява скачать!!!

ХА - 31 Октябрь 2006 10:07

Народ а есть у кого-нибудь к этой книге cd. Выложите пожалуйста

kislik_bk - 31 Октябрь 2006 10:11



Это запись из категории 'Books'. 10 еще cвежих:

Архивы по категориям:

3D-18, Adobe AIR-38, Animation-1, Apache Ant-1, Architecture-1, ARP-1, Art-26, Articles-26, AS3-57, Books-9, Business-3, Cairngorm-3, CI-1, Classes-10, Coding-31, Community-118, Components-19, Contests-30, conventions-1, Cool-Job-10, Debug-21, Design-28, Development-84, ecology-4, EMO-2, Events-17, Extensions-2, FAQ-9, FDS-1, Flash and html-8, Flash Player-38, Flash Updates-12, flash-on-devices-1, Flash-scene-1, flash10-4, FlashLite-2, Flex-49, Flex 2-80, flex4-3, flexcamp-2, Flickr-1, FMS-2, FPUG-61, frameworks-1, Games-20, Good Job!-44, HaXe-16, Health-2, Humor-11, Ideas-14, IV-1, JavaScript-2, Job-30, JSFL-8, Links-2, Linux-3, Maps-1, Math-8, Money-16, music-1, MXML-1, Open Source-16, Optimization-4, parenting-3, Patterns-2, Personalities-27, Philosophy-4, Politics-1, posters-1, Preloading-3, Productivity-10, PureMVC-11, Pv3d-1, Rafpug-5, Red5-3, Remoting-11, Resources-21, Ruby-6, SAAS-1, Security-11, SEO-9, Silverlight-7, Sound-3, sport-4, Strategy-122, Tamarin-2, Tools-113, Training-3, Trash-8, URAFPUG-14, Urgent-1, Usability-6, Video-6, VoIP-7, Wallop-1, Wishlist-3, XML-1, Архив всех записей (большой)

За последние месяцы:

Ноя 2008: Ноябрьская встреча RAFPUG 12 — для креативных, В продолжение темы флэш-блогов, весь Ноя

Окт 2008: Ура — вторая лицензия Alternativa3D уезжает в Киев!, Влещь на глагне III IIIIIII?, весь Окт

Сен 2008: Встречайте Open Source Flash Media Server — Mammoth, Срочно нужен толковый Flex-разработчик в Харькове (+Java), весь Сен

Авг 2008: Flex Gangsta Rap Video WTF Bro?, 27 сентября — встреча UAFPUG во Львове и плюшки от Adobe, весь Авг

Июл 2008: Тенденции среди работодателей: Adobe Flex, Adobe AIR, Silverlight, Спорт спасет красоту, которая спасет мир!, весь Июл

Июн 2008: Попытка предварительных выводов о встрече аниматоров, Онлайн трансляция встречи аниматоров в Донецке, весь Июн





Примечания:
Статус документа
: в процессе
   2002-2007 Производство: Рост Прибыли · О проекте · Подписка на новости (RSS)