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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 09.07.2004, 00:26
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 11  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
Если ты хочешь создавать экземляры объектов класса, тогда пиши конструктор класса, а не класс как набор методов. Точно так же как и в С++. Точно так же, как и в Java. Точно так же, как и в Perl...
... Хм, а на каких языках ты пишешь, если этого не знаешь?
__________________
судью - на мыло, из игроков - вить веревки.

Старый 09.07.2004, 09:53
Denza вне форума Посмотреть профиль Отправить личное сообщение для Denza Найти все сообщения от Denza
  № 12  
Denza

Регистрация: Jul 2004
Адрес: Ekaterinburg
Сообщений: 11
Цитата:
Оригинал написал(а) Dindin
Если ты хочешь создавать экземляры объектов класса, тогда пиши конструктор класса,
Каким образом наличие/отсутвие конструктора класса влияет на возможность создавать экземпляры объектов класса?

Цитата:

а не класс как набор методов.
А собственно чем класс

class Worker
{
public function Do()
{
trace("Do!!!");
}
}

не класс? По твоему класс это что? Это собственно и есть объект с набором методов.

Цитата:

Точно так же как и в С++. Точно так же, как и в Java. Точно так же, как и в Perl...
... Хм, а на каких языках ты пишешь, если этого не знаешь?
Я в данный момент в основном пишу на C#, до этого писал в основном на C/C++. И там конструктор совсем не обязателен, так же как и в AS2.

Старый 09.07.2004, 10:18
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 13  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
Цитата:
Оригинал написал(а) Denza

Каким образом наличие/отсутвие конструктора класса влияет на возможность создавать экземпляры объектов класса?

Гы-гы-гы
Ты в курсе, что ЭКЗЕМПЛЯР класса (то есть объект) и КЛАСС - это разные вещи?

Цитата:
Оригинал написал(а) Denza

А собственно чем класс

class Worker
{
public function Do()
{
trace("Do!!!");
}
}

не класс? По твоему класс это что? Это собственно и есть объект с набором методов.
Это набор методов в оболочке класса. Вызвать метод этого класса можно только прямым обращением к классу:
Worker.Do (); но, поскольку класс не был проинициализирован, то это не сработает. Вывод - медод Do должен быть статическим (кстати, названия функций с заглавной буквы зарезервированны для названий классов и конструкторов классов):
Код:
//Worker class
class Worker {
	public static function doSmth() {
		trace("Do!!!");
	}
}
обращение к статическому методу класса:
Код:
Worker.doSmth();
Но!! В этом случае мы не создаём екземпляр объекта, а пользуемся статическим методом. Если же необходимо несколько экземпляров класса - пишем:
Код:
//class Worker
class Worker {
	static var i:Number = 0;
	var number:Number;
	//инициализация счётчика рабочих
	function Worker() {
		//конструктор класса
		this.number = i++;
	}
	public  function doSmth() {
		trace("my number is " + this.number);
	}
}
И создание экземпляров класса:
Код:
//создание экземпляров
smith = new Worker ();
skinner = new Worker ();
doctor = new Worker ();

//вызов методов класса от экземпляров класса
smith.doSmth();
doctor.doSmth();
skinner.doSmth();
в оутпуте имеем:
Код:
my number is 0
my number is 2
my number is 1
__________________
судью - на мыло, из игроков - вить веревки.

Старый 09.07.2004, 10:21
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 14  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
Кстати, это не Action Script, это почти чистая Java, слегка адаптированная под AS2.0. Совет: почитай Bruce Eckel "Thinking in Java" - лучше узнаешь AS2.0. Или, тоже в общем классическая книжка, "Thinking in C++" того же автора.

ЗЫ Тяжело учить только первые двадцать четыре языка - по себе знаю
__________________
судью - на мыло, из игроков - вить веревки.


Последний раз редактировалось Dindin; 09.07.2004 в 10:23.
Старый 09.07.2004, 10:34
_zhloba вне форума Посмотреть профиль Отправить личное сообщение для _zhloba Посетить домашнюю страницу _zhloba Найти все сообщения от _zhloba
  № 15  
_zhloba

Регистрация: Apr 2004
Адрес: Минск
Сообщений: 176
Цитата:
Я в данный момент в основном пишу на C#, до этого писал в основном на C/C++. И там конструктор совсем не обязателен, так же как и в AS2.
Неправда, обязателен.
Просто, если программист об этом не позаботится, то мудрый компилятор создаст конструктор сам (равно как и деструктор).
__________________
Юра

Старый 09.07.2004, 10:54
Denza вне форума Посмотреть профиль Отправить личное сообщение для Denza Найти все сообщения от Denza
  № 16  
Denza

Регистрация: Jul 2004
Адрес: Ekaterinburg
Сообщений: 11
Цитата:
Оригинал написал(а) Dindin

