Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Реализация Wizard


Автор: DemoCode 17.1.2006, 15:35
Вот впервые столкнулся с программированием на Java, т.к. я работаю Delphi программером, и вдруг необходимо сделать приложение для мобильного телефона. Пробовал MIDlet Pasacl, но очень он ограничен (там даже нет динамических массивов), вот решил заняться Java.

Передо мной стоит задача написать "мастера", т.е. выводить формы с вопросами и дать пользователю возможность отвечать на них. Вопросы разбиты на группы и выводить надо группу целиком, а затем после ответа переходить к следующей группе. Возник вопрос, как удобнее это реализовать?
1) Создавать на каждую группу вопросов новую форму и по нажатии далее устанавливать другую форму; или
2) На одной форме выводить группы вопросов с полями для ответа, при нажатии далее скрывать их (как? можно ли в J2ME скрывать контролы формы, не разрушая их? Иначе значения ответов надо хранить в переменных).

Второе, вопрос состоит из названия группы и собственно массива строк - текстов вопросов. Можно ли в Java создавать записи (как в Delphi) или структуры (как в Си)? Или надо создавать отдельный класс? Если да, то как надо инициализировать массив экземпляров этого класса, учитывая, что от содержит массив строк, количество элементов в котором будет отличаться в каждом экземпляре класса?

Спасибо.

Автор: batigoal 17.1.2006, 15:55
Цитата(DemoCode @ 17.1.2006, 16:35 Найти цитируемый пост)

Или надо создавать отдельный класс? Если да, то как надо инициализировать массив экземпляров этого класса, учитывая, что от содержит массив строк, количество элементов в котором будет отличаться в каждом экземпляре класса?

Да, нужно создать класс. Теоретически - можно вообще не добавлять в него методы, оставить только поля, это и будет структурой (записью). Но на практике обычно делаются как минимум private-поля и методы get/set для них.

Массивы в Java, конечно, есть, однако гораздо чаще используется одна из стандартных коллекций.
Код

class Element
{
  private int field1;
  private String field2;
  
  Element(int field1, String field2)
  {
    this.field1 = field1;
    this.field2 = field2;
  }
}

class Test
{
  public testMethod()
  {
     ArrayList list = new ArrayList();
     Element element = new (1,"first");
     list.add(element);
  }
}


Правда, я не знаю, какие из Java-коллекций поддерживаются в J2ME.

Насчет инициализации - по умолчанию все ссылки инициализируются null-значениями, простые типы нулями, пустой строкой и т.п. То при такой записи:
Код

Element element;

element получит значение null, а вот при таком, например:
Код

Element element1 = new Element (1, "first");
Element element2 = element1;

element1 и element2 будут указывать на один и тот же реальный объект.
Добавлено @ 15:58
Цитата(DemoCode @ 17.1.2006, 16:35 Найти цитируемый пост)

Иначе значения ответов надо хранить в переменных

Я бы, например, так и так хранил бы их в переменных. Имхо, интерфейс должен быть отдельно, логика - отдельно.

Автор: DemoCode 17.1.2006, 16:01
Lamer George, большое спасибо.
А как быть с формами? 1 или 2? Или по-другому лучше?

Автор: javastic 17.1.2006, 16:08
Я бы сделал отдельно на каждый шаг свою форму, особенно если в каждой из форм есть какие-то свои проверки введённых данных. На мой взгляд проще управлять формами, чем потом манипулировать отображением и скрытием контролов (при определённых событиях) на форме.

Автор: DemoCode 17.1.2006, 16:18
Цитата(javastic @ 17.1.2006, 17:08 Найти цитируемый пост)

Я бы сделал отдельно на каждый шаг свою форму, особенно если в каждой из форм есть какие-то свои проверки введённых данных. На мой взгляд проще управлять формами, чем потом манипулировать отображением и скрытием контролов (при определённых событиях) на форме.

Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)