iNils,
riden, если хотите разобраться с объектами активации посмотрите посты
408 и
410.
Код:
function a () {
trace ("f a this="+this);
trace ("f a =="+(this.__proto__==b.prototype))
}
function b () {
trace ("f b this="+this); //f b this=[object Object]
trace ("f b =="+(this.__proto__==b.prototype)) // f b ==true т.е. this - это в данном случае объект созданный оператором new
this.c = a;
a (); //f a this=_level0
//f a ==false функция а является методом рута, а не объекта созданного new
this.c (); //f a this=[object Object]
//f a ==true функция a является методом объекта созданного new
trace (this.c == a); //true
}
new b ();
wvxvw, улыбнуло
Цитата:
Сообщение от __etc
Договорившись с самим собой, ага. Не пойдет.
|
Что значит пойдет/не пойдет? Принципы ООП довольно общие и абстрактные. В них кстати вообще даже о классах речи не идет.
Тоже самое с принципом инкапсуляции. С точки зрения парадигмы ООП инкапсуляция достигается без всяких приватов. Примите это как факт. А вот с точки зрения любителей мертвых языков или других сторонников ООП на классах, это понятие (инкапсуляции) может быть более конкретизирована и ограничено. Но к общей парадигме ООП это уже никак не относится.
Цитата:
Сообщение от __etc
Я ОТВЕТИЛ, ЧЕРТ ВАС ДЕРИ! ...
...См. выше.
...Бла-бла-бла, опять же, см. выше ответ.
|
Я понял - для вас инкапсуляция не достижима без привата. В этом случае вы, конечно, ответили. Но эта ваша "инкапсуляция" - лишь частный случай инкапсуляции парадигмы ООП.
Цитата:
Сообщение от __etc
Не говорит. Что AS1, что JavaScript, оба не имеют средств для контроля принципов ООП. Точка, больше повторять не буду, ибо надоело.
|
Т.е. смотрим википедию и где нравится - цитируем, где не нравиться - опровергаем, так __etc? А ведь я всего лишь показал уровень википедии - не более.
Цитата:
Сообщение от __etc
private+interface. Всё. Такие понятия есть и в AS3, и в Java, и в C# и ещё куче языков. В AS1 — НЕТ! Они отсутствуют по определению.
...
ДА!
...Я не требую, это вы заявили, что AS1 — чисто ООП язык. Это не так, это псевдо-ООП максимум. Точка.
|
Ну вы бы так и сказали сразу, что не считаете прототипные языки - "истинно" ООП языками. Зачем стесняться?
Цитата:
Сообщение от __etc
Где? У вас один и тот же класс меняет поведение и родителя, это не полиморфизм, а полная чушь. Примерно как японец вдруг почернел и стал негром. Полиморфизм подразумевает наличие нескольких объектов, с одним интерфейсом. Внутренняя реализация в них разная, но интерфейс к объектам — одинаков. Вот это называется полиморфизмом
...
|
Вы опять абстрактное понятие парадигмы ООП суживаете до рамок ООП на классах. Полиморфизм - понятие действительно более интуитивное, чем конкретное (чего одно название стоит!). Но на самом деле тут не так все сложно. Это просто код, который ведет к различным результатам, в зависимости от наследования.
Интерфейсы - это всего лишь ОДИН ИЗ СПОСОБОВ ДОСТИЖЕНИЯ полиморфизма.
Да я взял один и тот же класс, но лишь для подчеркивания возможностей AS1. Метод getAngle полиморфен и в этом случае.
Цитата:
Сообщение от __etc
Нигде, с вашим понятием полиморфизма такое можно написать только на JavaScript и других прототипных языках, у которых стол может стать стулом без проблем простой заменой прототипа.
|
А что вас так злит в прототипных языкак? Что они смеют называться языками ООП?
По-моему указанная возможность - весьма крутая вещь AS1.
Цитата:
Сообщение от __etc
Угу, особенно полиморфизм удался.
|
В рамках парадигмы ООП - удался. Код метода - один. Результат в зависимости от наследования - разный.