![]() |
ООП: (зажмурившись) ммм.. ИнХерИтАнс..
всей душой и телом приветствую любителей глубокого флеш-программирования на этом скромном форуме. вашему вниманию предлагается небольшая задача. она совсем простая: нужно всего лишь ознакомиться со следующим кодом и не задумываясь ответить на пару пустячковых вопросов. итак, код в студию:
Код:
function SuperClass() {1) какую строчку (всего одну) нужно добавить в этот незатейливый код, чтобы методы f1() и f2() могли быть вызваны и для объектов класса SubClass? 2) совсем просто: в чем различия реализации методов f1(), f2(), f3()? 3) черт, только сейчас заметил: если удалить Код:
SubClass.prototype.__constructor__ = SuperClass;Первому ответившему на все вопросы верно будет присвоено звание глубокого флеш-программиста и памятный значок с дарственной надписью "Я люблю ПротивныеТипы". ЗЫ пользователи ||||||||||, lexass, Baltika, DeliMiter, Nox Noctis к участию не допускаются. ЗЗЫ просьба не воспринимать слишком серьезно -- все равно призов на всех не хватит. |
пункт 1:
ты хочешь, чтобы в outpute было вот это? SuperClass constructor called --------------- f1 called f2 called f3 called ****************************** SubClass constructor called --------------- f1 called f2 called f3 called Так? |
ты б мысль не заканчивал на полуслове. и еще: раз уж взялся за задачку, то, пожалуйста, с объяснениями и поподробней, да.
|
1. Я бы написал все это так:
Код:
function SuperClass() {3. Эта строчка нихрена не значит. |
Знаешь что чувак!
Такой попсы я давно не видел!!! Вот те скрипт: function SuperClass() { trace("SuperClass constructor called"); } SuperClass.prototype.__proto__.f1 = function() { trace("f1 called"); }; SuperClass.prototype.f2 = function() { trace("f2 called"); }; function SubClass() { trace("SubClass constructor called"); } SuperClass.prototype.f3 = function() { trace("f3 called"); }; SubClass.prototype = SuperClass.prototype; obj = new SuperClass(); trace("---------------"); obj.f1(); obj.f2(); obj.f3(); trace("******************************"); obj2 = new SubClass(); trace("---------------"); obj2.f1(); obj2.f2(); obj2.f3(); А вот те ссылка на самый простой справочник на эту тему!!! |
Цитата:
Цитата:
Цитата:
и вообще, Визард, почему я тебя не включил в список досрочно дисквалифицированных? |
Теперь ответь мне!
Книжек надо больше читать! Фигня какая-то, а не скрипт! Посмотри на ссылке создание объектов! |
2K WebStudio
ага, вот ты-то мне и нужен. ты не ответил ни на один из поставленных вопросов и, более того, породил у меня новые. 1) какую смысловую нагрузку несет следующая запись: SubClass.prototype = SuperClass.prototype; 2) почему ты определяешь методы так по-разному: Цитата:
Цитата:
|
Делаю это отдельно т.к. так меньше оперативки жрёт!
Кажется, там это написано!!! А без этой строки, естественно ничего не пашет! |
вот я сейчас пытаюсь для себя решить: ты намеренно флудишь или действительно не понимаешь, вообще о чем идет речь.
либо внимательно прочти первое сообщение и попытайся ответить на поставленные вопросы, либо не засоряй эфир. + дополнительные вопросы повисли: 1) какую смысловую нагрузку несет следующая запись: SubClass.prototype = SuperClass.prototype; 2) почему ты определяешь методы так по-разному: -------------------------------------------------------------------------------- SuperClass.prototype.__proto__.f1 = function() { trace("f1 called"); }; -------------------------------------------------------------------------------- и -------------------------------------------------------------------------------- SuperClass.prototype.f2 = function() { trace("f2 called"); }; -------------------------------------------------------------------------------- |
посмотрим, подумаем. Я из клубы - дома сейчас модема нет. Скопирую подумаю. Сейчас...
|
Sergey"iLoveYou", эт действительно трабла? ил ты решил попонтоватся и устроить экзамен тут всем по ООП?...
ЗЫ: оч.смешно со стороны... |
Цитата:
|
Sergey"iLoveYou", у тебя Очень завышенная самооценка! ;) ты пытешься строить из себя некого "флэш-философа", думая что поразишь всех своими ответами, юзая при этом всякие клише...
думаешь что сможешь поставить всех на место и никто ничего не сможет тебе возразить...! ЗЫ: Будешь говорить такие фразы целый год - можешь за умного сойти... ;) |
Цитата:
2) да, я пытаюсь даже к флешу подойти отчасти по-философски 3) да, я пытаюсь поразить всех умными высказываниями 4) да, я юзаю клише 5) да, я ставлю ламерков, подобных тебе, на место, и они не могут ничего конструктивно возразить 6) если я целый год буду объяснять людям, что лучше высказываться по предложенной теме, а не обсуждать меня-любимого, то я скорее сойду с ума, чем буду казаться умным шибко 7) подобных высказываний я выслушал за жизнь очень много -- судьба такая. |
Sergey"iLoveYou", да ладно...не нервничай так чувак:)не обижайся, если чё... :)
|
все перетерли?
может, теперь, по теме чего-нибудь? а то медаль скоро гнить начнет ;) |
SubClass.prototype= new SuperClass(); :D
Об чём Вы тут спорите? Я спросил как то рабочий шрифт, так мне кроме Ариэля ничего больше не предложили. :D |
Лично я считаю что Sergey мало что понимает в глубоком flash программировании.
|
Цитата:
|
Цитата:
пацаны, давайте!получите эту "медаль" и можете бегать по улице и кричать: "АААААААААааааааа.....мне сам Sergey"iLoveYou" медаль вручил!!!!аааааааааа....я терь самый крутой!!!!ааааааа....!!!" Макромедия как раз ищет такие работников... :D |
Цитата:
|
Цитата:
Код:
SubClass.prototype.__constructor__ = SuperClass;спасибо за то, что высказался по теме. |
Сразу говорю, я только что со школы, так что думать сильно не могу :)
1. Код:
function SuperClass() {f1 - метод способен добавлятся к другим классам таким образом: SubClass.prototype.__proto__=SuperClass.prototype f2 - просто метод который спецефически принадлежит только этому "SuperClass'у" :) , не способен добавлятся к другим классам :) f3 - метод добавляется, и может быть запущен, всеми созданными классами, всё обосновывается одним лишним "__proto__" ;) 3. SubClass.prototype.__constructor__ = SuperClass; к чему бы это? :rolleyes: хмм... :) наверное к тому что ты прицепил это __proto__ вот сюда: Цитата:
|
Techmaker, ты сейчас очень поднялся в моих глазах, говорю без всякой иронии. :) хотя с заданием намудрил ;)
1. SubClass=SuperClass; и где же тута инхеританс? смысл-то задания не в том, чтоб получить в аутпуте Цитата:
2. f1 - вот тут я тебя не совсем понял. f2 - по сути близко, но формулировка немного.. того ;) f3 - то же, что и с f2. 3. неа. спасибо, Techmaker. |
интерестно почему же 3 не правильно... :rolleyes:
|
_root.f3(); ;)
|
Цитата:
ладно, сам отвечу на третий вопрос. Код:
ASSetPropFlags(SuperClass.prototype.__proto__, null, 0, 1);2 llllllllll, игра со зрителями еще не началась ;) |
это что подсказка? :)
если да, то я имел ввиду, что если убрать вот это __proto__ вот здесь: SuperClass.prototype.f3 = function() { trace("f3 called"); }; то будет всё как надо :) |
Цитата:
f3 - изначально обманка, поскольку trace(SuperClass.prototype.__proto__ == Object.prototype); даст true. |
я что-то непонямаю :)
а вообще по-моему вот самй лучший вариант :) Код:
function SuperClass() { |
Алексей, приятно разговаривать с человеком, который, по всей видимости, читал Дебройля :)
SubClass.prototype.__proto__=SuperClass.prototype -- объяснишь, как это работает? |
Как это работает - Дебройль прекрасно и объяснил :
"Хитрость в том, что нужно сделать два класса и направить __proto__ прототипа первого на прототип другого (вместо Object.prototype). Таким образом вы получите "младший" класс, подкласс (SubClass) и "старший" класс, суперкласс (SuperClass). Делается это простой операцией: SubClass.prototype.__proto__ = SuperClass.prototype;" Нам же что бы найти F2 надо порыться не в прототипе SuperClass, а в его конструкторе. Ну так и поройтесь, чего притихли, где продолжение банкета? |
Цитата:
Цитата:
|
Цитата:
|
Ладно, раз Нуран сдался, мне то чего тянуться.
Подтягивай Серёга тяжелую артилерию. Я так понял, ты котегор. не хочешь засовывать метод f2 в прототип SuperClass, типа SubClass.prototype.__proto__=SuperClass.prototype ; SuperClass.prototype.f2=function() { trace("f2 called"); }; Вариант SubClass=SuperClass.prototype.constructor ; тоже не проходит, при нём твою строчку SubClass.prototype.__constructor__ = SuperClass; можно вообще убрать, трэйсится будет что надо, но механизм наследования не вырисовывается. Я скажу по простому - инфы ни хрена нету ниде. У Мука constructor - 15 строчек, у Дебройля - 2страницы Но даже не в этом дело. Врубится бы чего ты написал SubClass.prototype.__constructor__ = SuperClass; Стыдно признаться не знаю что есть __constructor__ :mad: Ставлю trace(SuperClass.prototype.__constructor__); выводится undefined Ставлю trace(SuperClass.prototype.constructor); выводится всё путём - [type Function] В общем бардак. Мож у нас на Руси Дебройли и есть, но тока куда то попрятались. Дембинского очень уважаю, так у него последнее обновление с год назад. Здесь на Флэшере уроков по ООП и близко нету. Потрошитель уделил этому делу 10 строчек в глосарии. Разбирайтесь мол сами. Мож ничего не подсказывать, только чиркани, чем отличается __constructor__ от constructor |
Цитата:
нуран не сдался, он даже не пытался. Цитата:
Цитата:
__constructor__ -- штука как бы недокументированная, но работает, как видишь. чтоб не нагружать тебя словесным бредом: a=obj2.__constructor__; --> Ctrl+Alt+V ;) мысль продолжим? |
2Штрек
Цитата:
Код:
SubClass.prototype.bla_bla = SuperClass; |
ну-ка не хулигань тут! :) не видишь, конструктивная беседа завязалась? :cool:
|
Повторный ответ на первый вопрс :)
Цитата:
вот вариант, но метод f2 унаследовать всеровно не получится :) Код:
SubClass.prototype.constructor.prototype.__proto__ = SuperClass.prototype.constructor.prototype;Цитата:
|
| Часовой пояс GMT +4, время: 19:36. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.