Цитата:
Сообщение от BlooDHounD
Яски, а где в ООП написано, что должны быть inline методы? Вы кажется путаете тёплое с мягким 
|
А кто вдруг решил, что в ООП обязательно должен быть this, что должны быть классы, множественное наследование. Например, в Си++ есть перегрузка операторов, но это дополнительная возможность, которой нет в истинном определении ООП.
Цитата:
Сообщение от __etc
А посему, AS1 — псевдо-ООП язык, не является истинно объектно-ориентированным, как и JavaScript.
|
Может на эту тему тоже поспорим?
Цитата:
Сообщение от __etc
Кстати, наследование реализуется не так, как вы написали, ... Для наследования у вас есть скрытые костыли языка в виде __proto__ и __constructor__.
|
Спасибо, я и не знал.
Цитата:
Сообщение от __etc
Яски, я прошу написать не по отдельности все принципы ООП, а все вместе, пример на AS3 я привел. Истинно объектно-ориентированным языком можно назвать тот язык, который позволяет на уровне языка реализовать три принципа ООП сразу вместе на парочке классов, а не по отдельности, причем, реализованных средствами самого языка, а не руками, как тут уже всю тему пытаются сделать.
|
Да, пожалуйста:

Код:
function IMyClass(){
this.getRotation = function(){
return 'abstract method'
};
};
function MyClass() {
this.__proto__ = IMyClass;
this.angle = 0;
var calculateValue = function () {
this.angle = 2*Math.PI*Math.random();
};
this.getRotation = function() {
calculateValue.call(this);
return this.angle/Math.PI*180;
};
};
function AnotherMyClass() {
this.__proto__ = MyClass;
this.getRotation = function() {
var rotation = this.__proto__.getRotation();
return rotation/2;
};
this.getRadians = function() {
return this.angle/2;
}
};
var iMyClass = new IMyClass();
var myClass = new myClass();
var aMyClass = new AnotherMyClass();
trace(iMyClass.calculateValue()) // "undefined"
trace(iMyClass.getRadians()) // "undefined"
trace(iMyClass.getRotation()) // "abstract method"
trace(iMyClass.angle) // "undefined"
trace(myClass.calculateValue()) // "undefined"
trace(myClass.getRadians()) // "undefined"
trace(myClass.getRotation()) // "152.942357249558"
trace(myClass.angle) // "2.66934769976621"
trace(aMyClass.calculateValue()) // "undefined"
trace(aMyClass.getRadians()) // "1.3346738498831"
trace(aMyClass.getRotation()) // "102.746495101601"
trace(aMyClass.angle) // "3.58652926881432"
Даже немного компактнее получилось.
Как я уже говорил АС1 и JavaScript являются прототипными ООП. Что свойственно для языков программирования без жесткой типизации, в которых нельзя ввести определение класса. Если ,etcs, хочет называть все прототипные языки программирования "неистенными" это его право, но только вместе с приставкой ООП.