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

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от chingachgoog Посмотреть сообщение
Инкапсуляция - это всего лишь механизм образования "черного ящика". Да, приват создан для усиления инкапсуляции, но сам по себе инкапсуляцию не обеспечивает.
А что обеспечивает инкапсуляцию, хотелось бы услышать.

Цитата:
Сообщение от chingachgoog Посмотреть сообщение
А так как вы отказываетесь говорить
Я вами треплюсь уже 400 с лишним ответов в этой теме и я после этого отказываюсь? Если бы я отказывался, я бы тут вообще ни поста не оставил.

Цитата:
Сообщение от chingachgoog Посмотреть сообщение
какие вы видите цели в привате
Инкапсуляция, инкапсуляция, инкапсуляция, черт вас возьми, сколько можно? Я понимаю, что мыслить проектами до 2 килострок какой-то там инкапсуляцией и полиморфизм с наследованием сложно, да. Ой, как я вас понимаю.

Цитата:
Сообщение от chingachgoog Посмотреть сообщение
(явно не 3-й)
С потолка взяли?

Цитата:
Сообщение от chingachgoog Посмотреть сообщение
Ну так ДОЛЖЕН язык ООП иметь зарезервированное слово private? Простой вопрос: да или нет? (то же самое к словам class, interface)
Да хоть назовите «коробочка», смысл от этого не меняется, не обеспечивает AS1 инкапсуляции, вам её самому надо реализовывать, с кучей недостатков. Вы придираетесь к самому наличию/отсутствию кейворда «private», а не к сути такого понятия, как приватность. Не реализована эта инкапсуляция на уровне языка в AS1, никаким образом, ни кейвордом, никак, вы это сами подтвердили высказыванием о том, что её можно легко реализовать. То, что у меня есть четыре колеса, вовсе не означает, что их можно назвать автомобилем. Вы из подручных средств пытаетесь собрать этот самый автомобиль, чтобы попытаться на нем поехать и при этом, всю эту кучу хлама, из которого собираетесь сделать автомобиль (не зная вообще, поедет ли он), уже называете это автомобилем.



Цитата:
Сообщение от chingachgoog Посмотреть сообщение
Что значит САМОМУ?
Что значит? Наследование как реализовали? Через очень интересное свойство __proto__, очень документированное, руками. Не простым кейвордом extends без плясок, а аж пять строчек. Инкапсуляция как реализована? Последние страниц десять с горем пополам что-то сделали, и то, такой вариант не живет с наследованием, не говоря уже о забиванием памяти одинаковыми методами, которые даже экземпляру класса не принадлежат.

Цитата:
Сообщение от chingachgoog Посмотреть сообщение
Есть синтаксические конструкции языка или нет, которые позволяют это делать? Есть.
Какие? extends — нету. private — нету. Интерфейсы? А что это такое? Ничего этого нет, вы для себя это придумываете, в мозгу, мол, вот такие методы вызывать нельзя, а эти переменны трогать тоже. Язык вам тут не поможет, он не умеет сам по себе такие вещи делать.

Цитата:
Сообщение от chingachgoog Посмотреть сообщение
А как можно судить об AS1 как языке ООП с точки зрения AS3?
Цитата:
Сообщение от chingachgoog Посмотреть сообщение
Потомучто нужно смотреть с точки зрения общей парадигмы ООП.
С точки зрения ООП как раз таки, а не AS3. AS3 взят в качестве примера, если хотите, можно взять в качестве примера Java или C#, не принципиально.

Цитата:
Сообщение от chingachgoog Посмотреть сообщение
Не хотите тогда посмотреть на AS3 с точки зрения AS1 и обозвать хаками interface?
В AS1 нет полиморфизма, он просто настолько далек от этого, что просто не знает в принципе, что это такое.

Цитата:
Сообщение от chingachgoog Посмотреть сообщение
Код:
function Polymorph(){
}
Polymorph.prototype.getAngle=function(angle){
	trace(this.getSin(angle))
}

function Degree(){
}
Degree.prototype.getSin=function(angle){
	function convert(){
		return angle*Math.PI/180
	}
	return Math.sin(convert())
}

function Radian(){
}
Radian.prototype.getSin=function(angle){
	return Math.sin(angle)
}

obj=new Polymorph()

Polymorph.prototype.__proto__=Degree.prototype
obj.getAngle(90) // 1
obj.getAngle(Math.PI/2) // 0.0274121335920443

Polymorph.prototype.__proto__=Radian.prototype
obj.getAngle(90) // 0.893996663600558
obj.getAngle(Math.PI/2) // 1
И где здесь мой вариант на AS3, переписанный под AS1? Где публичное свойство angle у экземпляра класса? Где работа приватного метода с ним? Где наследование свойства? Не вижу. Я вижу две функции, одна вызывает другую и молча возвращает посчитанное значение на основе аргумента. Никакой работы с экземпляром класса, гениально просто.
Я вас прошу написать точный аналог моего кода, который описывает все три принципа ООП в двух классах + интерфейс. Интерфейс и полиморфизм, вы, конечно, показать не сможете, ибо ни того, ни другого нет в AS1 и реализовать их собственными силами вам не удастся, покажите хотя бы код, являющийся точной копией моему, но на AS1. Т. е. те же свойства, приватность, методы, переопределение и т. д.

Цитата:
Сообщение от chingachgoog Посмотреть сообщение
А где вы ДАЛЬШЕ сказали, что iNils ошибся? Надо думать забыли?
Вы меня объявили в некомпетентности, не удосужовшись прочитать дальнейший текст, каким тут боком iNils? Вы не прочитали текст до конца, потом тут же пишете тоже самое и говорите, что я что-то не понимаю? Оригинально.

Цитата:
Сообщение от chingachgoog Посмотреть сообщение
Ну значит вам не надо
А мне надо и интересно.
Вот именно, что вам интересно. Вам нравится реализовывать ООП на коленке, это уже и так понятно.