Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   [FMX] Object-oriented programming (http://www.flasher.ru/forum/showthread.php?t=36535)

SphinX 30.08.2002 23:27

[FMX] Object-oriented programming
 
Считайте, ... что это [man]ual.

Итак ... ... ...

в основном мысли из книги Гради Буча "Обьекно-ориентированный анализ и проектирование" советую!!!

Концепции ООП реализованные в FMX.
  • Инкапсуляция.
    разделение элементов объекта, определяющих его устройство и поведение, думаю, мало где её нет ...
  • Наследование.
    это реализация такого отношения между классами, что подкласс(который наследует) повторяет структуру и поведение своего суперкласса(который наследуется)
  • Полиморфизм.
    <поли> - много <морфос> - форма; к сожалению я не смог найти достаточно красивого определения, так что придётся на пальцах объяснять ... представьте себе некое дерево классов (допустим пространтвенных фигур) у кждого класса: и у элипсоида, и у куба есть метод "рисовать", НО ведь фигуры разные поэтому и методы должны работать по-разному; вот это и есть полиморфизм, когда один и тот же метод выполняется по-разному для разных классов
  • Механизм виртуальных функций.
    на примере покажу :D
теперь пример кода реализующий сразу всё ...
Код:

//определяем суперкласс
function SuperClass()
{
        trace("construction of class: SuperClass");
        this.property = "property of SuperClass";
        this.method = function()
        {
                trace("method of class: SuperClass");
                trace(this.property);
        }
}

//определяем подкласс
function SubClass()
{
        this.__proto__ = new SuperClass();
        trace("construction of class: SubClass");
        this.method = function()
        {
                this.__proto__.method();
                trace("method of class: SubClass");
        }
}

//работаем
trace("SuperClass--------------");
super = new SuperClass();
super.method();
trace("SuperClass--------------");

trace("SubClass--------------");
sub = new SubClass();
sub.method();
trace("SubClass--------------");

а это вывод этого кода ...
Код:

SuperClass--------------
construction of class: SuperClass
method of class: SuperClass
property of SuperClass
SuperClass--------------
SubClass--------------
construction of class: SuperClass
construction of class: SubClass
method of class: SuperClass
property of SuperClass
method of class: SubClass
SubClass--------------

а теперь вопрос: когда писал слово "super" в редакторе FMX оно вдруг засветилось, непонятно, что же оно даёт ???

Nox Noctis 31.08.2002 01:34

ой какой ты умныыый :)
прям страшно становится :)

а в хелп посмотреть ты конечно не догадался ? :)

SphinX 31.08.2002 08:05

я, короче, экспериментировал с переводом на руссий документации по FMX и теперь у меня ни русской ни английской нету :p
а субж затеял только из-за того, что не нашёл ничего о виртуальных функциях в обсуждении урока на эту же тему ...

SphinX 31.08.2002 09:12

super - это супер ... вот новая версия вчерашнего кода:
Код:

//определяем суперкласс
function SuperClass()
{
        this.create();//пусть это стандартный конструктор
}

//определяем конструктор
SuperClass.prototype.create = function()
{
        trace("construction of class: SuperClass");
}

//это, что называется "some_method_or_property"
SuperClass.prototype.method = function()
{
        trace("method of class: SuperClass");
}

//аналогично с подклассом
function SubClass()
{
        this.create();
}

SubClass.prototype = new SuperClass();// !!!

SubClass.prototype.create = function()
{
        super.create();
        trace("construction of class: SubClass");
}

SubClass.prototype.method = function()
{
        super.method();
        trace("method of class: SubClass");
}

trace("-----------------------------");
one = new SuperClass();
one.method();
trace("-----------------------------");
two = new SubClass();
two.method();
trace("-----------------------------");


SphinX 31.08.2002 09:14

заметно красивше :cool: ...

Nox Noctis 31.08.2002 14:31

...ты кого-то хотел удивить раскидыванием пальцев ? :))
извини :) могу тебя огорчить :)

SphinX 31.08.2002 22:19

тебя не понимаю, почему же ты думаешь что это "раскидывание пальцев", я всё это положил в форум для пользы (если кончно это кому-нибудь надо :p ) если бы я зашёл на форум с месяц назад и увидел этот топик, то помог бы он мне ОЧЕНЬ сильно ...

а вот ты показываешь себя не с лучшей стороны, необоснованная критика понимаш ;)

у Ричарда Баха есть рассказик "Иллюзии", дык вот, цитата:
"Самые простые вопросы на самом деле самые сложные. Где ты родился? Где твой дом? Куда ты идешь? Что ты делаешь? Думай об этом время от времени и следи за тем, как меняются твои ответы."

Nox Noctis 31.08.2002 22:30

для ЧЬЕЙ пользы, можно поинтересоваться ? :)))

твои слова:
Цитата:

а субж затеял только из-за того, что не нашёл ничего о виртуальных функциях
а все вышеизложенное иллюстрирует только то, что ты догадался поглядеть в хелп только после наводящего вопроса :)))

пользы не видать совсем:
— в первом посте код не откомментирован, поэтому абсолютно не понятно КАК он иллюстрирует принцыпы ООП, которые ты привел выше...
— во втором посте откоментированы простые вещи, но нет коментариев про собсно тему поста - указатель super. ...

так что... ИМХО ты хотел показать, что разобрался в том, что написано в хэлпе, мол вот ты какой, северный олень :)))

если я не прав - я готов это признать... но тебе придется объяснить мне, что в моих словах не так :)))

SphinX 01.09.2002 08:00

мне обьяснять что такое ООП на примере FMX както даже неприятно было бы, я выложил исходники только как демонстрацию как ООП сделан на FMX (люди понимающие с первого взгляда разбурутся где предки где потомки, что и как)

(блин, заставляешь оправдываться :o )
про super я узнал когда писал такое символическое имя, редактор подсветил синтакс, и узнал как им пользоваться не из хелпа, а маленько поэкспериментировав с Flash - компонентами (и чуть пораньше, чем ты свой топик об этом выложил :p )
про северного оленя ты совсем палку загнул, на ACM'овских олмпиадах был? - нет, значит надо ещё думать кто олень :cool:
Цитата:

если я не прав - я готов это признать... но тебе придется объяснить мне, что в моих словах не так :)
:D :D :D

llllllllll 01.09.2002 08:10

Мдя = function(){
trace( this(мдя =)));
}


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

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