PDA

Просмотр полной версии : Помогите разобраться с классами


sereg
06.04.2009, 11:07
Всем привет, проблема заключается в следующем.
Мне надо реализовать два класса:
1) Хранит информацию о графической фигуре, т.е высота, ширина, цвет, различные подписи и тд.
2) Класс, отвечающий за рисование данных фигур.Т.е. у этого класса должны быть методы:
- setData - читаем данные из xml
- setAType - выбираем как именно рисовать
- Draw - соответственно рисуем

Проблема в следующем. Занимаюсь флэшем две недели и точно не знаю как классы будут между собой взаимодействовать, т.е. не знаю как при чтении данных методом второго класса, записывать их в переменные первого класса, отвечающего за граф фигуры + заранее не известно сколько надо будет рисовать фигур.
Может у кого-нибудь есть какие идеи как это можно реализовать?

Заранее спасибо!

Stargazer
06.04.2009, 18:05
А в чём необходимость разделять содержимое и методы их обработки?
Если у вас запланировано ровно 2 класса - предлагаю совместить их в 1. Если планируете в дальнейшем расширять число фигур - сделайте базовый класс и напишите в нём все основные методы. Потом можете расширяться новыми классами по мере необходимости.

Занимаюсь флэшем две недели и точно не знаю как классы будут между собой взаимодействовать

Практически также как и в большинстве других распространённых языков.
Основное отличие (в AS2), которое мне приходит на память - так это указатели на метод класса. Если планируете сохранять указатели на методы класса - то можете потерять контекст самого класса (this будет разрешаться не в тот объект).

Типизация в AS слабая (не просто слабая, а плохая), поэтому нужно внимательнее смотреть за возможными вытекающими ошибками.

sereg
06.04.2009, 19:13
В том то все и дело, что надо обязательно делать два таких класса...

Stargazer
06.04.2009, 19:57
не знаю как при чтении данных методом второго класса, записывать их в переменные первого класса, отвечающего за граф фигуры + заранее не известно сколько надо будет рисовать фигур.

записывать в переменные:

myInstance.myVar= myVal

объявлять переменные в классе:

public var myVar:Type;
либо
private var myVar: Type;

свойства:

private var _myProperty:Type;
public function get myProperty():Type{
return _myProperty;
}

public function set myProperty(v:Type){
_myProperty= v;
}