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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

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

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
так как слово "объекты" находятся во множественном числе, а "класс" в единственным, я делаю смелый вывод, что тут имеются в виду экземпляры.
Вы так говорите, как будто я что-то говорил про экземпляры.
Вы так говорите, как будто экземпляры и объекты класса - разные вещи.
Вы так говорите, как будто вики - последняя инстанция, которая всегда права.
Вы так говорите, как будто в вики не написано
Цитата:
Сообщение от wikipedia
Наследование — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с инкапсуляцией, полиморфизмом и абстракцией), позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом.
Вы так говорите, как будто я вас чем-то обидел.

В английской вики, например, написано:
Цитата:
The new classes, known as derived classes, take over (or inherit) attributes and behavior of the pre-existing classes, which are referred to as base classes (or ancestor classes).
Т.е. все просто - классы наследники заимствуют свойства и поведение базовых классов.

Вы извините меня, я действительно не вижу противоречия принципам ООП в наследовании статических членов класса. Как и не вижу причин сводить тему к оскорблениям. Спасибо за понимание.


Давайте начнем сначала, не трогая экземпляры. Статический метод или аттрибут класса - свойство конкретного класса. Хорошо. Что, согласно принципам ООП, представляет из себя класс-наследник?

С моей точки зрения - класс, который ведет себя точно так же, как и базовый. За исключением случаев переопределения аттрибутов или методов класса, или расширения его функционала. Мне наследование так объясняли.

1. Что происходит, когда статические члены классов не наследуются? Класс-наследник имеет меньший функционал, чем базовый класс.
2. Что происходит, когда статические члены классов наследуются? Класс-наследник ведет себя так же, как и базовый класс.

С моей точки зрения - первый случай противоречит принципам наследования в ООП, а второй - нет.

Мне интересна ваша точка зрения на эту ситуацию. Мне интересно, какие принципы нарушает наследование статических членов класса. Мне интересно разобраться.
Возможно я неправильно понимаю принципы наследования, тогда покажите мне правильные. Я вас поблагодарю и мы закроем тему.

Старый 15.07.2009, 13:41
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 12  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
нельзя рассматривать классы без экземпляров. по ссылке сказано:
Цитата:
Сообщение от wikipedia
любой объект может принадлежать или не принадлежать определенному классу, то есть обладать или не обладать поведением, которое данный класс подразумевает
статические свойства задают поведение не объекту экземпляра, а задают поведение объекту класса. таким образом что бы произошло наследование, надо унаследоваться от объекта класса.

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

Регистрация: Nov 2006
Сообщений: 487
Отправить сообщение для marat_sa с помощью ICQ Отправить сообщение для marat_sa с помощью Skype™
У Мука написано, что нельзя НАСЛЕДОВАТЬ статические свойства и методы класса.
__________________
Стой! Опасная зона! Работа мозга!

Старый 15.07.2009, 14:58
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 14  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
В Java и в AS3 разная реализация статических свойств, так что даже смысла нет сравнивать - в Java статические свойства доступны так же и у экземпляра, а не только у его класса, в AS3 экземпляр даже понятия не имеет про статические свойства его класса.

А вообще, а зачем это нужно было? Т.е. если вам нужно использовать ту же функцию, что и в родительском классе - так ее (родительскую) и используйте...
__________________
Hell is the possibility of sanity

Старый 16.07.2009, 20:15
crazyone вне форума Посмотреть профиль Отправить личное сообщение для crazyone Найти все сообщения от crazyone
  № 15  
Ответить с цитированием
crazyone
 
Аватар для crazyone

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
Я не сравнивал с Java, я вспомнил про Java только потому, что она же вроде как ООП, т.е. принципы ООП в ней не должны нарушаться. Ну, по идее.

Зачем? А зачем вобще статические классы?
Например Math, ExternalInterface...

Например, если нужна какая-нибудь продвинутая математика - отнаследовал класс MegaMath, дописал нужные методы, и пользуешься постоянно MegaMath вместо того, чтобы иногда использовать Math, а иногда - расширеную версию.
(На всякий случай - гипотетическая ситуация, я знаю, что Math - final)

2BlooDHounD:

Классы нельзя рассматривать без экземпляров? А как же классы, у которых нет и не может быть экземпляров? Абстрактные или полностью статические? Они же не противоречат принципам ООП, правда?

Ну да, я понимаю, что статические члены класса задают поведение классу, а не экземпляру.
Но покажите мне формулировку того принципа, по которому наследование ограничивается поведением экземпляров класса и не включает в себя наследование поведения класса.

Если вы имеете ввиду - "противоречит принципам реализации ООП в AS3", то мы просто неправильно друг друга поняли.


Последний раз редактировалось crazyone; 16.07.2009 в 20:32.
Старый 16.07.2009, 21:02
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 16  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
crazyone, у sun своё видении ООП, как я уже сказал. у меня видение ООП через призму моих знаний, и некого ECMAScript. а ещё Вы читаете построчно, как я уже писал, и не воспринимаете информацию целиком. я ещё раз попробую написать масло масленое, но я всё равно понимаю что до Вас не дойдёт.

