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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Sep 2002
Сообщений: 1,737
По умолчанию ООП: (зажмурившись) ммм.. ИнХерИтАнс..

всей душой и телом приветствую любителей глубокого флеш-программирования на этом скромном форуме. вашему вниманию предлагается небольшая задача. она совсем простая: нужно всего лишь ознакомиться со следующим кодом и не задумываясь ответить на пару пустячковых вопросов. итак, код в студию:
Код:
function SuperClass() {
	trace("SuperClass constructor called");
	this.__proto__.f1 = function() {
		trace("f1 called");
	};
	this.f2 = function() {
		trace("f2 called");
	};
}
function SubClass() {
	trace("SubClass constructor called"); 
}
SuperClass.prototype.__proto__.f3 = function() {
	trace("f3 called");
};
SubClass.prototype.__constructor__ = SuperClass;
obj = new SuperClass();
trace("---------------");
obj.f1();
obj.f2();
obj.f3();
trace("******************************");
obj2=new SubClass();
trace("---------------");
obj2.f1();
obj2.f2();
obj2.f3();
Ну а теперь вопросы:
1) какую строчку (всего одну) нужно добавить в этот незатейливый код, чтобы методы f1() и f2() могли быть вызваны и для объектов класса SubClass?
2) совсем просто: в чем различия реализации методов f1(), f2(), f3()?
3) черт, только сейчас заметил: если удалить
Код:
SubClass.prototype.__constructor__ = SuperClass;
метод f3() все равно вызывается; к чему бы это?
Первому ответившему на все вопросы верно будет присвоено звание глубокого флеш-программиста и памятный значок с дарственной надписью "Я люблю ПротивныеТипы".

ЗЫ пользователи ||||||||||, lexass, Baltika, DeliMiter, Nox Noctis к участию не допускаются.

ЗЗЫ просьба не воспринимать слишком серьезно -- все равно призов на всех не хватит.

Старый 27.10.2003, 21:58
2K WebStudio вне форума Посмотреть профиль Отправить личное сообщение для 2K WebStudio Посетить домашнюю страницу 2K WebStudio Найти все сообщения от 2K WebStudio
  № 2  
2K WebStudio
 
Аватар для 2K WebStudio

Регистрация: Jul 2002
Адрес: Russia Federation Moscow
Сообщений: 779
Отправить сообщение для 2K WebStudio с помощью ICQ
пункт 1:
ты хочешь, чтобы в outpute было вот это?
SuperClass constructor called
---------------
f1 called
f2 called
f3 called
******************************
SubClass constructor called
---------------
f1 called
f2 called
f3 called
Так?

Старый 27.10.2003, 22:16
iLoveYou вне форума Посмотреть профиль Отправить личное сообщение для iLoveYou Найти все сообщения от iLoveYou
  № 3  
iLoveYou
wanted

Регистрация: Sep 2002
Сообщений: 1,737
ты б мысль не заканчивал на полуслове. и еще: раз уж взялся за задачку, то, пожалуйста, с объяснениями и поподробней, да.

Старый 27.10.2003, 23:04
sergwizard вне форума Посмотреть профиль Отправить личное сообщение для sergwizard Посетить домашнюю страницу sergwizard Найти все сообщения от sergwizard
  № 4  
sergwizard
 
Аватар для sergwizard

Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
1. Я бы написал все это так:
Код:
function SuperClass() {
	trace("SuperClass constructor called");
	this.__proto__.f1 = function() {
		trace("f1 called");
	};
	this.f2 = function() {
		trace("f2 called");
	};
}
function SubClass() {
	trace("SubClass constructor called"); 
}
SubClass.prototype.__proto__.f3 = function() {
	trace("f3 called");
};
SubClass.prototype = new SuperClass();
obj = new SuperClass();
trace("---------------");
obj.f1();
obj.f2();
obj.f3();
trace("******************************");
obj2=new SubClass();
trace("---------------");
obj2.f1();
obj2.f2();
obj2.f3();
2. реализация методов f1(), f2(), f3() видна из записи.
3. Эта строчка нихрена не значит.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный.
(S.Wizard)

Старый 27.10.2003, 23:13
2K WebStudio вне форума Посмотреть профиль Отправить личное сообщение для 2K WebStudio Посетить домашнюю страницу 2K WebStudio Найти все сообщения от 2K WebStudio
  № 5  
