Показать сообщение отдельно
Старый 01.07.2008, 14:21
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Яски Посмотреть сообщение
Может на эту тему тоже поспорим?
JavaScript такой же псевдо-ООП, как и AS1, нет разницы. Ещё раз говорю, что язык вам позволяет реализовывать ООП, куцое, правда. Но у него нет средств для обеспечения той же приватности или полиморфизма, эти вещи разработчик просто в голове держит и все.

Цитата:
Сообщение от Яски Посмотреть сообщение
Да, пожалуйста:

Код:
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"
Даже немного компактнее получилось.
Мой трейс:

Цитата:
Сообщение от Flash CS3
undefined
undefined
abstract method
undefined
undefined
undefined
undefined
undefined
undefined
NaN
NaN
undefined
Не работает, вы не находите?

Цитата:
Сообщение от Яски Посмотреть сообщение
Как я уже говорил АС1 и JavaScript являются прототипными ООП. Что свойственно для языков программирования без жесткой типизации, в которых нельзя ввести определение класса.
Если рассматривать понятие ООП как более абстрактное, программирование с использованием понятия объектов, то тогда большинство языков объектно-ориентированные.


Цитата:
Сообщение от Яски Посмотреть сообщение
Если ,etcs, хочет называть все прототипные языки программирования "неистенными" это его право, но только вместе с приставкой ООП.
Я уже говорил, что я согласен на формулировку, что AS1 — ООП язык, но только с приставкой «псевдо». Class-based языки — ООП языки без приставок.

p.S. В моем нике всего три буквы и два подчеркивания, но почему в нём постоянно делают ошибки? То буквы местами перепутают, то «c» с «s», то одно подчеркивания вместо двух (хотя подчеркивания можно и опустить совсем).