Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   создание класса дерева (http://www.flasher.ru/forum/showthread.php?t=85658)

Alex T 27.09.2006 16:33

создание класса дерева
 
Например есть сл. класс узла дерева:
Код:

class Element {
        private var elementVar1:String;
        private var elementVar2:String;
       
        ..........
        private var childs:Array;
       
}

как организовать создание 3х уровнего дерева (класс Tree, например)?
т.е. в childs будут содержаться такие же Element.

Storm[pfp] 27.09.2006 16:37

Я так чую ты хочешь замутить представение чего то в древовидной структуре ?

Nirth 27.09.2006 16:39

чем тебе XML не подошел? расширь XMLNode, XML и дерево готово

Alex T 27.09.2006 19:09

на основе XML - это хорошая идея, вот только если мне захочеться, например, обратиться не через childNodes[0].childNodes[0], а например папа[0].сынок[0], т.е. использовать XML как за основную структуру данных, но доступ и создание через другие имена

iNils 27.09.2006 19:17

Код:

папа = childNodes[0].childNodes[0].childNodes[0].childNodes[0];
trace (папа.childNodes[0]);


Alex T 27.09.2006 19:27

пример использования класса, который у меня не получается создать:
Код:

var family:Tree=new Tree();
family.addFather({name:"Vasya",age:30});
family.father[0].addSon({name:"Petya",age:3});


Alex T 27.09.2006 19:30

и сразу еще пересекающийся с темой вопрос, как наследовать конструктор, т.е. если я делаю подкласс Tree класса XML

iNils 27.09.2006 19:34

А чем addFather отличается от addSon?

Alex T 27.09.2006 19:35

только названием данных, а функционально ничем

Alex T 27.09.2006 19:38

по поводу наследования (пост 7): если я сделаю new Tree, конструктор сработает также, как и для new XML?

iNils 27.09.2006 19:41

Цитата:

Сообщение от Alex T
только названием данных, а функционально ничем

А смысл? Я понимаю еще когда в параметрах addSon передается указатель на отца. А сам addSon вызывается не от отца, а от экземпляра дерева.

etc 27.09.2006 20:04

Цитата:

Сообщение от Alex T
если я сделаю new Tree, конструктор сработает также, как и для new XML?

Сначала нужно вызвать конструктор супер-класса XML.

Код:

class Tree extends XML {
 public function Tree(xml_text) {
  super(xml_text);
  // constructor of Tree class
 }
}


Nirth 27.09.2006 21:13

Короче говоря, тебе нужно XML дерево, где есть стандартные ноды, и уникальные?

Все достаточно легко, делаешь интерфейс INode
Делаешь класс Node, который реализует интерфейс INode и расширяет класс XMLNode

Далее, если тебе нужны стандартные ноды, ты просто стандартный Node.
Если нужны более функциональные ноды,то расришяешь класс Node.
Если для определеных нодов тебе не нужен Node, а скажем нужен Array или какой либо другой класс, то ты реализуешь интерфейс INode, и расширяешь тот класс который тебе нужен.

Примером может быть текстовый нод, где в качестве значения Base64 закодированное изображение, ты можешь расширить класс BitmapData, и реализовать INode.

Далее твой корневой эллемент уже сам создает ноды, но не по базовому классу а по интерфейсу для большего полиформизма.

если я правильно понял задачу


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

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