любой класс - это экземпляр класса, который унаследован от класса Class.
любое статическое свойство - это свойство экземпляра класса, который наследуется от класса Class.
что бы у какого-либо класса ( как экземпляра ) унаследовались свойства ( типа статические ), они должны быть описаны в классе Class ( в AS3, например, таким свойством является свойство prototype ).

Добавлено через 14 минут
показательный AS3 пример:
Код AS3:
package {
 
	import flash.display.Sprite;
	import flash.utils.describeType;
 
	public class Test extends Sprite {
 
		public function Test() {
			super();
 
			trace( describeType( new SubClass() ) );
			trace( describeType( SubClass ) );
 
		}
 
	}
 
}
 
internal class BaseClass {
 
	public function BaseClass() {
		super();
	}
 
	public function get baseProperty():Number {
		return 0;
	}
 
}
 
internal class SubClass extends BaseClass {
 
	public function SubClass() {
		super();
	}
 
}
вот результаты трэйсов (нужное я выделил):
Код:
<type name="Test.as$0::SubClass" base="Test.as$0::BaseClass" isDynamic="false" isFinal="false" isStatic="false">
  <extendsClass type="Test.as$0::BaseClass"/>
  <extendsClass type="Object"/>
  <accessor name="baseProperty" access="readonly" type="Number" declaredBy="Test.as$0::BaseClass" />
</type>
Код:
<type name="Test.as$0::SubClass" base="Class" isDynamic="true" isFinal="true" isStatic="true">
  <extendsClass type="Class"/>
  <extendsClass type="Object"/>
  <accessor name="prototype" access="readonly" type="*" declaredBy="Class" />
  <factory type="Test.as$0::SubClass">
    <extendsClass type="Test.as$0::BaseClass"/>
    <extendsClass type="Object"/>
    <accessor name="baseProperty" access="readonly" type="Number" declaredBy="Test.as$0::BaseClass" />
  </factory>
</type>


Последний раз редактировалось BlooDHounD; 16.07.2009 в 21:18.
Старый 16.07.2009, 21:57
crazyone вне форума Посмотреть профиль Отправить личное сообщение для crazyone Найти все сообщения от crazyone
  № 17  
Ответить с цитированием
crazyone
 
Аватар для crazyone

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
Я вас непонял именно из-за того, что вы сказали "принципам ООП", а не "принципам AS3", или "принципам ECMAScript".
Вот и хотел выяснить - каким именно принципам ООП противоречит наследование статики классов.

Т.е. мы вели разговор в разных терминологиях и конечно же не понимали друг-друга.

Спасибо, теперь я понял, что вы имели ввиду и получил ответ на свой изначальный вопрос.

Старый 16.07.2009, 22:28
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 18  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
crazyone, лично я вёл разговор о принципах в общем. а Вы вели о других языках.

Старый 17.07.2009, 03:21
crazyone вне форума Посмотреть профиль Отправить личное сообщение для crazyone Найти все сообщения от crazyone
  № 19  
Ответить с цитированием
crazyone
 
Аватар для crazyone

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
В принципах в общем ничего не говорится о том, что класс-наследник наследует от базового класса только прототип для своих экземпляров и не наследует прототип для себя. Если я не прав - поправьте меня.
То, что так написано в ECMAScript, еще не значит, что это это принцип ООП. В ECMAScript вряд ли множественное наследование допускается, но это же не значит, что множественное наследование противоречит принципам ООП.

Еще раз:
Наследование - механизм ООП, позволяющий создать класс-наследник на основе уже существующего класса. При этом класс-наследник заимствует поведение (свойства и функциональность) базового класса.

Это общий принцип ООП. Вы согласны с этой формулировкой? Если нет - приведите формулировку наследования, которую считаете правильной.

Старый 17.07.2009, 09:54
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 20  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
crazyone, я Вам из википедии привёл много много текста. Вы сперва
разберитесь с понятием "класс", а потом уже с "наследованием". если Вы
говорите о классе как об объекте, то, извините, но он такой же
смертный как и его порождения.

и так ещё масла:
1. прочитайте вдумчиво первый абзац определения класса.
2. там написано, что класс описывает какой-то объект.
3. если Вы говорите о статических свойствах класса, значит Вы говорите о существовании какого-то объекта, к которому эти свойства принадлежат. и этот объект - ваш класс.
4. вот тут Вы уже рассматриваете класс как какой-то объект. а рас так, то этот объект "связан контрактом" (по метафоре вики) с каким-то классом? то есть этот объект чей-то экземпляр, но чей? и от кого унаследован тот класс?

что бы представить "идеального сферического коня в вакууме" (в нашем случаи это идеальное ООП), нужно не хилое воображение.

p.s.: на этом я тут заканчиваю.


Последний раз редактировалось BlooDHounD; 17.07.2009 в 13:31.
Создать новую тему Ответ Часовой пояс GMT +4, время: 13:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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