Гы-гы-гы
Ты в курсе, что ЭКЗЕМПЛЯР класса (то есть объект) и КЛАСС - это разные вещи?
Я в курсе. Я на c++ программировал когда флэша просто не было даже в проекте.
Я в форуме задал вопрос, ты кстати на него ответить не смог, а после того как я сам нашел ответ, ты стал учить меня ООП, к тому же с грубыми ошибками.
Цитата:

Это набор методов в оболочке класса. Вызвать метод этого класса можно только прямым обращением к классу:
Worker.Do (); но, поскольку класс не был проинициализирован, то это не сработает.
var obj=new Worker();
obj.Do();

И все будет работать.
Цитата:

Вывод - медод Do должен быть статическим
Вывод не верный.
Цитата:

(кстати, названия функций с заглавной буквы зарезервированны для названий классов и конструкторов классов):
Не зарезервированы. Ничто не запрещает мне использовать методы, переменные и свойства с первой большой буквой в имени.

Старый 09.07.2004, 10:58
Denza вне форума Посмотреть профиль Отправить личное сообщение для Denza Найти все сообщения от Denza
  № 17  
Denza

Регистрация: Jul 2004
Адрес: Ekaterinburg
Сообщений: 11
Цитата:
Оригинал написал(а) _zhloba

Неправда, обязателен.
Просто, если программист об этом не позаботится, то мудрый компилятор создаст конструктор сам (равно как и деструктор).
При объявлении класса конструктор объявлять не обязательно.
Точка. Все остальное, у же в данном случае не важно. Это полезно знать, но к данному спору это отношение не имеет, так как мне сказали "Если ты хочешь создавать экземляры объектов класса, тогда пиши конструктор класса" а это не верно.

Старый 09.07.2004, 11:01
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 18  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
Молодой человек. Если Вы так пишете на С++, то мне уж-жасно хочется посмотреть хотя бы на одну из ваших программ... И что, вправду всё работает??

Вопрос не в том, кто и кого к чему обязывает. Есть определённые стандарты форматирования кода и создания структуры приложения. Тот кто их не знает (не любит, не ценит, не применят) - сам себе злобный баклан.
У меня есть опыт участия в разработке ПО в больших коллективах (12 человек).
И могу вас заверить, что не стоит пренебрегать даже расстановкой комментариев.

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

ЗЫ Читайте Кнута и обрящете
__________________
судью - на мыло, из игроков - вить веревки.


Последний раз редактировалось Dindin; 09.07.2004 в 11:11.
Старый 09.07.2004, 11:13
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 19  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
Вопрос был: Что я делаю не так.
Ответ был: либо сделай метод класса статическим, либо явно опиши конструктор.

Если ты не понял - это твои проблемы.

ЗЫ Если ты программировал на С когда флэша в проекте не было, то по крайней мере с 1992 года. То есть итого - 12 лет. Солидный стаж программирования! Вот только зачем тогда ты ламерские вопросы задаёшь?
__________________
судью - на мыло, из игроков - вить веревки.


Последний раз редактировалось Dindin; 09.07.2004 в 11:15.
Старый 09.07.2004, 11:34
Denza вне форума Посмотреть профиль Отправить личное сообщение для Denza Найти все сообщения от Denza
  № 20  
Denza

Регистрация: Jul 2004
Адрес: Ekaterinburg
Сообщений: 11
Цитата:
Оригинал написал(а) Dindin
Молодой человек. Если Вы так пишете на С++, то мне уж-жасно хочется посмотреть хотя бы на одну из ваших программ... И что, вправду всё работает??
Да. Если хочешь посмотреть приезжай к нам в Е-бург.
Цитата:

Вопрос не в том, кто и кого к чему обязывает. Есть определённые стандарты форматирования кода и создания структуры приложения. Тот кто их не знает (не любит, не ценит, не применят) - сам себе злобный баклан.
Во первых на все есть как минимум два стандарта, и твой совершенно не обязательно является правильным.

Во вторых "названия функций с заглавной буквы зарезервированны для названий классов и конструкторов классов" это они зарезервированы кем?

Цитата:

У меня есть опыт участия в разработке ПО в больших коллективах (12 человек).
12 человек это не такой уж и большой коллектив, я сейчас в таком работаю.
Цитата:

И могу вас заверить, что не стоит пренебрегать даже расстановкой комментариев.

И еще, конструктор у класса есть всегда. Во всех языках без исключения. Внутри любого класса. Если программист не указывает конструктор явно, компилятор создает конструктор по умолчанию.
Конструктор есть, но объявлять я его, если его мне не надо не обязан.
Цитата:

ЗЫ Читайте Кнута и обрящете
И какую именно книгу написал Кнут про ООП?

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

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

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


 


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


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