2K WebStudio
 
Аватар для 2K WebStudio

Регистрация: Jul 2002
Адрес: Russia Federation Moscow
Сообщений: 779
Отправить сообщение для 2K WebStudio с помощью ICQ
Знаешь что чувак!
Такой попсы я давно не видел!!!
Вот те скрипт:
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();

А вот те ссылка на самый простой справочник на эту тему!!!

Старый 27.10.2003, 23:17
iLoveYou вне форума Посмотреть профиль Отправить личное сообщение для iLoveYou Найти все сообщения от iLoveYou
  № 6  
iLoveYou
wanted

Регистрация: Sep 2002
Сообщений: 1,737
Цитата:
SubClass.prototype = new SuperClass();
гы заменять строчки нельзя нужно только добавить.
Цитата:
2. реализация методов f1(), f2(), f3() видна из записи.
ну да, видна, но тут нужны пояснения
Цитата:
3. Эта строчка нихрена не значит.
емкая, конечно, фраза. но ответа на поставленный вопрос она не дает.
и вообще, Визард, почему я тебя не включил в список досрочно дисквалифицированных?

Старый 27.10.2003, 23:21
2K WebStudio вне форума Посмотреть профиль Отправить личное сообщение для 2K WebStudio Посетить домашнюю страницу 2K WebStudio Найти все сообщения от 2K WebStudio
  № 7  
2K WebStudio
 
Аватар для 2K WebStudio

Регистрация: Jul 2002
Адрес: Russia Federation Moscow
Сообщений: 779
Отправить сообщение для 2K WebStudio с помощью ICQ
Теперь ответь мне!
Книжек надо больше читать!
Фигня какая-то, а не скрипт!
Посмотри на ссылке создание объектов!

Старый 27.10.2003, 23:50
iLoveYou вне форума Посмотреть профиль Отправить личное сообщение для iLoveYou Найти все сообщения от iLoveYou
  № 8  
iLoveYou
wanted

Регистрация: Sep 2002
Сообщений: 1,737
2K WebStudio
ага, вот ты-то мне и нужен.
ты не ответил ни на один из поставленных вопросов и, более того, породил у меня новые.
1) какую смысловую нагрузку несет следующая запись:
SubClass.prototype = SuperClass.prototype;
2) почему ты определяешь методы так по-разному:
Цитата:
SuperClass.prototype.__proto__.f1 = function() {
trace("f1 called");
};
и
Цитата:
SuperClass.prototype.f2 = function() {
trace("f2 called");
};
ЗЫ книжками отмазываться не нУно.

Старый 27.10.2003, 23:55
2K WebStudio вне форума Посмотреть профиль Отправить личное сообщение для 2K WebStudio Посетить домашнюю страницу 2K WebStudio Найти все сообщения от 2K WebStudio
  № 9  
2K WebStudio
 
Аватар для 2K WebStudio

Регистрация: Jul 2002
Адрес: Russia Federation Moscow
Сообщений: 779
Отправить сообщение для 2K WebStudio с помощью ICQ
Делаю это отдельно т.к. так меньше оперативки жрёт!
Кажется, там это написано!!!
А без этой строки, естественно ничего не пашет!

Старый 28.10.2003, 00:05
iLoveYou вне форума Посмотреть профиль Отправить личное сообщение для iLoveYou Найти все сообщения от iLoveYou
  № 10  
iLoveYou
wanted

Регистрация: Sep 2002
Сообщений: 1,737
вот я сейчас пытаюсь для себя решить: ты намеренно флудишь или действительно не понимаешь, вообще о чем идет речь.
либо внимательно прочти первое сообщение и попытайся ответить на поставленные вопросы, либо не засоряй эфир.
+ дополнительные вопросы повисли:
1) какую смысловую нагрузку несет следующая запись:
SubClass.prototype = SuperClass.prototype;
2) почему ты определяешь методы так по-разному:
--------------------------------------------------------------------------------
SuperClass.prototype.__proto__.f1 = function() {
trace("f1 called");
};
--------------------------------------------------------------------------------
и
--------------------------------------------------------------------------------
SuperClass.prototype.f2 = function() {
trace("f2 called");
};
--------------------------------------------------------------------------------

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

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

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


 


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


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