Программирование мобильных телефонов на Java



Программирование мобильных телефонов на Java

         

Классы



1.2.1. Классы



Стержнем всех программ Java являются классы, на которых основывается объектно-ориентированное программирование. Вы по сути уже знаете, что такое классы, но пока об этом не догадываетесь. В предыдущем разделе мы говорили об объектах, ставя в пример устройство всего компьютера. Каждый объектов, из которых собран компьютер, является представителем своего класса. Например, класс Мониторов объединяет все мониторы вне зависимости от их типов, размеров и возможностей, а один какой-то конкретный монитор, стоящий на вашем столе и есть объект класса мониторов. Такой подход позволяет очень легко моделировать всевозможные процессы в программировании, облегчая решение поставленных задач. Например, имеется четыре объекта четырех разных классов: монитор, системный блок, клавиатура и колонки. Чтобы воспроизвести звуковой файл необходимо при помощи клавиатуры дать команду системному блоку, само же действие по даче команды вы будете наблюдать визуально на мониторе и, в итоге, колонки воспроизведут звуковой файл. То есть любой объект является частью определенного класса и содержит в себе все имеющиеся у этого класса средства и возможности. Объектов одного класса может быть столько, сколько это необходимо для решения поставленной задачи.

 


Комментарии



1.3.1. Комментарии



В классе Telefon в телах обоих методов имеется запись после двух слешей: //. Такая запись обозначает комментарии, которые будут игнорироваться компилятором, но нужны для читабельности кода. Чем больше информации вы закомментируете по ходу написания программы, тем больше у вас будет шансов вспомнить через год, что вы хотели сделать.

Комментарии в Java могут быть трех видов, это: //, /*...*/ и /**...*/. Комментарии, записанные с помощь оператора // должны располагаться в одной строке:



// Одна строка !!! Ошибка! На вторую строку переносить нельзя! // Первая строка // Вторая строка // ... // Последняя строка

Комментарии, использующие оператор /*...*/ могут находится на нескольких строках. В начале вашего комментария поставьте /*, а в конце, когда закончите комментировать код, поставьте оператор * /.

Последний вид комментария /**...*/ используется при документировании кода и также может располагаться на любом количестве строк.

 


Конструктор суперкласса



1.10.1. Конструктор суперкласса



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

Когда в программе происходит вызов конструктора, то вызов осуществляется согласно всей иерархии наследования. Первым вызывается конструктор самого первого суперкласса и опускается ниже по все иерархии наследования. Но иногда необходимо обратиться к ближайшему конструктору суперкласса и тогда используется ключевое слово super. Рассмотрим небольшой пример.

// суперкласс Nokia class Nokia { // конструктор суперкласса Nokia // тело класса Nokia } // подкласс NokiaSeries60 class NokiaSeries60 extends Nokia  { // конструктор подкласса NokiaSeries60 NokiaSeriesGO(int a, int b) ; // тело подкласса NokiaSeries60 } // подкласс Nokia6600 для суперкласса NokiaeSeries60 class Nokia6600 extends NokiaSeries60 { // конструктор подкласса Nokia6600 Nokia6600 (short f, short b, short c) { super (a, b) // тело конструктора } } // подкласс Nokia6100 для суперкласса NokiaeSeries60 class Nokia6100 extends NokiaeSeries60 { //конструктор подкласса Nokia6100 Nokia6100 (char a, char b) { super (a, b) // тело конструктора } // тело подкласса Nokia6100 }

Если вы желаете воспользоваться конструктором ближайшего суперкласса, в конструкторе подкласса первым должно идти ключевое слово super с параметрами для необходимого конструктора суперкласса. Ключевое слово super имеет двойную смысловую нагрузку и может использоваться не только для вызова конструктора суперкласса. Второй вариант использования ключевого слова super, заключается в доступе к невидимому члену суперкласса. Сейчас мы коснулись  так называемого вопроса видимости. Вы не задумывались над тем, что будет, если методы или переменные в суперклассе и подклассе будут совпадать по именам? Дело в том, что если подкласс будет иметь одинаковые названия любых членов класса, то он будет использовать только свои члены класса. Все данные суперкласса окажутся недоступными или невидимыми в силу совпадения названий. Для этих целей может быть использовано слoво super. Посмотрите на пример иллюстрирующий способ его использования:

// суперкласс Siemens class Siemens { int a, b; } // подкласс SiemensMC62  class SiemensMC62 extends Siemens { int a, b; // конструктор подкласса SiemensMC62 SiemensMC62 (int c, int d) { super.a = с; // для а в суперклассе super.b = d; // для b в суперклассе a = с; // для а подкласса b = d; // для b подкласса } }

Использование ключевого слова super очень похоже на обращение объекта класса к методам и переменным. Когда необходимо получить доступ к членам суперкласса, имеющим одинаковые названия, воспользуйтесь ключевым словом super или поступайте проще - давайте различные имена для членов суперкласса и подкласса.

В языке Java существует еще одно ключевое слово this, выполняющее похожие действия. При помощи этого ключевого слова можно произвести вызов любого другого конструктора того же класса либо использовать для указания ссылки на параметр, отсутствующий в конструкторе класса.

Подводя итог темы наследования необходимо упомянуть о классе Object. В языке Java все классы наследуются от большого суперкласса Objec. Это происходит автоматически и беспокоится о явном наследовании при помощи ключевого слова extends не нужно.

 



Оператор while



1.8.1. Оператор while



Синтаксическая запись оператора while выглядит следующим образом:

while (условие) { // действия }

Также имеет место выполнение определенного предусловия, но в отличие от оператора if/else, данная конструкция построена на циклах проверки условия. Когда программа доходит до оператора while, если предложенное условие истинно, происходит выполнение всех действий в блоке из фигурных скобок {...}. После выполнения этих действий, снова происходит очередная проверка условий после оператора whilе и если условие опять истинно, происходит повторное выполнение действий в блоке. Действия в блоке выполняются до тех пор, пока условие не станет ложным, тогда происходит выход из цикла while. В основном все циклы управляются при помощи так называемых счетчиков. Рассмотрим не большой пример:

int i = 0; while (i < 10) { // действия i + +; }

Сначала переменной i присваивается значение 0, далее происходит проверка условия i<10, если переменная i меньше цифры 10, выполняются все действия в блоке цикла. В конце блока переменная i увеличивается на 1и вновь проверяется условие в цикле. И так ровно десять, раз для нашего примера. Переменная i служит счетчиком для цикла while. Отсутствие операции по увеличению переменной i на единицу приведет к бесконечному циклу, поскольку 0 всегда будет меньше десяти. В циклах так же можно использовать оператор декремента, например:

int. i = 10; while (i>0)  { // действия i --; }

Те же действия, но уже в обратную сторону. Но все-таки чаще всего используется оператор декремента.

В цикле while имеется возможность использования булевых переменных, содержащих значения false или true. После оператора while происходит проверка предусловия, то можно воспользоваться булевой переменной, например:

boolean i = true, while (i) { // действия }

Переменная i истинна, ей присвоено значение true, поэтому происходит выполнение цикла whilе. Единственное о чем необходимо позаботиться - это о выходе из такого цикла, поскольку переменная i истинна, то цикл while будет выполняться бесконечно и такие циклы носят названия бесконечных циклов.

Напоследок хочу еще обратить ваше внимание на оператор равно ==. Если записать цикл таким образом:

int i = 0 while (i = = 5) { // действия i + +; }

То получится вполне работоспособный цикл, а вот если вы ошибетесь или по привычке воспользуетесь классическим вариантом оператора равно =, использующимся в математике, то у вас будет проблема в виде бесконечного цикла.

int i =0 while (i = 5) { // действия i++; }

В предусловии происходит присвоение переменной i значения 5, а оттого, что это действие не запрещено, то произойдет выполнение блока цикла. В конце которого значение i увеличится на один, но в предусловии после оператора while, переменной i новь будет присвоено значение пять - это пример простого бесконечного цикла и как следствие, классическая ошибка, случающаяся с начинающими программистами.

 


Интерфейс Certificate



2.10.1. Интерфейс Certificate



Общий сертификат связи.

Методы

 String getlssuer() - получает используемый сертификат; long gefeNotAf ter () - получает момент времени после которого сертификат использовать нельзя;  long getNotBe f ore ()- получает момент времени, до которого сертификат использовать нельзя;  String getSerialNumber () - получает серийный номер сертификата;  String getSigAlgName () - получает имя используемого алгоритма записи данного сертификата;  String getSubject() - получает название субъекта сертификата; "  String getType() - получает тип сертификата;  String getVersion() - получает версию сертификата.


2.10.2. Исключение


 Certif icateExceptio - обобщенный вид ошибок, возникший при использовании данного сертификата.

 


Интерфейс Choice



2.5.1. Интерфейс Choice



Содержит набор методов создающих возможность выбора заданных элементов

Методы

 int append (String str.ingPart, Image imagePart) - добавляет элемент к набору элементов в конец всего имеющегося списка элементов; void delete (int elementNum) - удаляет элемент по заданному номеру;  void deleteAll() - удаляет все элементы;  int getFitPolicy () - предоставляет предпочтительную экранную позицию;  Font getFont (int elementNum) - получает шрифт для элемента заданного по номеру;  Image getlmagetint elementNum) - получает изображение для элемента заданного по номеру;  int getSelectedFlags(boolean[] selectedArray_return) -производит запрос на состояние элементов массива;  int getSelectedlndex () - получает выбранный индекс элемента;  String getString (int elementNum) - получает строку текста по заданному номеру;  void insert(int elementNum, String stringPart, Image imagePart) - производит вставку элемента по заданному номеру в набор имеющихся элементов;  boolean .isSelected (int elementNum) - получает логическое значение, определяющее выбор того или иного элемента из набора элементов;  void set(int elementNum, String stringPart, Image image Part) - устанавливает новую строку текста с изображением по заданному номеру, заменяя предыдущую запись;  void setFitPolicy (int fitPolicy) - устанавливает предпочтительную экранную позицию;  void setFont(int elementNum, Font font) - устанавливает шрифт для заданного элемента;  void setSelectedFlags(boolean[] selectedArray)-устанавливает состояние элементов массива;  void setSelectedlndex(int elementNum, boolean selected) -устанавливает состояние элемента;  int size() - определяет количество элементов в наборе элементов.


Константы

 static int EXCLUSIVE - эксклюзивный выбор;  static int IMPLICIT - неявный выбор;  static int MULTIPLE - множественный выбор;  static int POPUP - всплывающий вид выбора; static int TEXT_WRAP_DEFAULT - текстовое сопровождение элемента будет находиться по умолчанию;  static int TEXT_WRAP_OFF - текстовое сопровождение элемента должно находится на одной строке;  static int TEXT_WRAP_ON - текстовое сопровождение элемента находится на любом количестве строк.


2.5.2. Интерфейс CommandListener



Реализует возможность обработчика событий.

Метод

 void commandAct ion (Command c, Displayable d) -обработчик событий.


2.5.3. Интерфейс ItemCommandListener



Реализует возможность получения событий от объектов класса Item.

Метод

 void commandAct ion (Command с, Item item) - обработчик событий.


2.5.4. Интерфейс ItemStateListener



Используется при получении событий о состоянии объектов класса Item устроенных в Form.

Метод

 void itemStateChanged(item item) - определяет состояние объекта класса Item.


2.5.5. Класс Alert



Создает различные информационные сообщения.

Конструкторы 

 Alert (String title) - создает пустое уведомление с заголовком;  Alert(String title, String alertText, Image alertlmage, AlertType alertType) - создает уведомление с заголовком, текстом, изображением и типом уведомления. :


Методы

 void addCommand(Command cmd) - добавляет команду;  int getDefaultTimeout () - получает время для представления уведомления;  Image get Image () - получает изображение для экрана, представленного классом Alert;  Gauge getlndicator () —этот метод позволяет воспользоваться графическим измерителем класса Gauge;  String getstring()- получает текстовую строку;  int getTimeout () - получает заданное время для представления уведомления;  AlertType getType() - определяет тип используемого уведомления;   void removeCommand (Command cmd) - удаляет команду;  void setCommandLis'tener (CommandListener 1) - устанавливает обработчик событий;  void setlmage (Image img) — устанавливает изображение;  void setlndicator (Gauge indicator) - устанавливает индикатор измерителя для использования класса Gauge;  void setstring (String str) - устанавливает строку текста;  void setTimeout (int time) - устанавливает время;  void setType (AlertType type) - устанавливает тип уведомлений или информационных сообщений.


Константы

 static Command DISMISS_COMMAND - команда отклонена;  static int FOREVER - определяет постоянный показ уведомления.


2.5.6. Класс AlertType



Отображает тип уведомления.

Конструктор

 protected AlertType () - закрытый Конструктор подкласса.


Метод

 boolean playSound (Display display) - воспроизводит звук. Константы ;  static AlertType ALARM - тревога;  static AlertType CONFIRMATION - подтверждение;  static AlertType ERROR - ошибка;  static AlertType INFO - информация;  static AlertType WARNING - предупреждение.


2.5.7. Класс Canvas



Абстрактный класс, обеспечивающий графическую прорисовку различных элементов на экране телефона.

Конструктор

 protected Canvas () - создает новый объект класса Canvas.


Методы

 int getGameAction (int keyCode) -связывает игровые действия с заданным ключевым кодом;  int getKeyCode (int gameAct ion) -получает ключевой код игровых  действий;  String getKeyName (int keyCode) - получает ключевой код для клавиши;  boolean hasPointerEvents () - проверяет устройство на поддержку работы с указателем;  boolean hasPointerMotionEvents () - проверяет поддержку устройством перемещения указателя;  boolean hasRepeatEvents () - проверяет устройство на поддержку работы с повторными событиями; :  protected void hideNotify ()- выполняет запрос после удаления объекта класса Canvas с дисплея;  boolean isDoubleBuff ered()- осуществляет двойную буферизацию;  protected void keyPressed(int keyCode) - вызывается при нажатии клавиши;  protected void keyReleased (int keyCode) - вызывается при отпускании нажатой клавиши;  protected void keyRepeated(int keyCode) - повторное нажатие клавиши;  protected abstract void paint(Graphics g) - прорисовка или рендеринг графики на экране телефона;  protected void pointerDragged(int x, int у) -определяет перемещение курсора;  protected void pointerPressedfint x, int у) -определяет позицию курсора, в которой должно производится нажатие определенной клавиши;  protected void pointerReleased(int x, int у) -определяет позицию курсора в момент отпускания определенной клавиши;  void repaint () - повторяет прорисовку;  void repaint(int x, int у, int width, int height) —повторяет прорисовку заданной области;  void serviceRepaints () - повтор прорисовки дисплея;  void setFullScreenMode(boolean mode) - контроль над полноэкранным режимом отображения;  protected void showNotify() - выполняет запрос до вывода объекта класса Canvas на дисплей;  protected void sizeChanged(int w, int h) - изменяет размер.


Константы

 static int DOWN - движение вниз;  static int FIRE - обычно используется в играх и реализует стрельбу из оружия;  static int GAME_A - игровая клавиша А;  static int GAME_B - игровая клавиша В;  static int GAME_C - игровая клавиша С;  static int GAME_D - игровая клавиша D;  static int KEY_NUM0 - клавиша 0;  static int KEY_NUM1-клавиша 1;  static int KEY_NUM2 - клавиша 2;  static int KEY_NUM3 - клавиша 3;  static int KEY_NUM4 - клавиша 4;  static int KEY_NUM5 - клавиша 5;  static int KEY_NUM6 - клавиша 6;  static int KEY_NUM7 - клавиша 7;  static int KEY_NUM8 - клавиша 8;  static int KEY_NUM9 - клавиша 9;  static int KEY_POUND - клавиша #;  static int KEY_STAR - клавиша *;  static int LEFT - движение влево;  static int RIGHT - движение вправо;  static int UP - движение вверх.


2.5.5. Класс ChoiceGroup



Встраиваемая группа выбираемых, элементов. Интегрируется в класс Form, наследуется от класса Item и реализует интерфейс Choice.

Конструктор

 ChoiceGroup (String label, int choiceType) - создает пустой список элементов группы, определяя заголовок и тип группы элементов;  ChoiceGroup(String label, int choiceType, String[] string-Elements, Image [] imageElements) - создает группу элементов, определяя заголовок, тип группы элементов, текст и изображение для каждого элемента группы.


Методы

 int append (String stringPart, Image imagePart) -добавляет элемент в группу;  void delete {int elementNum) - удаляет заданный элемент из группы;  void deleteAll() — удаляет все элементы;  int. getFitPolicy () - предоставляет предпочтительную экранную позицию;  Font getFont(int elementNum) - получает используемый шрифт элемента группы;  Image getlmage (int elementNum) - получает изображение для элемента группы;  int getSelectedFlags(boolean[]selectedArray_return) - возвращает значение Boolean для группы элементов;  int getSelectedlndex () - возвращает индекс выбранного элемента группы;  String getString (int elementNum) - получает строку текста по номеру;   void insert(int elementNum,String stringPart,Image imagePart) - вставляет элемент в группу;  boolean isSelected (int elementNum) - получает выбранную логическую величину;  void set(int elementNum, String stringPart, Image imagePart) - устанавливает текст и изображение в заданный элемент группы, при этом удаляя предыдущую запись;  void setFitPolicy (int fjtPolicy) - устанавливает предпочтительную экранную позицию;  void setFonttint elementNum, Font font) - устанавливает шрифт заданному элементу;  void setSelectedFlags(boolean[] selectedArray) — устанавливает состояние элементов группы;  void setSelected!ndex(int elementNum, boolean selected) -устанавливает особое состояние для элемента группы при использовании множественного типа;  int size () - возвращает количество используемых элементов группы.


2.5.9. Класс Command



Инкапсулирует командные действия, при этом не определят фактические действия на команды, а лишь содержит информацию.

Конструкторы

 Command(String label, int commandType, int priority) -создает команду для дальнейшей обработки. Команда содержит: название, тип и приоритет выполнения;  Command (String sho.rtLabel, String longLabel, int commandType, int priority) — создает команду для дальнейшей обработки. Команда содержит: короткое и длинное название, тип и приоритет выполнения.


Методы

int getCommandType () - получает тип используемой команды;  String getLabel() - получает метку или название команды;  String getLongLabel () — получает длинную метку или название команды;  int get Priority () - получает установленный приоритет команды.


Константы .

static int BACK - назад; static Int CANCEL - отмена; static int EXIT - выход; static int HELP - помощь; static int ITEM - новый экран, ассоциирующийся с экраном от которого происходит переход; static int OK - хорошо; static int SCREEN - новый экран; static int STOP - стоп.


2.5.10. Класс Custom Item



Создает возможность в отображении новых графических элементов встроенных в класс Form.

Конструктор

 protected Customltem( String label) - Конструктор абстрактного класса Customltem.


Методы

 int getGameAction(int keyCode) - получает игровые действия по коду клавиши телефона;  protected int getlnteractionModes() - получает все доступные режимы взаимодействия;  protected abstract int getMinContentHeight() - получает минимальную высоту заданной области дисплея;  protected abstract int getMinContentWidth() -получает минимальную ширину заданной области дисплея;  protected abstract int getPrefContentHeight(int width) -получает предпочтительную высоту заданной области дисплея;  protected abstract int getPrefContentWidth(int height) -получает предпочтительную ширину заданной области дисплея;  protected void hideNotify () - уведомляет о недоступности;  protected void invalidate () - сигнализирует об изменении размера или местонахождения элемента; protected void key Pressed (int keyCode)-обрабатывает нажатие клавиши;  protected void keyReleased(int keyCode) - обрабатывает отпускание клавиши;  protected void keyRepeated(int keyCode) - обрабатывает повторное нажатие клавиши;  protected abstract void paint(Graphics g, int w, int h) -рисует компоненты;  protected void pointerDragged(int x, int у) -осуществляет поддержку перьевого ввода;  protected void pointerPressed(int x, int у) - в месте установки указателя были произведены действия по нажатию определенной клавиши;  protected void pointeirReleased (int x, int у)-в месте установки указателя были произведены действия по отпусканию нажатой клавиши;  protected void repaint () - перерисовывает экран;  protected void repaint (int x, int y, int w, int h) -перерисовывает заданную область экрана;  protected void showNotify() - уведомление о возможности получения действий;  protected void sizeChanged (int w, int h) - изменяет размер.


Константы

 protected static int KEY_PRESS - нажатие клавиши;  protected, static int KEY_RELEASE - отпускание клавиши;  protected static int KEY_RE'PEAT - повторное нажатие клавиши;  protected static int NONE - нет действий;  protected static int POINTER_DRAG - перетаскивание; .  protected static int POINTER_PRESS - указатель нажат;  protected static int POINTER_RELEASE - указатель отпущен;  protected static int TRAVERSE_HORIZONTAL - горизонтальный обход;  protected static int TRAVERSE_VERTICAL - вертикальный обход.


2.5.11. Класс DateField



Класс, представляющий работу с датой и временем. Интегрируется в класс Form, наследуется от класса Item.

Конструкторы

 DateField (String label, int mode) - создает объект класса DateField, с указанием метки и режима отображения объекта;  DateField(String label, int mode, TimeZone timeZone) -создает объект класса DateField, с указанием метки, режима отображения объекта и часового пояса.


Методы

 Date getDate() - возвращает текущую дату;  void setDate(Date date) - устанавливает новую дату;  int getlnputMode () - получает установленные компоненты DATE, TIME или DATA_TIME;  void setlnputMode (int mode) - устанавливает компоненты DATE, TIME или DATE_TIME.


Константы

 static int DATE - дата;  static int DATE_TIME - дата и время;  static int TIME - только время.


2.5.12. Класс Display



Менеджер дисплея определяющий, какой из объектов будет представлен на дисплее.

Методы

 void callSerially(Runnable r) -производит запрос на вызов метода run () для объекта класса Runnable;  boolean f lashBacklight (int duration) - создает эффект подсветки;  int getBestlmageHeight (int imageType) - получает оптимальную высоту для изображения на экране;  int g-etBestlmageWidthfint imageType) - получает оптимальную ширину для изображения на экране;  int getBorderStyle (boolean highlighted) - штриховой стиль бордюра;  int getColor(int colorSpecif ier) - возвращает цвет;  Displayable getCurrent () - получает текущий объект Displayable для используемого мидлета;  static Display getDisplay(MIDletm) - получает -уникальный объект Display для используемого мидлета;  boolean isColor () - получает информацию о поддержке цвета в мобильном устройстве;  int numAlphaLevels () - получает количество альфа-прозрачных уровней;  int numColors () - получает количество цветов поддерживаемых мобильным устройством;  void setCurrent(Alert alert, Displayable nextDisplayable) - делает видимым на экране объект класса Alert;  void setCurrent(Displayable nextDisplayable) - делает видимым на экране последующий объект класса Displayable;  void setCurrentltemdtem item) - делает видимым на экране объект класса Item;  boolean vibrate (int duration) - запрос на поддержку вибрации.


Константы

 static int ALERT - тип изображений для уведомлений;  static int CHOICE_GROUP_ELEMENT - тип изображения для класса ChoiceGroup;  static int COLOR_BACKGROUND - цветовой компонент, используется методом getColor ();  static int COLOR_BORDER - цветовой компонент, используется методом getColor();  static int COLOR_FOREGROUND - цветовой компонент, используется методом getColor ();  static int COLOR_HIGHLIGHTED_BACKGROUND - цветовой компонент, используется методом getColor ();  static int COLOR_HIGHLIGHTED_BORDER - цветовой компонент, используется методом .getColor ();  static int COLOR_HIGHLIGHTED_FOREGROUND - цветовой компонент, используется методом getColor ();  static int LIST_ELEMENT - тип изображения для класса List.


2.5.13. Класс Displayable



Абстрактный класс, содержит иерархию классов пользовательского интерфейса.

Методы

 void addCommand (Command cmd) — добавляет команду;  int get Height () - получает высоту доступной области экрана в пикселях;  Ticker getTicker () - получает бегущую строку;  String getTitle() - получает заголовок;  int getWidth() - получает ширину доступной области экрана в пикселях;  boolean isShown() - проверяет видимость объекта на экране;  void removeCommand (Command cmd) - удаляет команду;  void setCommandListener (CommandListener 1) - устанавливает обработчик событий;  void setTicker (Ticker ticker) - устанавливает бегущую строку;  void setTitle (String s) - устанавливает заголовок;  protected void sizeChanged(int w, int h) - изменяет видимую область дисплея.


2.5.14. Класс Font



Класс шрифтов.

Методы

 int charsWidth(char[] ch, int offset, int length) - применяется для правильного планирования использования шрифта на экране дисплея;  int charWidth (char ch) - получает ширину шрифта;  int getBaselinePosition () - вычисляет расстояние от верхней кромки текста до опорной позиции в пикселях;  static Font getDefaultFont () - получает системный шрифт, используемый устройством по умолчанию;  int getFace () - получает начертание шрифта используемого устройством по умолчанию;  static Font getFont(int f ontSpecif ier) - используется классом Customltem для получения специального шрифта;  static Font geltFont(int face., int style, int size) -получает шрифт с указанием начертания, стиля и размера;  int getHeight () - получает высоту щрифта;  int getSize() - получает размер шрифта;  int getStyle() - получает стиль шрифта;  boolean isBold() - возвращает значение true, если используется Bold;  boolean isltalic () - возвращает значение true, если используется Italic;  boolean isPlain() - возвращает значение true, если используется Plain;  boolean isUnderlined() -возвращает значение true, если используется Underlined;  int stringWidth (String str) - устанавливает строку текста;  int substringWidth(String str, int offset, int len) -устанавливает подстроку текста.


Константы

 static int FACE_MONOSPACE - шрифт с небольшим интервалом;  static int FACE_PROPORTIANAL - пропорциональный шрифт;  static int FACE__SYSTEM - системный шрифт;  static int FONT_INPUT_TEXT - текст ввода;  static int FONT_STATIC_TEXT - заданный по умолчанию шрифт;  static int SIZE_LARGE - большой шрифт;  static int SI ZE_MEDIUM - средний шрифт;  static int SIZE_SMALL - маленький шрифт;  static int STYLE_BOLD - жирный шрифт;  static int STYLE_ITALIC - курсив;  static int STYLE_PLAIN - обычный шрифт;  static int STYLE.JJNDERLINED - подчеркнутый шрифт.


2.5.15. Класс Form



Этот класс создает пустую форму, в которую интегрируются классы пользовательского интерфейса. Конструкторы

 Form (String title) - создает новую пустую форму;  Form(String title, Item[] items) -создает новую форму с заданным заголовком и установленными компонентами класса Item.


Методы

 int append (Image img) — добавляет в форму одно изображение;  int append (Item item) — этот метод добавляет любой из доступных компонентов класса Items созданную форму;  int append (String str) - добавляет в форму строку;  void delete (int itemNum) - удаляет компонент ссылающийся на itemNum;  void deleteAll() - удаляет все компоненты с имеющейся формы;  Item get (int itemNum) - получает позицию выбранного компонента;  int getHeight () — возвращает высоту экрана в пикселях доступную для встраиваемых компонентов;  int getWidth() - возвращает ширину экрана в пикселях доступную для встраиваемых компонентов;  void insert (int itemNum, Item item) - вставляет компонент в форму до определенного компонента;  void set(int itemNum, Item item) - устанавливает компонент, . ссылающийся на компонент itemNum, заменяя при этом предшествующий компонент;  void setltemStateListener(ItemStateListener iListener) - устанавливает переменную iListener для формы, заменяя при этом предыдущую переменную iListener;  int size ()-получает количество компонентов в форме.


2.5.16. Класс Gauge



Представляет графическое течение процесса, своего рода датчик или счетчик.

Конструктор

 Gauge (String label, boolean intera'ctive, int maxValue, int initialValue) - создает графическое течение процесса с заданной меткой, режимом и максимальным и минимальным значением в работе.


Методы

 void addCommand (Command cmd) - добавляет команду;  int getMaxValue () - получает значение максимального диапазона работы процесса;  int getValue ()-получает текущее значение в процессе работы;  boolean islnteractive () - определяет возможность изменения установленного счетчика;  void setDefaultCommand(Command cmd) - задает команду по умолчанию для компонентов Item;  void setltemCommandListener(ItemCommandListener 1) —устанавливает обработчик событий;  void setLabel (String label) - устанавливает метку для элемента;  void setLayout (int layout) - устанавливает директивы для элемента;  void setMaxValue (int maxValue) - устанавливает максимальное значение течение процесса;  void setPreferredSize(int width, int height) -задает ширину и высоту для графического представления всего течения процесса;  void setValuefint value) - устанавливает текущее значение процесса.


Константы

 static int CONTINUOUS_IDLE - непрерывное и неактивное состояние с неопределенным диапазоном работы;  static int CONTINUOUS_RUNNING - непрерывное активное состояние с неопределенным диапазоном работы;  static int INCREMENTAL_IDLE - увеличивающееся и неактивное состояние с неопределенным диапазоном работы;  static int INCREMENTAL_UPDATING - увеличивающееся и постоянно модифицируемое состояние с неопределенным диапазоном работы;  static int INDEFINITE - максимальное значение с неопределенным диапазоном работы.


2.5.17. Класс Graphics



Предоставляет возможность рисования графических элементов на экране мобильного устройства.

Методы

 void clipRect(int x, int у, int width, int height) -отсекает заданный прямоугольник;  void copyArea(int x_src, - int y_src, int width, int. . height, int x_dest, int y_dest, int anchor) - копирует прямоугольную область из установленных значений в параметрах x_src, y_src, width, height, в новую область x_dest, y_dest;  void drawArc(int x, int y, int width, int height, int startAngle, int аrсАngle) - рисует контур дуги в виде эллипса;  void drawChar(char character, int x, int y, int anchor) -рисует символ;  void drawChars(char[] data, int offset, int length, int x, int y, int anchor) - рисует массив символов;  void drawlmage (Image img, int x, int y, int anchor) -рисует изображение;  void drawLine (int xl, int yl, int x2 , int y2) -рисует линию из точки x1 и y1 до точки х2 и у2;  void drawRegion(Image src, int x_src, int y_src, int width, int height, int transform, int x_dest, int y_dest, int anchor) - копирует изображения в заданную область на экран телефона;  void drawRGB(int[] rgbData, int offset, int scanlength, int x, int y, int width, int height, boolean process-Alpha) - получает цвет в представлении ARGB и сохраняет в массиве данных;  void drawRoundRect(int x, int у, int width, int height, int arcWidth, int arcHeight) - рисует контур прямоугольника, используя закругленные углы;  void drawstring (String str, int x, int y, int anchor) -рисует строку текста с заданным цветом и размером шрифта;  void drawSubstring(String str, int offset, int len, int x, int y, int anchor) - рисует подстроку текста с заданным цветом и размером шрифта;  void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) - рисует заполненную цветом дугу;  void fillRect(int x, int y, int width, int height)-рисует заполненный цветом прямоугольник;  void fillRoundRect(int x, int y, int width, int height, int arcWidth, i-nt arcHeight) - рисует заполненный прямоугольник, используя закругленные углы;  void fillTriangle(int x1, int y1, int x2 , int y2 , int х3, int у3) - рисует заполненный цветом треугольник;  int getBlueCompone.nt () - получает синий компонент цвета;  int g_etClipHeight () - получает высоту для текущей области отсечения;  int getClipWidth () - получает ширину для текущей области отсечения;  int getClipX() - получает координату по оси X для текущей области отсечения;  int getClipY ()-получает координату по оси Y для текущей области отсечения;  int getColor() - получает текущий цвет;  int getDisplayColor (int color) - получает цвет для отображения;  Font getFont () - получает текущий шрифт;  int getGrayScale () - получает значение полутонов;  int getGreenComponent () - получает зеленный компонент цвета;  int getRedComponent () - получает красный компонент цвета;  int getStrokeStyle ()- получает используемый штриховой стиль;  int getTranslateX() - получает координату по оси X для перемещенного контекста;  int getTranslateY()- получает координату по оси У для перемещенного контекста;  void setCliptint x, int y, int width, int height) -устанавливает отсечение заданной области экрана;  void s.etColor (int RGB) - устанавливает цвет при помощи значения RGB;  void setColor( int red, int green, int blue) - назначает цвет при помощи трех цветовых компонентов red, green и blue;  void setF'ont (Font font) - устанавливает заданный шрифт;  void setGrayScale (int value) - задает значение полутонов;  void setStrokeStyle (int style) - задает штриховой стиль рисуемому контексту, используя Константы SOLID и DOTTED;  void translate (int x, int у) - перемещает систему координат в точку (х, у).


Константы

 static int BASELINE - опорная линия привязки шрифта;  static int BOTTOM - нижняя линия привязки шрифта;  static int DOTTED - пунктирный стиль;  static int HCENTER - центральна линия привязки шрифта;  static int LEFT - левая сторона привязки шрифта;  static int RIGHT - правая сторона привязки шрифта;  static int SOLID - штриховой стиль;  static int TOP - верхняя линия привязки шрифта;  static int VCENTER - выравнивает по центру изображение.


2.5.18. Класс Image



Отвечает за загрузку и отображение любых видов графических изображений формата PNG.

Методы

 static Image createlmage(byte[] imageData, int image-Offset, int imageLength) - загружает изображение, учитывая смещение и длину в байтах;  static Image createlmage (Image source) - загружает изображение из файла;  static. Image createlmage(Image image, int x, int y, int width, int height, int transform) - загружает изображение в заданное место, определенное координатами с возможностью трансформации изображения;  static Image createlmage (InputStream stream) —загружает изображение из потока;  static Image createlmage(int width, int height) -загружает изображение в заданные размеры;  static Image createlmage (String name) - загружает изображение из ресурса;  static Image createRGBImage(int[] rgb, int width, int height, boolean processAlpha) - загружает изображение, учитывая цветовую компоненту ARGB;  Graphics getGraphics ()- создает графический объект для представления изображения;  int getHeight () - получает высоту изображения;  void getRGB(int[] rgbData, int offset, int scanlength, int x, int y, int width, int height) - получает цвет в представлении ARGB и сохраняет в массиве данных;  int getWidth() - получает ширину изображения; .  boolean isMutable() - проверяет изображение.


2.5.19. Класс Imageltem



Контейнер для загружаемых в приложение сложных графических изображений

Конструкторы

 ImageItem(String label, Image img, int layout, String altText) - создает объект класса Imageltem с заданной меткой, изображением, размещением и дополнительной строкой текста;  Imageltem(String label, Image image, int layout, String altText, int appearanceMode) - создает объект класса ImageItem с заданной меткой, изображением, размещением, дополнительной строкой текста, и режимом представления.


Методы

 String getAltText () - размещает текст;  int getAppearanceMode () - возвращает режим представления;  Image getlmage() - получает изображение;  int getLayout () - получает директивы для размещения изображений;  void set AltText (String text) -устанавливает дополнительный текст;  void setlmage (Image img) - устанавливает изображение;  void setLayout (int layout) - устанавливает директивы для размещения изображений'.


2.5.20. Класс Item



Суперкласс, содержащий ряд классов для их дальнейшей интеграции в класс Form.

Методы

 void addCommand (Command cmd) - добавляет команду;  String getLabel() - получает метку объекта Item;  int getLayout () - использует директивы для размещения компонентов в форме;  int getMinimumHeight () - получает минимальную высоту;  int getMinimumWidth () - получает минимальную ширину;  int getPref erredHeight ()- получает предпочтительную высоту;  int getPreferre.dWidth() - получает предпочтительную ширину;  void notifyStateChanged() - компонент, содержащийся в форме. Уведомляет объект ItemStateListener о своем состоянии;  void removeCommand (Command cmd) - удаляет команду из компонента.  void setDefaultCommand (Command cmd) - встроенная команда по умолчанию для данного компонента;  void setltemCommandListener (ItemCommandListener 1) —устанавливает обработку событий для компонента;  void setLabel (String label) - устанавливает назначенную метлу для компонента;  void setLayout (int layout) - устанавливает рассмотренные выше директивы для форматирования компонента;  void setPref erredSize (int width, int height) -устанавливает оптимальную высоту и ширину компонента.


Константы

 static int BUTTON - отображение элемента в виде кнопки;  static int HYPERLINK - отображение элемента в виде гиперссылки;  static int LAYOUT_2 - режим установки;  static int LAYOUT_BOTTOM - выравнивание по нижней стороне экрана;  static int LAYOUT_CENTER - выравнивание по центру экрана;  static int LAYOUT_DEFAULT - значение по умолчанию;  static int LAYOUT_EXPAND - увеличение ширины компонента;  static int LAYOUT_LEFT - выравнивание по левой стороне экрана;  static int LAYOUT_NEWLINE_AFTER - размещение на новой строке;  static int LAYOUT_NEWLINE_BEFORE - размещение в начале строки;  static int LAYOUT_RIGHT - выравнивание по правой стороне экрана:  static int LAYOUT_SHRINK - уменьшение компонента по ширине;  static int LAYOUT_TOP - выравнивание по верхней стороне экрана;  static int LAYOUT_VCENTER - выравнивание по центру экрана;  static int LAYOUT_VEXPAND - увеличение высоты для размещения компонента;  static int LAYOUT_VSHRINK - уменьшение высоты для размещения компонента;  static int PLAIN - установка режима появления первого плана для компонента.


2.5.21. Класс List



Создает список группы элементов.

Конструкторы

 List (String title, int listType) - формирует список с названием и типом созданного списка;  List(String title, int .listType, String[] stringElements, Image [] imageElements) - формирует список с названием, типом созданного списка, массивом строк и изображений для списка элементов.


Методы

 int append(String stringPart, Image imagePart)-добавление списка элементов;  void delete (int elementNum) -удаление заданного элемента из списка;  void deleteAll() - удаление всех элементов из списка;  int getFitPolicy() - получает привилегированную позицию;  Font getFont(int elementNum) - получает шрифт для заданного элемента в списке;  Image getlmage(int elementNum) - получает изображение для заданного элемента в списке;  int getSelectedFlags(boolean[] selectedArray_return) -возвращает состояние всех элементов в виде массива данных;  int getSelectedIndex() - получает выбранный индекс элемента в списке;  String getString (int elementNum) - получает строку текста для выбранного элемента из списка;  void insert(int elementNum, String stringPart, Image image-Part ) - вставляет элемент в список до указанного номера элемента в списке.  boolean isSelected(int elementNum) - получает выбранный элемент из списка;  void removeCommand(Cqmmand cmd) - удаляет команду для списка;  void set(int elementNum, String stringPart, Image image-Part ) - вставляет новый элемент в список взамен предшествующего;  void setFitPolicy (int fitPolicy) - устанавливает привилегированную позицию;  void setFont(int elementNum, Font font) - устанавливает шрифт заданному элементу в списке;  void setSelectCommand(Command command) - этот метод предназначен для работы с типом IMPLICIT;  Void setSelqctedFiags(boolean[] selectedArray)-устанавливает состояние выбранных элементов;.  void setSelectedlndex(int elementNum, boolean selected) -устанавливает индекс выбранного элемента в списке;  void setTicker (Ticker ticker) - устанавливает бегущую строку;  void setTitle (String s) - добавляет название;  int size() -с помощью этого метода можно узнать количество элементов в списке.


Константа

 static Command SELECT_COMMAND - команда по умолчанию для типа IMPLICIT.


2.5.22. Класс Screen



Суперкласс для всех высокоуровневых классов определяющих пользовательский интерфейс приложения.

2.5.23. Класс Spacer



Создает заданное пространство на экране.

Конструктор

 Spacer (int minWidth, int minHeight) - создает пространство на экране с заданной шириной и высотой.


Методы

 void addCommand( Command cmd) - добавляет команду;  void setDefaultCommand(Command cmd) - устанавливает команду по умолчанию;  void setLabel (String label) - устанавливает метку;  void setMinimumSize(int minWidth, int minHeight) -устанавливает минимальный размер для создаваемого пространства.


2.5.24. Класс String Item



Формирует текстовые строки.

Конструкторы

 Stringltem( String label, String text) - создает строку текста с заданной меткой;  Stfingltem(String label. String text, int appearanceMode) - создает строку текста с заданной меткой и режимом отображения.


Методы

 int getAppearanceMode () - возвращает заданный способ отображения текста на экране;  Font getFont () - получает шрифт текста;  String getText () - получает текст для класса Stringitem;  void setFont(Font font) - устанавливает шрифт текста;  void setPreferredSize(int width, int height) - задает ширину и высоту текста;  void setText (String text) - устанавливает текст для класса Stringitem.


2.5.25. Класс TextBox



Организовывает редактируемый текстовый контейнер.

Конструктор

 TextBox (String title, String text, int maxSize, ir.u constraints) - создает текстовый контейнер с заданным заголовком, строкой текста, максимальным размером символов и ограничением.


Методы

 void .delete (int offset, int length) - удаляет все символы из созданного контейнера;  int getCaret Posit ion () - получает текущую позицию нахождения указателя на экране;  int getChars (char [ ] data) - копирует содержимое контейнера TextBox в массив данных;  int getConstraints () - получает текущие ограничения для контейнера;  int getMaxSize() - возвращает максимальное число символов, установленное для контейнера TextBox;  String getString () - получает строку текста из содержимого контейнера TextBox;  void insert(char[] data, int offset, int length, int position) - вставляет массив символов в TextBox;  void insert (String src, int position) - вставляет строку текста в TextBox;  void setChars (char [] data, int offset, int length) -прописывает в TextBox массив символов;  void setConstraints (int constraints) - устанавливает ограничения;  void setlnitiallnputMode (String characterSubset) -задает напоминание;  int setMaxSize (int maxSize) - устанавливает максимальный размер для TextBox;  void setString( String text) - прописывает в TextBox строку текста;  void setTicker (Ticker ticker) - устанавливает бегущую строку;  void setTitle (String s) - устанавливает заголовок;  int size () - определяет .размер TextBox.


2.5.26. Класс TextField



Создает редактируемый текстовый контейнер, который встраивается в класс Form.

Конструктор

 TextField(String label, String text, int maxSize, int constraints) - создает текстовый контейнер с заданным заголовком, строкой текста, максимальным размером символов и ограничением, с последующей интеграцией в класс Form.


Методы

 void delete (int offset, int length) — удаляет все символы из созданного контейнера;  int getCaretPosition () — получает текущую позицию нахождения указателя на экране;  int getChars (char [ ] data) — копирует содержимое контейнера TextField в массив данных;  int getConstraints () - получает текущие ограничения для контейнера;  int getMaxSize () - возвращает максимальное число символов, установленное для контейнера TextField;  String getString() - получает строку текста из содержимого контейнера TextField;  void insert(char[] data, int offset, int length, int position) - вставляет массив символов в TextField;  void insert (String src, int position) - вставляет строку текста в TextField;  void setChars(char[] data, int offset, int length)-прописывает в TextField массив символов;  void setConstraints (int constraints) - устанавливает ограничения;  void setlnitiallnputMode(String characterSubset) - задает напоминание;  int setMaxSize (int maxSize) - устанавливает максимальный размер для TextField;  void setString (String text) - прописывает в TextField строку текста;  int size () - определяет размер TextField.


Константы

 static int ANY - определяет ввод любого текста;  static int CONSTRAINT_MASK - режим ограничения для маски;  static int DECIMAL - ввод дробных числовых значений;  static int EMAILADDR - используется при вводе электронного адреса;  static int INITIAL_CAPS_SENTENCE - начальный символ каждогo предложения будет печататься с заглавной буквы;  static int INITIAL_CAPS_WORD - начальный символ каждого слова будет печататься с заглавной буквы;  static int NON_PREDICTIVE - значение слов, не используемое в словаре, найдено не будет;  static int NUMERIC - для ввода только целочисленных значений;  static int PASSWORD - для ввода пароля;  static int PHONENUMBER - для ввода телефонного номера;  static int UNEDITABLE - редактирование не доступно;  static int URL - для ввода адреса сайта.


2.5.27. Класс Ticker



Создает на экране бегущую строку текста.

Конструктор

 Ticker (String str) - формирует бегущую строку текста.


Методы

 String getString() - получает строку текста, заданную для объекта класса Ticker;  void setString (String str) — устанавливает строку текста для отображения ее на экране с помощью объекта класса Ticker, заменяя ее новой строкой.

 


Интерфейс CommConnection



2.4.1. Интерфейс CommConnection



Находит последовательный порт.

Методы

 int getBaudRate () - получает скорость передачи данных в бодах для связи;  int setBaudRate (int baudrate) - устанавливает скорость передачи данных в бодах для связи.


2.4.2. Интерфейс Connection



Общий тип всей связи с сетью.

Метод

 void close () - закрывает имеющуюся связь с сетью.


2.4.3. Интерфейс ContentConnection



Определяет связь с потоком.

Методы

 String getEncoding () - определяет кодировку потока;  long getLength () - возвращает продолжительность соединения; ,  String getType () - возвращает тип соединения.


2.4.4. Интерфейс Datagram



Общий интерфейс дейтограммы.

Методы

 String getAddress () - получает адрес дейтограммы;  byte[] getData () - получает данные;  int getLength () - получает продолжительность соединения;  int getOffset() - получает смещение;  void reset () - производит сброс или обнуление указателей для чтения и записи;  void setAddress (Datagram reference) - устанавливает адрес дейтограммы, взятый с другой выбранной дейтограммы;  void setAddress (String addr) - устанавливает адрес дейтограммы;  void setData(byte[] buffer, int offset, int len) -устанавливает в буфере смещение и длину;  void setLength (int len) - устанавливает длину.


2.4.5. Интерфейс DatagramConnection



Определяет возможность связи дейтограммы.

Методы

 int getMaximumLength () - получает максимальную длину дейтограммы;  int getNominalLength () - получает номинальную длину дейтограммы;  Datagram newDatagram(byte[] buf, int size) - создает новый объект дейтограммы с указанным размером буфера;  Datagram newDatagram(byte [ ] buf, int size, String addr) -создает новый объект дейтограммы с указанным размером буфера и адресом ввода-вывода;  Datagram newDatagram(int size) - создает новый объект дейтограммы определенного размера;  Datagram newDatagram(int size, String addr) - создает новый объект дейтограммы определенного размера и с указанием адреса ввода-вывода;  void receive (Datagram dgram) — принимает дейтаграмму;  void send (Datagram dgram) - отсылает дейтаграмму.


2.4.6. Интерфейс HttpConnection



Декларирует Методы и Константы для протокола соединения HTTP.

Методы

 long getDate() - возвращает данные;  String getFilef) - возвращает часть файла по адресу URL;  String getHeaderField(int n) - возвращает заголовок файла по индексу;  String getHeaderField(String name) -возвращает заголовок файла по названию;  long getHeaderFieldDate(String name, long def) -возвращает значение заданного поля.для даты;  int getHeaderFieldlnt(String name, int def)-возвращает значение заданного поля для номера;  String getHeaderFieldKey (int n) - получает файл заголовка по ключу;  String getHost() - возвращает информацию о соединении;  long getLastModified() - возвращает значение модифицированного заголовка;  int getPort () - возвращает номер порта соединения;  String getProtocol () - возвращает имя протокола;  String getQuery() - возвращает запрос на соединение;  String getRequestMethqcK ) - определяет текущий метод произведенного запроса;  String getRequestProperty (String key) - возвращает свойства запроса для соединения;  irit getResponseCode()- возвращает код состояния протокола HTTP;  String getResponseMessage () - возвращает сообщение о коде состояния протокола HTTP;  String getURL () - возвращает адрес соединения;  void setRequestMethodf String method) - задает метод для запроса адреса;  void setRequestProperty (String key, String value) -устанавливает свойства производимого запроса.


Константы

 static String GET - метод соединения по протоколу HTTP;  static String HEAD- основной метод соединения по протоколу HTTP;  static int HTTP_ACCEPTED - запрос принят, но не был обработан;  static int HTTP_BAD_GATEWAY - недопустимый ответ от сервера;  static int HTTP_BAD_METHOD - не позволительный метод для запроса;  static int HTTP_BAD_REQUEST - запрос не был принят;  static int HTTP_CLIENT_TIMEOUT - запрос не произведен в момент ' связи с сервером;  static int HTTP_CONFLICT - запрос не закончен из-за конфликта;  static int HTTP_CREATED - запрос произведен;  static int HTTP_ENTITY_TOO_LARGE-отказ обработки запроса из-за большого размера;  static int HTTP_EXPECT_FAILED - запрос ожидания не выполнен;  static int HTTP_FORBIDDEN - запрос принят, но выполнен не будет; static int HTTP_GATEWAY_TIMEOUT-сервер не получил своевременный ответ;  static int HTTP_GONE - затребованный ресурс не найден;  static int HTTP_INTERNAL_ERROR - неожиданная ошибка на сервере;  static int HTTP_LENGTH_REQUIRED - отказ от приема запроса.


2.4.7. Интерфейс HttpsConnection



Декларирует Методы и Константы для безопасного сетевого соединения.

Методы

 int get Port ()- возвращает сетевой номер порта для соединения;  Securitylnfo getSecuritylnfo ()-получает информацию о безопасности связи.


2.4.8. Интерфейс InputConnection



Интерфейс для создания входной связи с сетью.

Методы

 DatalnputStream openData!nputStream() - открывает и возвращает поток ввода данных для конкретного соединения;  InputStream openlnputstream ()- открывает ^возвращает входной поток для конкретного соединения.


2.4.9. Интерфейс OutputConnection



Интерфейс для создания выходной связи с сетью.

Методы

 DataOutputStream openDataOutputStream() - открывает и возвращает поток вывода данных для конкретного соединения; OutputStream open0utputstream() - открывает и возвращает выходной поток для конкретного соединения.


2.4.10. Интерфейс SecureConnection



Определяет безопасную связь с сетью.

Метод

 Securitylnfo getSecuritylnfo ()-получает информацию о безопасности связи.


2.4.11. Интерфейс Securitylnfo



Имеет в своем составе методы для получения информации сетевой связи.

Методы

 String getCipherSuite () - возвращает название используемого шифра связи;  String getProtocolName () - получает имя используемого протокола соединения;  String ge.tProtocolVersion () - получает версию используемого протокола;  Certificate getServerCertif icate () - осуществляет возврат сертификата безопасности соединения.


2.4.12. Интерфейс ServerSocketConnection



Реализует связь с сервером.

Методы

 St-ring getLocalAddress () - получает локальный адрес связи с разъемом (socket);  int getLocal Port ()-получает локальный адрес связи с портом.


2.4.13. Интерфейс SocketConnection



Находит разъем (socket) для потока связи.

Методы

 String getAddress () - получает адрес связи;  String getLocalAddress() - получает локальный адрес связи;  int getLocalPort () - получает локальный порт соединения;  int getPort() - получает порт соединения;  int getSocketOption (byte option) - получает необходимую опцию разъема для создания соединения;  void setSocketOption (byte option, int value) -устанавливает необходимую опцию разъема для создания соединения.


Константы

 static byte DELAY - опция малого разъема (0);  static byte KEEPALIVE-опция поддержки особенностей разъема (2);  static byte LINGER - опция ждущего режима обработки вывода данных (1);  static byte RCVBUF - опция для определенного буфера получения (3);  static byte SNDBUF - опция для определенного буфера отправки (4).


2.4.14. Интерфейс StreamConnection



Этот интерфейс определяет связь с потоком и не имеет методов и констант.

2.4.15. Интерфейс StreamConnectionNotifier



Определяет возможность всей связи.

Метод

 StreamConnection acceptAndOpen () - возвращает разъем сервера, с которым произошло соединение.


2.4.16. Интерфейс UDPDatagramConnecJion



Реализует связь с дейтограммой.

Методы

 String getLocalAddress () - получает локальный адрес связи с дейтограммой;  int getLocalPort () - получает локальный порт связи с дейтаграммой.


2.4.17. Класс Connector



Класс для создания объектов связи.

Методы

 static Connection open(String name) - создает и открывает соединение;  static Connection open(String name, int mode) - создает и открывает соединение по адресу и режиму соединения;  static Connection open(String name, int mode, boolean timeout s) - создает и открывает соединение по адресу, режиму соединения и исключения времени ожидания связи;  static DatalnputStream openDatalnputStream(String name) — -создает и открывает входной поток данных;  static DataOutputStream openDataOutputStream(String name) - создает и открывает выходной поток данных;  static InputStream open!nputStream(String name) -создает и открывает входной поток;  static OutputStream openOutputStream(String name)-создает и открывает выходной поток.


Константы

 static int READ - режим доступа только для чтения данных;  static int READ_WRITE - режим доступа для чтения и записи данных;  static int WRITE - режим доступа только для записи данных;


2.4.18. Класс PushRegistry



Класс для поддержания списков связей.

 Методы

 static String getFilter(String connection) - получает заданный фильтр соединения;  static String getMIDlet(String connection) - получает заданный мидлет (MIDlet) для соединения;  static String[] listConnections(boolean available) -возвращает весь список подключений для комплекта мидлетов (MIDlet suite);   static long registerAlarm(String midlet, long time) -производит установку времени для запуска приложения;  static void registerConnection(String connection, String midlet, String filter) - производит установку времени для запуска соединения;  static boolean unregisterConnection(String connection) -удаляет регистрацию соединения.


2.4.19. Исключение


 ConnectionNotFoundException - указывает на отсутствие связи.

 


Интерфейс Control



2.7.1. Интерфейс Control



Осуществляет контроль над процессами.

2. 7.2. Интерфейс Controllable



Осуществляет контроль над объектами.

Методы

 Control getControl (String controlType) - получает объект, осуществляющий управление;  Control [] getControls() - получает совокупность объектов осуществляющих управление.


2.7.3. Интерфейс Player



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

Методы

 void addPlayerListener(PlayerListener playerListener) -осуществляет обработку событий от определенного проигрывателя;  void close () - закрывает проигрыватель;  void deallocate () - освобождает ресурс, занятый проигрывателем;  String getContentType()- получает тип аудио данных, воспроизводимых проигрывателем;  long getDuration () - получает размер аудио файла;  long getMediaTime () - получает время воспроизведения аудио данных;  int getstate() - определяет состояние проигрывателя;  void prefetch () - захватывает ресурсы для последующего воспроизведения данных; void realize () - создает проигрыватель без захвата ресурсов;  void removePlayerListener(PlayerListener playerListener) - удаляет установленный обработчик событий;  void setLoopCount (int count) - устанавливает цикличное воспроизведение аудио данных;  long setMediaTime (long now) - устанавливает время воспроизведения;  void start () - дает команду на воспроизведение;  void stop () - останавливает воспроизведение.


Константы

 static int CLOSED - закрывает проигрыватель;  static int PREFETCHED - захватывает ресурсы для воспроизведения;  static int REALIZED - приобретает информацию для воспроизведения;  static int STARTED - воспроизведение запущенно;  static long TIME_UNKNOWN - неизвестное время установки;  static int UNREALIZED - не произошло захвата ресурсов и информации для воспроизведения.


2.7.4. Интерфейс PlayerListener



Получает асинхронные события проигрывателя.

 Методы

 void playerUpdate(Player player, String event, Object eventData) - обновляет состояние проигрывателя.


Константы

 static String CLOSED - уведомляет о закрытии проигрывателя;  static String DEVICE_AVAILABLE - уведомляет о доступности проигрывателя;  static String DEVICE_UNAVAILABLE - уведомляет о недоступности проигрывателя;  static String DURATION_UPDATED - обновляет состояние;  static String END_OF_MEDIA - уведомляет о конце воспроизведения данных проигрывателем;  static String ERROR - уведомляет об ошибке;  static String STARTED - уведомляет о начале работы проигрывателя;  static String STOPPED — уведомляет о конце работы проигрывателя;  static String VOLUME_CHANGED - уведомляет о выборе громкости для воспроизведения.


2.7.5. Класс Manager



Менеджер системных ресурсов.

Методы

 static Player createPlayer(InputStream stream, String type ) - создает проигрыватель для воспроизведения аудио данных из потока;  static Player createPlayer(String locator) - создает проигрыватель для воспроизведения аудио данных из определенного файла;  static String[]getSupportedContentTypes(String protocol) - возвращает список доступных контекстных типов для протоколов;  static String[] getSupportedProtocols(String content_type) - возвращает список доступных протоколов для контекстных типов;  static void playTone(int note, int duration, int volume) -воспроизводит различные тональные звуки.


Константа

 static String TONE_DEVICE_LOCATOR - необходимая для последовательного воспроизведения тонов устройства.


2.7.6. Исключения


 MediaException - исключает ошибки в работе методов этого пакета.

 


Интерфейс Datalnput



2.3.1. Интерфейс Datalnput



Декларирует Методы для чтения простых типов во входном потоке данных.

Методы

 boolean readBoolean () - читает входной байт данных и если значение этого байта отлчно от 0, то возвращает true, иначе возвращается значение f.alse;  byte readByte() — производит чтение и возврат одного входного байта;  char readChar () - производит чтение и возврат одного входного символа;  void readFully (byte [] b) - производит чтение входных байт, размещая их в массиве данных;  void readFully (byte [] b, int off, int len) -производит чтение указанных входных байт параметра len из параметра b;  int readlnt () - производит чтение и возврат входных байт типа int (четыре байта);  long readLong () - производит чтение и возврат входных байт типа long (восемь байт);  short readShort () - производит чтение и возврат входных байт типа short (два байта);  inf readUnsignedByte () - производит чтение и возврат одного входного байта в диапазоне от 0 до 256;  int readUnsignedShort () — производит чтение и возврат двух входных байт в диапазоне от 0 до 256;  String readUTF () - читает строку текста в формате UTF-8;  int skipBytes (int n) - переходит по входному потоку, минуя пропущенные байты.


2.3.2. Интерфейс DataOutput



Декларирует Методы для записи простых типов в выходной поток данных.

Методы

 void write (byte [] b) - записывает в выходной поток массив байт;  void write (byte [] b, int off, int len) -производит запись определенных байт указанных в параметр len из параметра b выходного потока;  void write (int b) - производит запись в выходной поток восемь младших бит; .  void writeBoolean (boolean v) - записывает логическую переменную в выходной поток данных;  void writeByte (int v) - производит запись в выходной поток восемь младших бит;  void writeChar (int v) - производит запись в выходной поток данных значения типа char (один символ - это два байта);  void writeChars (String s) - производит запись в выходной поток данных строки текста;  void writelnt (int v) - производит запись в выходной поток данных значения типа int (четыре байта);  void writeLong (long v) — производит запись в выходной поток данных значения типа long (восемь байт);  void writeShort (int v) - производит запись в выходной поток данных значения типа short (два байта);  void writeUTF (String str) - записывает строку текста в выходной поток данных.


2.3.3. Класс ByteArraylnputStream



Совершает чтение входного потока байт из массива данных для дальнейшего размещения их в памяти.

Конструкторы 

 ByteArraylnputStream (byte [ ] buf) - создает объект класса ByteArraylnputStream, параметр buf будет содержать буфер данных;  ByteArraylnputStream(byte[] buf, int offset, int length) - создает объект класса ByteArraylnputStream. Параметр buf будет содержать буфер данных, параметр offset задает смещение от первого байта, а параметр length определяет максимальное значения буфера.


Методы

 int available ()-возвращает количество байт входного потока данных;  void close() - закрывает входной поток, попутно освобождая все захваченные ресурсы этим потоком;  void mark (int readAheadLimit) - устанавливает маркер в заданной позиции потока данных;  boolean markSupported() - проверяют объект класса ByteArraylnputStream на поддержку установки и сброса маркера;  int read () - производит чтение каждого последующего байта во входном потоке данных;  int read (byte [] b, int off, int len) - читает определенный байт, указанный в параметре len из параметра b входного потока данных;  void reset () - сбрасывает значение к установленному маркеру;  long skip (long n) - пропускает заданные байты входного потока.


Константы

 protected byte [] buf - массив байт;  protected int count - последний индекс для чтения из входного потока;  protected int mark - позиция или маркер во входном потоке данных;  protected int pos - последующий индекс для чтения из входного потока.


2.3.4. Класс ByteArrayOutputStream



Производит запись потока байт из памяти в массив выходных данных.

Конструкторы

 ByteArrayOutputStream() - создает новый выходной поток для записи в массив байт;  ByteArrayOutputStream (int size) - создает новый выходной поток для записи в массив байт с заданным размером.


Методы

 void close () - закрывает выходной поток, попутно освобождая все захваченные ресурсы этим потоком;  void reset () — сбрасывает в ноль счетчик выходных данных;  int size () - возвращает текущий размер буфера данных;  byte[] toByteArray () - создает массив байт;  String toString () -производит преобразование содержимого буфера в строку текста;  void write(byte[] b, int off, int leh) - записывает определенный байт, указанный в параметре len из параметра b в выходной лоток;  void write (int b) - записывает байт в выходной поток.


Константы

 protected byte [ ] buf-заданный буфер данных;  protected int count - количество байт в буфере.


2.3.5. Класс DatalnputStream



Этот класс наследуется от интерфейса Datalnput, реализуя при этом все его Методы.

Конструктор

 DatalnputStream (inputStream in) -создает новый входной поток данных.


Методы

 int available ()-возвращает Доступное количество байт для чтения из входного потока;  void close () — закрывает входной поток;  void mark (int readlimit)-маркирует заданную позицию во входном потоке;  boolean markSupported () - проверяет объект класса DatalnputStream на поддержку установки и сброса маркера;  int read () - производит чтение каждого последующего байта во входном потоке данных;  int read (byte [] b) - производит чтение байт из массива во входном потоке данных;  int read(byte[] b, int off, int len) - читает определенный байт, указанный в параметре len из параметра b входного потока данных;  boolean readBoolean() - читает входной байт данных и если значение этого байта отлично от 0, то возвращает true, иначе возвращается значение false;  byte readByte() - производит чтение и возврат одного входного байта;  char readChar () - производит чтение и возврат одного входного символа;  void readFully (byte [ ] b) - производит чтение входных байт, размещая их в массиве данных; void readFully (byte [] b, int off, int len)-производит чтение указанных входных байт параметра 1 en из параметра Ь;  int readlnt () - производит чтение и возврат входных байт типа int (четыре байта);  long readLong () - производит чтение и возврат входных байт типа long (восемь байт);  short readShort () - производит чтение и возврат входных байт типа short (два байта);  int readUnsignedShort () - производит чтение и возврат двух входных байт в диапазоне от 0 до 256; ,  String readUTF () - читает строку текста в формате UTF-8; Static String readUTF (Datalnput in) - производит чтение из входного потока строки символов;  void reset () - сбрасывает позицию маркера;  long skip (long n) - пропускает заданные байты входного потока;  int. skipBytes (int n) - переходит по входному потоку, минуя пропущенные байты.


Константа

 protected InputStream in - входной поток данных.


2.3.6. Класс DataOutputStream



Этот класс наследуется от интерфейса DataOutput, реализуя при этом все его Методы.

Конструктор

 DataOutputStream(OutputStream out) - создает новый выходной поток данных.


Методы

 voidclose() - закрывает выходной поток;  void flush() - производит сброс потока данных;  void write(byte[] b, int off, int len) - производит запись определенных байт указанных в параметре len из параметра b выходного потока;  void write (int b) - производит запись в выходной поток восемь младших бит;  void writeBoolean (boolean v) - записывает логическую переменную в выходной поток данных;  void writeByte (int v) - производит запись в выходной поток восемь младших бит;  void writeChar (int v) - производит запись в выходной поток данных значение типа char (один символ - это два байта);  void writeChars (String s) - производит запись в выходной поток данных строку текста;  void writelnt(int v) - производит запись в выходной поток данных значения типа int (четыре байта);  void writeLong (long v) - производит запись в выходной поток данных значения типа long (восемь байт);  void writeShort (int v) - производит запись в выходной поток данных значения типа short (два байта);  void writeUTF (String str) - записывает строку текста в выходной поток данных.


Константа

 protected OutputStream out - выходной поток данных.


2.3.7. КлассInputStream



Абстрактный класс, предназначенный для работы с входным потоком байт.

Конструктор

 InputStream() - Конструктор абстрактного класса InputStream.


Методы

 int available () - возвращает доступное количество байт для чтения из входного потока;  void close () - закрывает входной поток;  void mark(int readlimit) - маркирует заданную позицию в входном потоке;  boolean markSupported () - проверяют объекты на поддержку установки и сброса маркера;  abstract read ()- производит чтение каждого последующего байта во входном потоке данных;  int read (byte [ ] b) - производит чтение байт из массива во входном потоке данных;  intread (byte [] b, int off, int len) - читает определенный байт, указанный в параметре len из параметра b входного потока данных;  void reset() - сбрасывает позицию маркера;  long skip (long n) - пропускает заданные байты входного потока.


2.3.8. Класс InputStreamReader



Наследуется от класса Reader, реализуя Методы для чтения символьных данных входного потока с перекодировкой.

Конструкторы

 InputStreamReader (InputStream is) — создает объект класса InputStreamReader, используя кодировку по умолчанию;  InputStreamReader(InputStream is String enc)-создает объект класса InputStreamReader, используя кодировку, заданную в параметре еnс.


Методы

 void close() - закрывает поток;  void mark(int readAheadLimit) - маркирует позицию в потоке;  boolean markSupported() - определяет поддержку маркировки и сброса позиции в потоке;  int read () - производит чтение символа;  int read(char[] cbuf, int off., int len)- про изводит чтение символа в массив;  boolean ready () - определяет готовность потока на чтение данных из него;  void reset () - сбрасывает позицию маркера;  long skip (long n) - пропускает заданные символы.


2.3.9. Класс OutputStream



Абстрактный класс, предназначенный для работы с выходным потоком байт.

Конструктор

 OutputStream () - Конструктор абстрактного класса OutputStream.


Методы

void close () - закрывает выходной поток; void flush () - осуществляет сброс выходного потока; void write (byte [] b) - записывает массив байт в выходной поток; void writelbyte[] b, int off, int len) - производит запись определенных байт указанных в параметре len из параметра b выходного  потока; abstract void write (int b) - записывает определенный байт в выходной поток.


2.3.10. Класс OutputStreamWriter



Наследуется от класса Writer, реализуя Методы для записи символьных данных в выходной поток с перекодировкой. Конструкторы

 OutputStreamWriter (OutputStream os) - создает объект OutputStreamWriter, используя кодировку по умолчанию;  OutputStreamWriter (OutputStream os, String enc) -создает объект OutputStreamWriter, используя кодировку, заданную в параметре еnс.


Методы

 void close () - закрывает поток данных;  void flush () - сбрасывает поток данных;  void write (chart] cbuf, int off, int len) - производит запись определенных символов указанных в параметре len из параметра b выходного потока;  void write (int с) - записывает один символ;  void write (String str, int off, int len) - производит запись определенной части строки текста указанной в параметре len из параметра b выходного потока;


2.3.11. Класс PrintStream



Расширяет выходной поток способностью печати данных.

Конструктор

 PrintStream (OutputStream out) - формирует объект класса Print -Stream, отвечающий за создание нового потока печати.


Методы

 boolean checkError () - проверяет состояние потока;  void close() - закрывает поток данных;  void flush () - сбрасывает поток данных;  void print {boolean b) - производит печать логического значения;  void print (char с) - производит печать значения типа char;  void print (chart] s)-производит печать массива символов;  void print (int i) - производит печать значения типа int;  void print (long 1) - производит печать значения типа long;  void print (Object obj ) - производит печать объекта;  void print (String s) - производит печать строки текста;  void printlri() - производит печать, заканчивая переводом на новую строку;  void println (boolean x) - производит печать логического значения, заканчивая печать переводом на новую строку;  void println (char x) - производит печать значения типа char, заканчивая печать переводом на новую строку;  void println (char tx) - производит печать массива символов, заканчивая печать переводом на новую строку;  void println (int x) - производит печать значения типа int, заканчивая печать переводом на новую строку;  void println (long x) - производит печать значения типа long, заканчивая печать переводом на новую строку;  void println (Object x) - производит печать объекта, заканчивая печать переводом на новую строку;  void println (String x) - производит печать строки текста, заканчивая печать переводом на новую строку;  protected void setError() - приводит поток, содержащий некоторые ошибки к состоянию true;  void write(byte[]'buf, int off, int len) - производит запись определенных байт указанных в параметре len из параметра b потока печати;  void write (int b) - записывает байт в поток печати.


2.3.12. Класс Reader



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

Конструкторы

 protected Reader () - создает новый поток для чтения;  protected Reader (Object lock) - создает новый поток для чтения, синхронизирующийся с параметром lock.


Методы

 abstract void close () - закрывает поток данных;  void mark (int readAheadLimit) - маркирует определенную позицию в потоке;  boolean markSupported() - проверяет поддержку маркировки и сброса позиции в потоке;  int read () - производит чтение символа;  int read (char[] cbuf) - производит чтение массива символов;  abstract int read(char[] cbuf, int off, int len) - Производит чтение в массив;  boolean ready() - определяет готовность потока для чтения данных;  void reset () - сбрасывает позицию маркера;  long skip (long n) - пропускает заданные символы.


Константа

 protected Object lock - используется при синхронизации определенных действий в потоке.


2.3.13. Класс Writer



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

Конструкторы

 protected Writer () - создает новый символьный поток для записи данных;  protected Writer (Object lock) - создает новый символьный поток для записи данных»синхронизирующийся с параметром lock.


Методы

 abstract void close () - закрывает поток данных;  abstract void flush() - сбрасывает поток данных;  void write (char [] cbuf) — производит запись в массив символов;  abstract void write(char[] cbuf, int off, int len)-совершает запись заданной части массива символов;  void write (int с) - записывает один единственный символ;  void write(String str) - записывает строку текста;  void write(String str, int off, int len) - совершает запись заданной части строки текста.


Константа

 protected Object lock - используется при синхронизации определенных действий в потоке.


2.3.14. Исключения


 EOFException - сигнализируете конце файла;  interruptedIOException - сигнализирует о прерванном действии по вводу-выводу;  IOException - указывает на исключение ввода вывода;  UnsupportedEncodingException - указывает на невозможность перекодировки;  UTFDataFormat Except ion - сигнализирует о прочтении строки формата UTF-8.

 


Интерфейс Enumeration



2.2.1. Интерфейс Enumeration



Декларирует возможность доступа к элементам.

Методы

 boolean hasMoreElements () - проверяет соответствующие перечисления на наличие элементов;  Object nextElement () - возвращает последующий элемент перечисления в том случае, если перечисления содержат более одного элемента.


2.2.2. Класс Calendar



Необходим для работы с датой и временем, выполняет функции обыкновенного календаря.

Конструктор

 protected Calendar() - создает календарь. Язык и часовой пояс задаются по умолчанию.


Методы

 boolean after (Object when) - сравнивает два объекта и возвращает значение true в том случае, если время представленное объектом when, находится после времени представленного другим сравниваемым объектом;  boolean before (Object when) - сравнивает два объекта и возвращает значение true в том случае, если время представленное объектом when, находится до времени представленного другим сравниваемым объектом;  boolean equals (Object obj ) - сравнивает объекты;  int get(int field) - получает значение определенного поля, например, время, день, месяц, год;  static Calendar getlnstance () - получает параметры часового пояса и языка по умолчанию;  static Calendar getlnstance(TimeZone zone) - получает параметры часового пояса и языка данного региона;  Date getTime () - получает время;  protected long getTimelnMillis () - получает время по Гринвичу, производя запись в виде миллисекунд;  TimeZone getTimeZone () - определяет часовой пояс региона;  void set (int field, int value) - задает определенному полю значение времени;  void setTime (Date date) - устанавливает необходимую дату;  protected void setTimelnMillis (long millis) —устанавливает время по Гринвичу, производя запись в виде миллисекунд;  void setTimeZone (TimeZone Value) - устанавливает часовой пояс региона.


Константы

 stat ic int. AM — формат, отражающий запись времени до полудня;  static int AM_PM - формат, отражающий запись времени до полудня и после полудня;  static int APRIL - значение, указывающее месяц года Апрель;  static int AUGUST — значение, указывающее месяц года Август;  static int DATE - значение, указывающее день;  static int DAY_OF_MONTH - значение, указывающее день и месяц;  static int DAY_OF_WEEK - значение, указывающее день недели;  static int DECEMBER - значение, указывающее месяц года Декабрь;  static int FEBRUARY - значение, указывающее месяц года Февраль;  static int FRIDAY - значение, указывающее день недели пятницу;  static int HOUR - значение, указывающее время;  static int HOUR_OF_DAY - значение, указывающее время и день недели;  static int JANUARY - значение, указывающее месяц года Январь;  static int JULY-значение, указывающее месяц года Июль;  static int JUNE - значение, указывающее месяц года Июнь;  static int MARCH - значение, указывающее месяц года Март;  static int MAY — значение, указывающее месяц года Май;  static int MILLISECOND - формат записи времени в миллисекундах;  static int MINUTE - формат записи времени в минутах;  static int MONDAY - значение, указывающее день недели пятницу;  static int MONTH - месяц;  static int NOVEMBER - значение, указывающее месяц года Ноябрь;  static int OCTOBER - значение, указывающее месяц года Октябрь;  static int PM - формат, отображающий запись времени после полудня;  static int SATURDAY - значение, указывающее день недели суббота;  static int SECOND - устанавливает отображение времени в секундах;  static int SEPTEMBER - значение, указывающее месяц года Сентябрь;  static int SUNDAY - значение, указывающее день недели воскресенье;  static int THURSDAY - значение, указывающее день недели четверг;  static int TUESDAY - значение, указывающее день недели вторник;  static int WEDNESDAY - значение, указывающее день недели среда;  static int YEAR - значение, указывающее год.


2.2.3. Класс Date



Реализует возможность работы с датой.

Конструкторы 

 Date () - создает объект класса Date;  Date (long date) - создает объект класса Date с форматом записи .00:00:00.


Методы

 boolean equals (Object obj ) - сравнивает две даты;  long getTime () - получает время в миллисекундах;  int hashCode () - возвращает специальный код (хеш-код) объекта класса Date;  void setTimeflong time) - устанавливает время.


2.2.4. Класс Hashtable



Предоставляет возможность хранения объектов с доступом к ним по определенно заданному ключу.

Конструкторы

 Hashtable() - создает пустой объект класса Hashtable;  Hashtable (int initialCapacity) - создает объект класса Hashtable с заданной вместимостью.


Методы

 void clear () -очищает объект класса Hashtable от набора имеющихся ключей;  boolean contains (Object value) - определяет наличие различных ключей;  boolean containsKey (Object key) — определяет наличие определенного ключа;  Enumeration elements () - возвращает последовательность имеющихся элементов;  Object get (Object key) - получает необходимый объект, используя при этом заданный для этого объекта ключ;  boolean isEmpty() - проверяет объект класса Hashtable на наличие ключей;  Enumeration keys () — возвращает последовательность доступных ключей;  Object put (Object key, Object value) - сохраняет объект и за-i данный для этого объекта ключ;  protected void rehash () — увеличивает вместимость объекта класса Hashtable;  Object remove (Object key) - удаляет указанный ключ; G int size ()—определяет количество имеющихся ключей;  String toString() - возвращает строковое представление объекта класса Hashtable.


2.2.5. Класс Random



Генератор случайных чисел.

Конструкторы

 Random () - создает генератор случайных чисел;  Random (long seed) - создает объект класса Random, сгенерировав целое длинное число.


Методы

G protected int next (int bits) - генерирует следующее случайное число; . G int next Int ()-генерирует целое случайное число из заданной последовательности;  long nextLong () - генерирует целое длинное случайное число из заданной последовательности;  void setSeeddong seed() - устанавливает заданное начальное число для последующей генерации случайных чисел.


2.2.6. Класс Stack



Реализует функциональность стека.

Конструктор

 Stack () - создает пустой стек.


Методы

 boolean empty ()- проверяет пустой созданный стек или нет;  Obj ect peek () - просмотр стека;  Object pop () - удаляет последний объект из стека; Object push (Object item) - помещает объект в стек;  int search (Object о)- возвращает начальную позицию для первого объекта в стеке.


2.2.7. Класс Timer



Реализует возможность работы со временем по принципу таймера.

Конструктор

 Timer () - создает таймер.


Методы

 void cancel () - закрывает работу таймера;  void schedule (TimerTask task, Date time) — назначает задачу на заданное время;  void schedule(TimerTask task, Date firstTime, long period) - назначает задачу на заданное время, с ее последующим повторным выполнением. Частота повторений задается фиксированными промежутками времени;  void schedule (TimerTask task, long delay) - назначает выполнение задачи по прошествии заданного промежутка времени;  void schedule(TimerTask task, long delay, long period) — назначает выполнение задачи по прошествии заданного промежутка времени, с ее последующим повторным выполнением. Частота повторений задается фиксированными промежутками времени;  void scheduleAtFixedRate(TimerTask task, Date firstTime, long period) - назначает задачу на заданное время с ее последующим повторным выполнением. Частота повторений назначается относительно абсолютного времени;  void scheduleAtFixedRate(TimerTask task, long delay, long -period) - назначает выполнение задачи по прошествии заданного промежутка времени с ее последующим повторным выполнением; Частота повторений назначается относительно абсолютного времени.


2.2.8. Класс TimerTask



Планировщик задач.

Конструктор

 protected TimerTask () - создает новую задачу.


Методы

 boolean cancel () - отменяет выполнение задачи;  abstract void run() - определяет действие для выполнения планировщиком задач; long- scheduledExecutionTime() - возвращает время выполнения задачи.


2.2.9. Класс TimeZone



Устанавливает и определяет часовой пояс.

Конструктор

 TimeZone () - создает объект класса TimeZone.


Методы

 static String [] getAvailablelDs ()- получает доступные идентификаторы часового пояса;  static TimeZone getDefault () - получает часовой пояс региона;  String getlD() - получает идентификатор часового пояса;  abstract int getRawOffset() - получает время по Гринвичу для часового пояса местонахождения;  static TimeZone getTimeZone (String ID) - получает часовой пояс;  abstract boolean useDaylightTime ()- необходим для определения использования часовым поясом перехода на летнее время.


2.2.10. Класс Vector



Создает массивы любого размера. Имеет возможность изменять размер заданного массива.

Конструкторы

 Vector () - создает пустой массив для содержания объектов;  Vector (int initialCapacity) - создает массив объектов с указанной размерностью;  Vector(int initialCapacity, int capacityIncrement)-создает массив объектов с указанной размерностью и заданным размером дополнений к этому массиву;


Методы

 void addElement (Object obj ) - добавляет к массиву объектов ещё один объект;  int capacity () - узнает текущую вместимость заданного массива объектов;  boolean contains (Object elem) - определяет наличие указанного элемента в массиве объектов;  void copylnto (Object [] anArray) - копирует заданные элементы в массив объектов;  Object elementAt (int index) - возвращает искомый компонент по указанному индексу;  Enumeration elements () - возвращает число имеющихся элементов в массиве данных;  void ensureCapacity (int minCapacity) - увеличивает вместимость массива данных;  Object f irstElement () - возвращает самый первый элемент всего массива;  int indexOf (Object elem) - проверяет массив на присутствие объекта;  int indexOf (Object elem, int index) - проверяет массив на присутствие объекта по его индексу в массиве данных;  void insertElementAt (Object obj, int index) - вставляет объект в массив по заданному индексу;  boolean -isEmpty() - проверяет массив, не пустой ли он;  Object lastElement () - возвращает самый последний элемент всего массива данных;  int lastlndexOf (Object elem) — возвращает последний индекс данного элемента в массиве;  int lastlndexOf (Objevct elem, int index) - проверяет последнее присутствие объекта в массиве по его индексу;  void removeAllElements () - удаляет все элементы массива;  boolean removeElement (Object obj )-удаляет элемент массива;  void removeElementAt (int index) - удаляет элемент массива по индексу;  void setElementAt (Object obj, int index) — устанавливает элемент в массив по индексу;  void setSize(int newSize) - задает размер массива;  int size () - определяет размер массива;  String toString() - возвращает строковое представление массива данных;  void trimToSize () - уменьшает размерность массива.


Константы

 protected int capacitylncrement - автоматическое увеличение массива на заданное число элементов, то есть шаг увеличения массива;  protected int elementCount - заданное число элементов массива;  protected Object [] elementDatа -массив данных, в котором сохранены элементы массива.


2.2.11. Исключения


 EmptyStackException - указывает на пустой стек;  NoSuchElementException - указывает на отсутствие элементов в определенном перечислении.

 


Интерфейс RecordComparator



2.11.1. Интерфейс RecordComparator



Осуществляет сортировку записей.

Метод

 int compare (byte [] reel, byte[] rec2 )-сортирует записи.


Константы

 static int EQUIVALENT - две записи одинаковы;  static int FOLLOWS - первая запись больше второй записи;  static int PRECEDES - вторая запись больше чем первая.


2.11.2. Интерфейс RecordEnumeration



Реализует двунаправленный список записи.

Методы

 void destroy () - освобождает захваченные ресурсы;  boolean hasNextElement () - возвращает значение true, если имеются последующие записи;  boolean hasPreviousElement () - возвращает значение true, если имеются предшествующие записи;  boolean isKeptUpdated () - возвращает значение true в том случае. если сохраняются изменения в записи;  void keepUpdated (boolean keepUpdated) - устанавливает, возможно ли сохранение индексов записей при изменении, удалении или  добавлении записей;  byte [ ] nextRecord () - возвращает копию следующей записи в списке:  int nextRecordld () — возвращает идентификатор следующей записи в списке;  int numRecords () - возвращает число доступных записей;  byte[] previousRecord() - возвращает копию предыдущей записи в списке;  int previousRecord() - возвращает идентификатор предыдущей записи в списке;  void rebuild() -делает запрос для обновления списка доступных записей;  void reset () - сбрасывает индекс записи к первоначальному значению.


2.11.3. Интерфейс Record Filter



Определяет совпадения записей.

Метод

 boolean matches (byte [] candidate) - возвращает значение true, если кандидат соответствует заданному критерию.


2.11.4. Интерфейс RecordListener



Производит обработку событий связанных с изменением, добавлением и удалением записей.

Методы

 void recordAdded(RecordStore recordStore, int recordld) -вызывается после добавления записи;  void recordChanged(RecordStore recordStore, int recordld) - вызывай после изменения записи;  void recordDeleted(RecordStore recordStore, int recordld) — вызван после удаления записи.


2.11.5. Класс RecordStore



Производит запись данных.

Методы

 int addRecord(byte[] data, int offset, int numBytes) -добавляет новую запись в память мобильного устройства;  void addRecordListener(RecordListener listener)-добавляет обработчик событий;  void closeRecorclStore () - закрывает запись;  void deleteRecord(int recordld) -удаляет запись по идентификатору;  static void deleteRecordStore(String recordStoreName) -удаляет запись по имени;  long getLastModif ied () - возвращает последнее время изменения записи;  String getName () - получает имя записи;  int getNextRecordlD() - получает идентификатор последующей записи;  int getNumRecords () - получает количество доступных записей; byte[] getRecord (int recordld) - возвращает копию записи;  int getRecord(int recordld, byte[] buffer, int offset) -возвращает данные записи;  int getRecordSize (int recordld) - получает размер заданной записи;  int getsize() - получает размер всех записей;  int getSizeAvailable() - получает количество доступной памяти для записи;  int getVersion() - получает версию записи:  static String [] listRecordStores ()-возвращает список записей;  static RecordStore openRecordStore(String recordStoreName, boolean create if Necessary)- открывает память для записи;  static RecordStore openRecordStore(String recordStoreName, boolean createlfNecessary, int authmode, boolean writable) - открывает память для записи;  static RecordStore openRecordStore(String recordStoreName, String vendorName, String suiteName) - открывает память для записи;  void removeRecordListener(RecordListener listener) -удаляет обработчик событий;  void setMode(int authmode, boolean writable) - изменят режим доступа;  void setRecord(int recordld, byte[] newData, int offset, int numBytes) - вводит данные в запись.


Константы

 static int AUTHMODE_ANY - позволяет осуществить доступ для любого комплекта мидлетов;  static int AUTHMODE_PRIVATE - позволяет осуществить доступ только из данной программы.

 



Интерфейс Runnable



2.1.1. Интерфейс Runnable


 Использование интерфейса Runnable обеспечивает создание потока в программах.


Метод

 void run () - запускает поток в приложении.


2.1.2. Класс Boolean



Объектно-ориентированный класс-оболочка или как еще говорят «обвертка» для типа Boolean. Конструктор

 Boolean (boolean value) - создает объект класса Boolean.


Методы

 boolean booleanValuet) - возвращает значение объекта класса Boolean;  boolean equals (Object obj)- возвращает значение true, если это объект класса Boolean;  int hashCode () - возвращает специальный код (хеш-код) объекта класса Boolean;  String toString () - возвращает объект класса String для булевой переменной. *


2.1.3. Класс Byte



Объектно-ориентированный класс оболочка, для простого типа Byte. Конструктор

 Byte (byte value) - создает объект класса Byte.


Методы

 byte byteValue() - возвращает значение объекта класса Byte;  boolean equals (Object obj )- возвращает значение в байтах для объекта класса Byte;  int hashCode () - возвращает специальный код (хеш-код) объекта . класса Byte;  static byte parseByte (String s)- возвращает значение в байтах для указанного объекта String;  static byte parseByte (String s, int radix) - возвращает значение в байтах для указанного объекта String на основе системы исчисления;  String toString () - возвращает объект класса String, представленный значением Byte.


Константы

 static byte MAX_VALUE - максимальное значение в байтах;  static byte MIN_VALUE - минимальное значение в байтах.


2.1.4. Класс Character



Объектно-ориентированный класс-оболочка для простого типа Char. Конструктор

 Character (char value) - создает объект класса Character.


Методы

 char charValue() - возвращает значение объекта класса Character;  static int digit (char ch, int radix) — возвращает числовое значение на основе системы исчисления;  boolean equals (Object obj) - сравнивает объект;  int hashCode () - возвращает специальный код (хеш-код) объекта класса Character;  static boolean isDigitfchar ch) - узнает, является ли значение ch числовым значением; Static boolean isLowerCase(char ch) — определяет, является ли символьное значение строчным;  static boolean isUpperCase (char ch) - определяет, является ли символьное значение заглавным;  static char toLowerCase (char ch) - переводит символ в нижний регистр;  String toString () - возвращает объект класса String, представленный значением Character;  static char toUpperCase(char ch) - переводит символ в верхний регистр.


Константы

 static int MAX_RADIX - максимально доступное преобразование;  static char MAX_VALUE - максимальное значение;  static int MIN_RADIX - минимально доступное преобразование;  static char MIN_VALUE - минимальное значение.


2.1.5. Класс Class



Виртуальная Java машина создает объекты этого класса, которые представляют интерфейсы и классы языка Java. Методы

 static Class forName (String с1assName)- возвращает объект Class по названию класса;  String getName ()-возвращает имя интерфейса, класса, массива классов, простых типов представляемых классом Class;  InputStream getResourceAsStream(String name) — берет искомый ресурс с заданным именем;  boolean isArray() - определяет, является ли объект массивом классов;  boolean isAssignableFrom(Class els) - определяет, является ли интерфейс или класс суперинтерфейсом или суперклассом;  boolean islnstance (Object obj) - определяет совместимость указанных объектов;  boolean islnterface () - определяет, каким типом интерфейса представлен данный класс;  Object newlnstance () - создает новый экземпляр класса;  String toString () - конвертирует объект к виду String.


2.1.6. Класс Integer



Объектно-ориентированный класс для простого типа int.

Конструктор

 Integer (int value) - создает объект класса Integer.


Методы

 byte byteValue () - возвращает значение в байтах;  boolean equals (Object obj) - сравнивает объекты;  int hashCode() - возвращает.специальный код (хеш-код) объекта класса Integer;  int intValue ()- возвращает значение числа как тип int;  long longValue () - возвращает значение числа как тип long;  static int parselnt (String s) — извлекает целое десятичное число из заданного объекта класса String; *  static int parselnt (String s, int radix) - извлекает целое десятичное число со знаком с использованием основания системы исчисления из заданного объекта класса String;  short shortValue() - возвращает значение числа как тип short;  static String toBinaryString(int i)-создает строковое представление целочисленного значения в виде целого числа без знака в двоичном представлении;  static String toHexString(int i) - создает строковое представление целочисленного значения в виде целого числа без знака в шестнадцатеричном представлении;  static String toDctalString(int i)- создает строковое представление целочисленного значения в виде целого числа без знака в восьмеричном представлении;  String toString() - возвращает объект класса String, представленный значением целого числа;  static String toString(int i) — возвращает заданный объект класса String как целое число;  static String toString(int i, int radix) — создает строковое представление целого числа на основании системы исчисления;  static Integer valueOf (String s) - возвращает новый объект класса Integer, инициализированный значением s;  static Integer valueOf (String s, int radix) -возвращает новый объект класса Integer, инициализированный значением s на основе системы исчисления.


Константы

 static int MAX_VALUE - максимальное значение;  static int MIN_VALUE - минимальное значение.


2.1.7. Класс Long



Объектно-ориентированный класс-оболочка для простого типа long. Конструктор

 Long (long value) - создает объект класса Long.


Методы

 boolean equals (Object obj ) - сравнивает объекты;  int hashCode () - возвращает специальный код (хеш-код) объекта класса Long; long longValue () - возвращает значение числа как тип long;  static long parseLong (String s) - извлекает большое целое десятичное число из заданного объекта класса String;  static long parseLongf String s, int radix) - извлекает большое целое десятичное число со знаком с использованием основания системы исчисления из заданного объекта класса String;  String toString() - возвращает объект класса String представленный значением большого целого числа;  static String toString (long i)- возвращает заданный объект класса String как целое большое число;  static String toString (long i, int radix) - создает строковое представление большого целого числа на основании системы исчисления.


Константы

 static long MAX_VALUE - максимальное значение;  static long MIN_VALUE -минимальное значение.


2.1.8. Класс Math



Математический класс, содержащий несколько методов для различных математических операций. Очень сильно урезан в отличие от класса Math из Java 2 SE.

Методы

 static int abs (int a) - возвращает абсолютное значение из параметра int а заданное целочисленным значением;  static long abs (long a) - возвращает абсолютное значение из параметра long а заданное большим целочисленным значением;  static int max (int a, int b)- возвращает одно большее из двух значений типа int;  static long max (long a, long b) - возвращает одно большее из двух значений типа long;  static int min(int a, int b)- возвращает одно меньшее из двух значений типа int;  static long min(long a, long b) - возвращает одно меньшее из двух значений типа long.


2.1.9. Класс Object



Суперкласс для всех классов Java. Все классы наследуются от класса Object и являются его подклассами

Методы

 boolean equals (Object obj ) - сравнивает объекты;  Class getClass() - возвращает класс объекта;  int hashCode() - возвращает специальный код (хеш-код) для объекта;  void notify () - пробуждает отдельно взятый поток;  void notify-All () - пробуждает все имеющиеся потоки;  String toString () - возвращает строковое представление данного объекта;  void wait () - приостанавливает работу потока;  void wait (long timeout) - приостанавливает работу потока на время заданное в миллисекундах;  void wait (long timeout, int nanos) - приостанавливает работу потока на время заданное в миллисекундах, учитывая также дополнительное время заданное в наносекундах.


2.1.10. Класс Runtime



Класс времени исполнения приложения.

Методы

 void exit (int status) - осуществляет выход из работающего приложения;  long f reeMemory () - возвращает количество доступной памяти в мобильном устройстве;  void gc () - производит сборку мусора;  static Runtime getRuntime ()- возвращает объект времени исполнения во время работы программы;  long totalMemory () -возвращает доступный объем памяти для виртуальной Java машины.


2.1.11. Класс Short



Объектно-ориентированный класс-оболочка для простого типа Short. Конструктор

 Short (short value) — создает объект класса Short.


Методы

 boolean equals (Object obj ) - сравнивает объекты;  int hashCode () - возвращает специальный код (хеш-код) объекта . класса Short;  static short parseShort (String s) - извлекает короткое целое десятичное число из заданного объекта класса String;  static short parseShort (String s, int radix) -извлекает короткое целое десятичное число с использованием основания системы исчисления из заданного объекта класса String;  short shortValue () - возвращает значение Переменной;  String toString () - возвращает объект класса String представляющий короткое целое значение.


Константы

 static short MAX_VALUE - максимальное значение;  static short MIN_VALUE - минимальное значение.


2.1.12. Класс String



Создает символьные строки текста. Конструкторы

 String() - создает пустой объект класса String, то есть объект не имеет определенной символьной последовательности;  String (byte [] bytes) - создает объект класса String из указанного массива байт в соответствующей кодировке поддерживаемой системой;  String (byte [] bytes, int off, int len.) - создает объект класса String из указанного массива байт в соответствующей кодировке поддерживаемой системой. Параметр off - это индекс первого байта, от которого происходит конвертация, и параметр len указывает на количество байт для конвертации;  String (byte [] bytes, int off, int len, String enc) -создает объект класса String из указанного массива байт в соответствующей кодировке поддерживаемой системой. Параметр off - это индекс первого байта, от которого происходит конвертация, параметр len указывает на количество байт для конвертации и параметр еnc на вид кодировки;  String (byte [] bytes, String enc) -создает объект класса String из массива байт в заданной кодировке указанной в параметре еnс;  String (char [ ] value) - создает строку текста из массива символов;  String (char [] value, int offset, int count) - создает строку текста из массива символов. Параметр offset - это начало массива и параметр count - длинна массива;  String (String value) - создает объект класса String со значением определенным в параметре value; String (StringBuf f er buffer) - создает объект класса String со значением из параметра buffer, являющегося объектом класса StringBuffer.


Методы

 char charAt(int index) - возвращает символ по заданному индексу в параметре index, отсчет идет от значения 0;  int compareTo (String anotherString) - сравнивает две строки на основании лексографии;  String concat (String str) - конкатенация двух строк;  boolean endsWith( String, suffix) - тестирует строку на окончание подстроки suffix;  boolean equals (Object anObject) - сравнивает строки;  byte[] getBytes() - конвертирует строку текста в массив байт в кодировке по умолчанию заданной системой устройства;  byte[] getBytes (String enc) - конвертирует строку текста в массив байт в кодировке указанной в параметре еnс;  void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) — производит копирование символов строки в массив символов;  int hashCode () - возвращает специальный код (хеш-код) для строки текста;  int indexOf (int ch) - возвращает положение первого символа в строке текста;  int indexOf(int ch, int fromlndex) - возвращает положение первого символа в строке текста и производит поиск по заданному индексу в параметре fromlndex;  int indexOf (String str) - возвращает положение первого символа  в подстроке текста;  int indexOf (String str, int fromlndex) - возвращает положение первого символа в подстроке текста и производит поиск по заданному индексу в параметре fromlndex;  int lastlndexOf (int ch) - возвращает положение последнегосимвола в подстроке текста;  int lastlndexOf (int ch, int fromlndex) — возвращает положение последнего символа в лодстроке текста и производит поиск по заданному индексу в параметре fromlndex;  int length ()- возвращает длину определенной строки текста;  boolean . regionMatches (boolean ignoreCase, int toffset, String other, int oof f set, int len) - проверяет заданную область текста на совпадение; String replace(char oldChar, char newChar) - производит замену строки текста на новую строку из параметра oldChar в параметр newChar;  boolean startsWith ('String prefix) - проверяет строку на совпадение с начальным указанием префикса;  boolean startsWith(String prefix, int toffset)-проверяет строку на совпадение с начальным указанием префикса и индекса;  String substring (int beginlndex) - возвращает новую строку текста, являющуюся подстрокой этого текста;  String substring(int beginlndex, int endlndex) -возвращает новую строку текста,, являющуюся подстрокой этого текста заданной начальным и конечным индексами;  char [ ] toCharArray () - конвертирует строку текста в массив символов;  String toLowerCase() - приводит строку текста к строчному написанию;  String toString ()-возвращает строковый объект;  String toUpperCase () - приводит строку текста к заглавному написанию;  String trim () - удаляет имеющиеся пробелы в начале и конце строки;  static String valueOf (boolean b) - возвращает строковое представление логической переменной;  static String valueOf (char с) - возвращает строковое представление переменной типа char;  static String valueOf (char [] data) - возвращает строковое представление массива значений типа char;  static String valueOf(char[} data, . int offset, int count) - возвращает строковое представление массива значений типа char с определенного начала по заданной длине;  static String valueOf (int i) - возвращает строковое представление переменной типа int;  static String1 valueOf(long 1)- возвращает строковое представление переменной типа long;  static String valueOf (Object obj ) - возвращает строковое представление объекта.


2.1.13. Класс StringBuffer



Класс StringBuffer может содержать строки символов любого размера.

Конструкторы

 stringBuffer () -создает пустой объект класса StringBuffer, то есть объект не имеет определенной символьной последовательности, с длинной не более шестнадцати символов;  StringBuffer (int length) - создает объект класса StringBuffer с заданной длинной;  StringBuffer (String str) - создает объект класса StringBuffer со значением из параметра str, являющегося объектом класса String.


Методы

 StringBuffer append (boolean b) - добавляет в конец буфера логическую переменную в строковом представлении;  StringBuffer append (char с) - добавляет в конец буфера символ;  StringBuffer append (char [] str) - добавляет в конец буфера массив символов;  StringBuffer append(char[] str, int offset, int len) -добавляет в конец буфера массив символов по начальному индексу и длине массива символов;  StringBuffer аррепсЦ int i)-добавляет в конец буфера значение типа int в строковом представлении;  StringBuffer append (long 1) - добавляет в конец буфера значение типа long в строковом представлении;  StringBuffer append (Object obj) - добавляет в конец буфера объект в строковом представлении;  StringBuffer append(String str) -добавляет в конец буфера строку текста;  int capacity() - возвращает имеющеюся свободную емкость буфера;  char charAt(int index) - возвращает символ по заданному индексу в переменной index;  StringBuffer delete (int start, int end) - удаляет подстроку из строки по указанному начальному значению в параметре start и конечному в параметре end;  StringBuffer deleteCharAt (int index) - удаляет символ из строки по указанному индексу в параметре index;  void ensureCapacity(int. minimumCapacity) - задает минимальную емкость буфера;  void getChars(int srcBegin, int srcEnd, char[] dst,- int dstBegin) - копирует в символьный массив содержимое строкового буфера;  StringBuffer insert(int offset, boolean b)-вставляет в буфер строковое представление логической переменной из параметра boolean b;  StringBuffer insert(int offset, char с)- вставляет в буфер символ из параметра с;  StringBuffer insert(int offset, char[] str) - вставляет в буфер массив символов из параметра char [] str;  StringBuffer insert (int offset, int i) - вставляет в буфер строковое представление переменной типа int;  StringBuffer insert(int offset, long 1)- вставляет в буфер строковое представление переменной типа long;  StringBuffer insert(int offset, Object obj)- вставляет в буфер строковое представление объекта;  StringBuffer insert(int offset, String str) - вставляет в буфер строку текста;  int length() - определяет длину строки;  StringBuffer reverse () - производит замену буфера новой символьной последовательностью;  void setCharAt (int index, char ch) - устанавливает символ в буфер по заданному индексу;  void setLength(int newLength) - устанавливает новую длину для буфера;  String toStrihg() - преобразует содержимое буфера в строку.


2.1.14. Класс System



Содержит ряд системных методов.

Методы

 static void arraycopy(Object src, int src_position. Object dst, int dst_position, int length) - копирует массив из указанного массива по заданной позиции;  static long currentTimeMillis () - возвращает время, измеряемое в миллисекундах;  static void exit (int status) - производит выход из программы;  static void gc () - совершает сборку мусора;  static String getProperty (String key) - возвращает приоритетное свойство по строковому ключу;  static int identityHashCode (Object x) - возвращает специальный код (хеш-код) объекта.


Константы

 static PrintStream err - выходной поток, сообщающий об имеющихся ошибках;  static PrintStream out - выходной поток данных.


2.1.15. Класс Thread



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

Конструкторы

 Thread () - создает новый поток;  Thread (Runnable target) -1 создает новый поток с заданным объектом в параметре target, реализующем возможности интерфейса Runnable.


Методы

 static int activeCount ()-возвращает количество задействованных потоков;  static Thread currentThread ()- возвращает выполняющийся в данный момент поток;  int getPriorfty () - узнает приоритет определенного потока;  boolean isAlive() - тестирует поток на работоспособность;  void (int) - ожидает окончание потока;  void setPriority (int newPriority) - устанавливает приоритет для потока;  static void sleep (long millis) - останавливает выполнение потока, на заданное количество времени, измеряемое в миллисекундах;  void start () - дает команду на выполнение потока посредством метода run () интерфейса Runnable;  String toString() - возвращает строковое представление потока;  static void yield () - регулирует вызовы последующих потоков низших по приоритету


Константы

 static int MAX_PRIORITY - максимальный приоритет потока;  static int MIN_PRIORITY - минимальный приоритет потока;  static int NORM_PRIORITY - приоритет по умолчанию.


2.1.16. Класс Throwable



Суперкласс для всех классов, предназначенных для работы с ошибками и исключениями в языке программирования Java.

Конструкторы

 Throwable () - создает новый объект класса Throwable;  Throwable (String message) - создает новый объект класса Throwable с заданным сообщением об ошибках.


Методы

 String getMessage() - возвращает сообщение об ошибке;  void printStackTrace () - отслеживает ошибки на выходном потоке;  String toString() - возвращает описание объекта класса Throwable.


2.1.17. Исключения


 Exceptions - исключения для классов и подклассов;  ArithmeticException - арифметическое исключение;  ArraylndexOutOf BoundsException - исключение обрабатывающее неправильный индекс в массиве данных;  ArrayStoreException - исключение обрабатывающее неправильно заданный тип объекта в массиве объектов;  ClassCastExcept ion - неправильно указан подкласс объекта;  ClassNotFoundException - класс не найден;  IllegalAccessException - нет доступа к классу;  IllegalArgumentException — указан неправильный аргумент;  IllegalMonitorStateException - мониторинг объектов;  IllegalStateException - неправильно вызванный метод; .  IllegalThreadStateException - неправильные установки потока;  indexOutOf BoundsException - исключает неверный указанный индекс;  InstantiationExceptioh — исключает ситуацию в создании или вызове членов абстрактного класса;  interruptedException - исключает прерывание потока находящегося в состоянии ожидания:  NegativeArraySizeException - исключает ситуацию в создании большего размера массива данных, чем было указано при инициализации;  NumberFormatException - неправильное преобразование строки в целочисленный тип данных;  RuntimeException - суперкласс исключений времени исполнения виртуальной машины Java;  SecurityException - менеджер безопасности;  StringlndexOutOf BoundsException - выход индекса за приделы строки.


2.1.18. Ошибки


 Error — обобщенная модель ошибок;  OutOfMemoryError - ошибки связанные с выходом за пределы памяти;  VirtualMachineError - ошибки времени исполнения.

 



Интерфейс ToneControl



2.8.1. Интерфейс ToneControl



Производит воспроизведение тональных звуков на устройстве.

Метод

 void setSequence (byte [] sequence) - устанавливает тональные звуки.


Константы

 static byte BLOCK_END - конец блока воспроизведения;  static byte BLOCK_START - стартовая позиция в блоке;  static byte C4-нота До;  static byte PLAY_BLOCK - воспроизвести блок;  static byte REPEAT - повторить воспроизведение блока;  static byte RESOLUTION - событие;  static byte SET_VOLUME - установить громкость;  static byte SILENCE - без звука;  static byte TEMP() - темп или скорость воспроизведения;  static byte VERSION — версия атрибута воспроизведения.


2.8.2. Интерфейс VolumeControl



Регулирует громкость воспроизведения.

Методы

 int getLevel () — возвращает текущий уровень громкости;  boolean isMuted() - определяет состояние сигнала;  int setLevel(int level) - устанавливает уровень громкости. Значение может находиться в приделах от 0 до 100;  void setMute (boolean, mute) - устанавливает состояние сигнала.

 


Класс GameCanvas



2.6.1. Класс GameCanvas



Абстрактный класс, содержащий основные элементы игрового интерфейса.

Конструктор

 protected GameCanvas (boolean suppressKeyEvents) - Конструктор абстрактного класса GameCanvas.


Методы

 void f lushGraphics () - копирует изображение из внеэкранного буфера на экран;  void flushGraphics(int x, int y, int width, int height) -копирует изображение из внеэкранного буфера на экран в заданный по размеру прямоугольник;  protected Graphics getGraphics () - получает графические элементы для представления их в последствии классом GameCanvas;  int getKeyStates () — определяет, какая из клавиш нажата;  void paint (Graphics g) - рисует графические элементы, представленные классом GameCanvas.


Константы

 static int DOWN_PRESSED - движение вниз;  static int FIRE_PRESSED - реализует стрельбу из оружия;  static int GAME_A_PRESSED - игровая клавиша А;  static int GAME_B_PRESSED - игровая клавиша В;  static int GAME_C_PRESSED - игровая клавиша С;  static int GAME_D_PRESSED - игровая клавиша D;  static int LEFT_PRESSED - движение влево;  static int RIGHT_PRESSED - движение вправо;   static int UP_PRESSED - движение вверх.


2.5.2. Класс Layer



Абстрактный класс, отвечающий за уровни представляемые в игре

Методы

 int getHeight () - получает высоту экрана;  int getWidth () - получает ширину экрана;  int getX () - получает горизонтальную координату уровня;  int getY () - получает вертикальную координату уровня;  boolean isVisible() - получает видимость данного уровня;  void move (int dx, int. dy) - перемещает уровень на dx и dy координаты;  abstract void paint (Graphics g) - рисует уровень;  void setPosition (int x, int у) - устанавливает уровень в позицию, обозначенную в координатах х и у;  void setVisible (boolean visible) - устанавливает видимость данного уровня.


2.6.3. Класс LayerManager



 Менеджер имеющихся в игре уровней.

 Конструктор

 LayerManager () - создает менеджер уровней.


Методы

 void append (Layer 1) - добавляет уровень в менеджер уровней;  Layer getLayerAt (int index) - получает уровень с заданным индексом;  int getSize() - получает общее количество уровней;  void insert (Layer I, int index) - подключает новый уровень в заданный индекс;  void paint (Graphics g, int x, int у) - представляет текущий менеджер уровней в заданных координатах;  void remove (Layer 1) - удаляет уровень из менеджера уровней;  void setViewWindow(int x, int у, int width, int height) -устанавливает область на экране для отображения уровня.


2.6.4. Класс Sprite



Создает спрайт, представляющий изображение или анимационные фреймы.

Конструкторы

 Sprite (Image image) - создает не анимированный спрайт; Sprite (Image image, int . f rameWidth, int. frameHeight) - создает спрайт представленный анимационными фреймами;  Sprite (Sprite s) - создает спрайт из другого спрайта.


Методы

 boolean collidesWith(Sprite s, boolean pixelLevel) - onpeделяет столкновение между спрайтами;  boolean coll.idesWitn(T'iledLayer t, boolean pixelLevel) -определяет столкновение между спрайтом и препятствием нарисованным при помощи класса TiledLayer;  public void defineReferencePixel(int x, int у) -изменяет опорную позицию спрайта, перенося ее в точку с координатами х и у;  int getFrame() - получает текущий фрейм;  int getFrameSequenceLength() - получает количество элементов в анимационных фреймах;  int getRawFrameCount () - получает количество Не использованных фреймов;  int getRef PixelX () - получает координату по оси X для спрайта;  int getRef PixelY ()-получает координату По оси Y для спрайта;  void next Frame () - осуществляет переход на следующий фрейм;  void paint {Graphics g) - рисует спрайт;  void prevFrame () - осуществляет переход на предыдущий фрейм;  void setFrame(int sequencelndex) - устанавливает заданный фрейм;  void setFrameSequence (int [] sequence) -устанавливает определенную фреймовую последовательность;  void setlmage(Image img, int - frameWidth, -int frame-Height ) - изменяет изображение спрайта на новое изображение;  void setRef PixelPosition (int x, int у) - устанавливает координаты по осям X и Y для спрайта;  void setTransform(int transform)- производит трансформацию спрайта.


Константы

 static int TRANS_MIRROR - отраженный по вертикали;  static int TRANS_MIRROR_ROT180 - отраженный по вертикали со сдвигом на 180° по часовой стрелке;  static int TRANS__MIRROR_ROT270 - отраженный по вертикали со сдвигом на 270° по часовой стрелке;  static int TRANS__MIRROR_ROT90 - отраженный но вертикали со сдвигом на 90° по часовой стрелке;  static int TRANS_NONE - без трансформации;  static int TRANS_ROT180 - сдвинут почасовой стрелке на 180°;  static int TRANS_ROT270 - сдвинут по часовой стрелке на 270°;  static int TRANS_ROT90 - сдвинут по часовой стрелке на 90°.


2.6.5. Класс Tiled Layer



Осуществляет создание фоновых изображений.

Конструктор

 TiledLayer(int columns, int rows, Image image, int tileWidth, int tileHeight) — создает фоновое изображение с заданным количеством столбцов, строк, исходным изображением и шириной и высотой одной ячейки рисунка.


Методы

 int createAnimatedTile(int staticTilelndex) - создает анимационный фон и возвращает следующий индекс ячейки;  void fillCells(int col, int row, int numCols, int numRows , int tilelndex) — заполняет ячейки;  int getAnimatedTile(int animatedTilelndex) - получает индекс анимационной последовательности;  int getCell(int col, int row) - получает ячейку;  int getCellHeight () - получает высоту ячейки в пикселях;  int getCellWidth () - получает ширину ячейки в пикселях;  int getColumns () - получает количество колонок, на которое разбито изображение фона;  int getRows () - получает количество строк, на которое разбито изображение фона;  void paint (Graphics g) -рисует фон;  void setAnimatedTile(int animatedTilelndex, int staticTilelndex) - устанавливает анимационную последовательность;  void setCell(int col, int row, int tilelndex) - рисует заданную ячейку;  void setStaticTileSet(Image image, int tileWidth, int tileHeight) -заменяет набор ячеек.

 


Класс MIDIet



2.9.1. Класс MIDIet



Основной класс мйдлета должен наследовать класс MIDlet для управления работой приложения.

Конструктор

 protected MIDIet () - закрытый Конструктор.


Методы

 int checkPermission (String permission) - получить статус;  protected abstract void destroyApp (boolean unconditional )- заканчивает работу программы;  String getAppProperty (String key) - получает свойства программного обеспечения;  void notifyDestroyed() - уведомляет программное обеспечение о конце работы;  void notifyPaused() — уведомляет программное обеспечение о паузе в работе;  protected abstract void pauseApp () - переходит в состояние паузы;  boolean platformRequest (String URL) - дескриптор устройства получает URL;  void resumeReguest () - переход в активное состояние;  protected abstract void startApp() - входная точка программы, осуществляет старт приложения.


2.9.2. Исключение


 MIDletStateChangeException - исключает неправильную работу с классом MIDlet.

 


Цикл do/while



1.8.2. Цикл do/while



Только что рассмотренный нами цикл while при определенных условиях может и не заработать. Например, если условие будет изначально ложно, то цикл не выполнится ни разу. Программа, дойдя до строки кода с оператором while, проверит условие и если оно будет равно false, проигнорирует весь цикл и перейдет к коду, следующему сразу за циклом while. Но иногда возникает необходимость в выполнении цикла по крайней мере один раз. Для этих целей в Java существует цикл do/while. Запись и создания цикла do/while осуществляется следующим образом:

do { // действия }while (услрвие)

Между операторами do и while существует тело цикла, которое будет выполняться до тех пор, пока постусловие, следующее за оператором whilе, не будет ложно. Тело цикла выполнится) по меньшей мере, один раз, после чего будет произведена проверка условия. Цикл do/while используется не часто, но порой оказывается незаменим.

 


Методы



1.2.2. Методы



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

Каждый объект имеет свое назначение и призван решать определенный круг задач с помощью методов. Какой толк был бы, например, в объекте Клавиатура, если нельзя было бы нажимать на клавиши получая при этом возможность отдавать команды? Объект Клавиатура имеет некое количество клавиш, с помощью которых пользователь приобретает контроль над устройством ввода и может отдавать необходимые команды. Обработка таких команд в целом, происходит с помощью методов. Например, вы нажимаете клавишу Esc для отмены каких-либо действий и тем самым даете команду методу, закрепленному за этой клавишей который на программном уровне решает эту задачу. Сразу же возникает вопрос о количестве методов объекта Клавиатура, но здесь может быть различная реализация - как от определения методов для каждой из клавиш (что, вообще-то, неразумно), так и до создания одного метода который будет следить за общим состоянием клавиатуры. То есть, этот метод следит за тем, была ли нажата клавиша, а потом в зависимости от того какая из клавиш задействована, решает, что ему делать.

Итак, мы видим, что каждый из объектов может иметь в своем распоряжении набор методов для решения различных задач. А поскольку каждый объект является объектом определенного класса, то получается, что класс содержит набор методов, которыми и пользуются различные объекты одного класса. В языке Java все созданные вами методы должны принадлежать или являться частью какого-то конкретного класса.

 


Пакет Java io



2.3. Пакет Java.io



Классы этого пакета отвечают за работу с входными и выходными потоками данных.



Пакет Java lang



2.1. Пакет Java.lang



Содержит системные классы или основы языка Java.



Пакет java util



2.2. Пакет java.util



В этом пакете содержатся классы стандартных утилит для создания Java 2 ME приложений. Пакет сильно урезан по сравнению со стандартным пакетом Java 2 SE.



Пакет javax microedition io



2.4. Пакет javax.microedition.io



Этот пакет обеспечивает мобильное устройство связью с сетью.



Пакет javax microedition lcdui



2.5. Пакет javax.microedition.lcdui



Пакет классов пользовательского интерфейса (UI) для создания полей, форм, уведомлений, текста и так далее.



Пакет javax microedition lcdui game



2.6. Пакет javax.microedition.lcdui.game



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



Пакет javax microedition media control



2.8. Пакет javax.microedition.media.control



Осуществляет контроль над процессами.



Пакет javax microedition media



2.7. Пакет javax.microedition.media



Пакет добавлен в профиль МШР 2.0 и дает возможность в создании звукового сопровождения в приложении.



Пакет javax microedition midlet



2.9. Пакет javax.microedition.midlet



С помощью этого пакета происходит связь между приложением и мобильным информационным профилем устройства (MIDP).



Пакет javax microedition pki



2.10. Пакет javax.microedition.pki



Сертифицирует информацию для безопасной связи.



Пакет javax microedition rms



2.11. Пакет javax.microedition.rms



Осуществляет хранение, удаление, добавление записей в системную память устройства.



Типы данных Java



1.3.2. Типы данных Java



Чтобы задать произвольное значение, в Java существуют типы данных. Как уже говорилось, Java - язык типиризированный, поэтому каждое значение имеет свой тип. В классе Telefon мы создали два метода. Оба метода не имели параметров, но когда приводился пример метода on (int time) с параметром time, говорилось о передаче значения в метод. Данное значение указывало на время, с помощью которого якобы должен включиться телефон. Спецификатор int как раз и определяет тип значения time. В Java 2 ME шесть типов данных. Посмотрите на табл. 1.1.

Таблица 1.1.

Тип
Назначение
Размер в байтах
byte
маленькое целое
1
short
короткое целое
2
int
целое
4
long
длинное целое
8
char
символ
2
boolean
логический тип
&nbsp


Java 2 ME в отличие от Java 2 SE не поддерживает числа с дробной частью в связи с тем, что мобильные устройства имеют небольшие по объему ресурсы.

 byte - маленькое цел счисленное значение от-128 до 128;  short - короткое целое значение в диапазоне от -32768 до 32767;  int- содержит любое целочисленное значение от -2147483648 до 2147483647;  long - очень большое целочисленное значение, от -922337203685475808 до 9223372036854775807;  char — это символьная константа в формате Unicode! Диапазон данного формата от 0 до 65536, что равно 256 символам. Любой символ этого типа должен записываться в одинарных кавычках: 'G';  boolean - логический тип, имеет всего два значения: false - ложь и true -истина. Этот тип часто используется в циклах о которых чуть позже. Смысл очень прост - если у вас в кармане есть деньги, предположительно это true, а если нет то false. Таким образом, если деньги имеются - идем в магазин за хлебом или пивом (нужное подчеркнуть), если нет денег -остаемся дома. То есть определяется логическая величина, способствующая выбору дальнейших действий вашей программы.


Чтобы объявить какое-то необходимое значение используется запись:

int time; long BigTime; char word;

Оператор точка с запятой необходим после таких записей в конце строки. Можно совместить несколько одинаковых по типу объявлений через запятую:

mt time, timel, time2;

Теперь давайте, усовершенствуем наш класс Telefon, добавив в него несколько значений. Методы on () и off () нам больше не нужны, добавим методы поинтересней.

class Telefon { //s- площадь дисплея //w - высота дисплея //h - ширина дисплея int w, h, s; //метод вычисляющий площадь дисплея vord Area.() { S = w*h; } }

Итак, мы имеем три переменные S, w и h, отвечающие, соответственно, за площадь, высоту и ширину дисплея в пикселях. Метод Area () вычисляет площадь экрана телефона в пикселях. Операция бесполезная, но очень показательная и простая в понимании. Тело метода Area () обрело себя и имеет вид S = w*h. Мы просто перемножаем высоту на ширину и присваиваем или как еще говорят, сохраняем результат в переменной S. Сейчас мы подошли вплотную к операторам языка Java, с помощью которых можно совершать всевозможные операции.

 


В этом приложении ...



В этом приложении...



В этом приложении содержится исчерпывающий справочный материал по всем пакетам, интерфейсам, классам, конструкторам классов и константам платформы Java 2 Micro Edition. Справочник выполнен на основе имеющейся документации к платформе Java 2 ME, находящейся на сайте компании Sun Microsystems, по адресу в Интернет: http://java.sun.com. Аналогичная документация также поставляется с платформой Java 2 ME, которую вы найдете на компакт-диске, приложенном к книге, в составе среды программирования SUN ONE Studio.4 Mobile Edition и J2ME Wireless Toolkit 2.1. Справочник рассматривает все пакеты, имеющиеся в составе платформы Java 2 ME. Каждый пакет содержит множество интерфейсов, классов, конструкторов и констант. Для всех имеющихся компонентов каждого пакета дается краткая характеристика, на основании которой вам будет очень легко сориентироваться в создании приложений для платформы Java 2 Micro Edition.

 


Цикл for



1.8.3. Цикл for



Это самый распространенный цикл, используемый в программировании, основанный на управлении счетчиком. Смысл работы цикла for схож с рассмотренными выше циклами while и do/while. Посмотрите, как выглядит цикл for:

for (int i = 0; i < 10; i++) { // действие }

После ключевого слова for, следует условие выполнения цикла. Само же условие объединяет в себе три этапа по инициализации счетчика: i = 0 проверка условия i < 10 и увеличение переменной i на единицу. Когда программа доходит до цикла for, то происходит инициализация счетчика i = 0 и проверяется условие i < 10. Далее программа переходит в тело цикла. По окончанию всех действий в цикле for, происходит обращение к третьему этапу цикла: i++, увеличивая счетчик на единицу. После чего сразу же происходит переход ко второму этапу - проверке переменной i < 10 и повторный выход в тело цикла. Весь цикл продолжается до тех пор, пока условие i < 10 не станет ложным. Цикл for используется постоянно при инициализации массива данных, где без него очень сложно, а порой и не возможно обойтись.

Так же как и в цикле whilе возможно использование оператора декремента, например:

for (int i = 10; i > 0; i-) {  //действие }

Используя любую выбранную конструкцию цикла, вы получаете очень мощный инструмент программирования, избавляющий вас от написания большого количества строк кода.

 


Операторы



1.3.3. Операторы



Операторы языка Java имеют различные назначения. Существуют арифметические операторы, операторы инкремента и декремента, логические операторы и операторы отношения.

Арифметические операторы очень просты и аналогичны операторам умножения «*», деления «/», сложения «+» и вычитания «-» используемые в математике. Существует оператор деления по модулю «%» и слегка запутанная на первый взгляд ситуация с оператором равно «=». Оператор равно в языках программирования называется оператором присваивания:

int х = 3

Здесь вы переменной х присваиваете значение 3. А оператор «равно» в языках программирования соответствует записи двух подряд операторов «равно»: <= = >. Рассмотрим на примере, что могут делать различные арифметические операторы.

int х, у, z; ; х = 5; У = 3 ; Z = 0; z = х + у;

В данном случае z будет иметь значение уже суммы х и у, то есть 8.

x = z*x;

Переменная х имела значение 5, но после такой записи предыдущее значение теряется и записывается произведение z *х (8*5), что равно 40. Теперь, если мы продолжим дальше наш код, то переменные будут иметь такой вид:

// х = 40; // У = 3 ; // z = 8;

Это обязательно необходимо иметь в виду.

Что касается оператора деления, то поскольку Java 2 ME не поддерживает дробных чисел, то результат такого деления:

x = z/y;

что равносильно записи:

х = 8/3;

будет равен 2. Дробная часть просто отбрасывается, то же самое происходит при использовании оператор деления по модулю «%».

Операторы сложения и вычитания имеют те же назначения что и в математике. Отрицательные числа так же родственны.

Операторы декремента «—» и инкремента «++» весьма специфичны, но очень просты. В программировании часто встречаются моменты, когда требуется увеличить или уменьшить значение на единицу. Часто это встречается в циклах. Операция инкремента увеличивает переменную на единицу.

int x = 5; х++; // Здесь х уже равен 6

Операция декремента уменьшает переменную на единицу.

int х = 5; х -- ; //х равен 4

Операции инкремента и декремента могут быть пост и префиксными:

int х = 5; int у = 0; y = х++;

8 последней строке кода сначала значение х присваивается у, это значение 5, и только потом переменная х увеличивается на еденицу. Получается что:

х = 6, у = 5

Префиксный инкремент имеет вид:

int х = 3; int у = 0; у = ++х;

И в этом случае, сначала переменная х увеличивается на один, а потом присваивает уже увеличенное значение у.

у = 4, х = 4

Операторы отношения позволяют проверить равенство обеих частей выражения. Имеется оператор равенства «= =», операторы меньше «<» и больше «>», меньше или равно «<=» и больше или равно «>=», а так же оператор отрицания «!=».

9 = = 10;

Это выражение не верно, девять не равно десяти, поэтому его значение этого выражения равно false.

9 != 10;

Здесь же, наоборот, оператор отрицания указывает на неравенство выражения, и значение будет равно true.

Операторы больше, меньше, больше или равно и меньше или равно аналогичны соответствующим операторам из математики.

Существует два логических оператора. Оператор «И», обозначающийся значками «&&» и оператор «ИЛИ», обозначенный в виде двух прямых слешей «||». Например, имеется выражение:

А*В && В*С;

В том случае, если только обе части выражения истинны, значение выражения считается истинным. Если одна из частей неверна, то значение всего выраже- , ния будет ложным.

В противовес оператору «&&» имеется оператор «I I », не напрасно имеющий название «ИЛИ».

А*В|| В*С;

Если любая из частей выражения истинна, то и все выражение считается истинным. Оба оператора можно комбинировать в одном выражении, например:

А*В || B*C && C*D ||В*А;

С помощью этого выражения я вас ввел, как мне кажется, в затруднение, неправда ли? Дело в том, что в Java, как и в математике существует приоритет или так называемая иерархия операторов, с помощью которой определяется какой из операторов главнее, а, следовательно, и проверяется первым. Рассмотрим с помощью списка приоритет всех операторов языка Java:

[] , . , () , ! , ~, ++, - -, +(унарный), -(унарный), new, *, /, % , +, -, << , >>, >>>, <, <=, >, >=, = = , !=, &,  ^,  | , &&, || , ?:, = , +=, -=, *=, /=, %=, |=, ^=, <<=, >>=, >>>=.

Не со всеми операторами вы еще знакомы, поэтому пугаться не стоит. Ассоциативность операторов в списке следует слева на право и сверху вниз. То есть все, что находится левее и выше - старше по званию и главнее.

 


Метод main



1.3.4. Метод main



Класс Telefon, который мы описывали в предыдущем разделе, имел один метод, с помощью которого вычислялась площадь дисплея. Созданная спецификация класса Telefon может быть описана как угодно. Можно добавить реагирующие на обработку событий с клавиатуры телефона и любые другие методы, которые вы сочтете нужными для описания класса Telefon. Таких, и подобных классов может быть любое количество. Каждый из классов принято хранить в своем отдельном файле с расширением *.java. Например, Telefon.java. Все методы находящиеся в классе Telefon, которые вы опишете для данного класса, обязаны производить определенные действия с объектом этого класса, иначе, зачем нужны эти методы. Реализация методов как уже говорилось, происходит непосредственно в создаваемом классе. Но возникает вопрос, где и как, происходит вызов необходимых по ситуации методов или создание объектов используемого класса. В языке Java для этих целей существует Memodmain (), который подобно строительной площадке собирает на своей платформе по частям объекты, методы, строя при этом функциональность всей программы.

public class RunTelefon { public static void main( String[] args) { // Работа программы }  }

Пока не обращайте внимания на ключевые слова public и static - о них чуть позже. Создав класс RunTelefon и определив в его теле метод main () мы теперь имеем возможность пользоваться классом Telefon и его не особо богатой функциональностью. Объединив эти два класса в один файл, либо записав каждый по отдельности, вы получите работоспособную программу. Класс Telefon содержит основные данные и методы, а класс RunTelefon берет на себя роль мотора. Внутри класса RunTelefon происходит создание объектов класса, в данном случае класса Telefon и вызовы соответствующих методов этого класса. Например:

class Telefon { //переменные int w, h, s; // метод void Area() { S = w*h; }  } class RunTelefon  { public static void main (String args[]) {  /* создание объектов и вызовы метода Area() */ } }

Поскольку вы пока не умеете создавать объекты классов и вызывать методы, тело класса RunTelefon пустое. Прежде чем идти дальше, необходимо познакомиться с ключевыми словами public, private и protected, а так же научиться создавать конструкторы классов.

 


Закрытые и открытые члены классов



1.3.5. Закрытые и открытые члены классов



Ключевое слово public, объявленное перед методом main (), показывает на то, что метод main () считается открытым или в любом классе метод main () виден, и к нему можно обратиться. Ключевое слово public может назначаться не только методам, но и объектам класса, переменным, любым членам созданного класса. Все объявленные члены класса с ключевым словом public, будут доступны всем другим существующим в программе классам, поэтому стоит призадуматься, а хорошо ли это? Например, у вас есть какие-то данные, которые не должны быть доступны другим классам, что тогда? Для этого в языке Java существует еще пара ключевых слов: private и protected, благодаря которым вы защищаете свои члены классов от общего доступа.

По умолчанию, если вы не используете ключевые слова, Java назначает всем членам класса спецификатор public. Метод main () всегда должен вызываться с ключевым словом public, чтобы для всех классов программы метод main () был доступен. Как только программа начнет работать, первым делом она ищет метод main () и постепенно, шаг за шагом, а точнее, строка за строкой, выполняет все предписанные действия в методе main ().

 


Циклы



1.8. Циклы



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

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

1) взять ящик №1 и поставить другой угол; 2) взять ящик №2 и поставить другой угол; 3) взять ящик №3 и поставить другой угол; ... 100) взять ящик №100 и поставить другой угол;

Сто строк кода - это уже много, но бывает и тысяча. Для этих целей, а именно - упрощения записи повторяющихся действий и служат циклы.

Существует три оператора представляющих циклы в языке Java- это while, do/white и for. Каждый из операторов необходим в своей ситуации, но все же чаще всего используется оператор for. Рассмотрим по порядку каждый из операторов.

 


Интерфейсы



1.11. Интерфейсы



В программировании мобильных телефонов на Java 2 ME очень часто используются интерфейсы. Интерфейс задает классу, что именно должен делать этот класс, но, не говоря каким образом должны быть реализованы Эти действия, то есть, это некая спецификация, в рамках которой происходит реализация необходимых действий. Создание интерфейса совершается при помощи ключевого слова interface, а для реализации каким-либо классом возможностей интерфейса используется ключевое слово implements. Чтобы более четко разобраться в работе с интерфейсами рассмотрим небольшой пример:

public interface Mylnterface { int Inkriment(); } class MyOne implements Mylnterface { int a; // реализация метода Inkriment() для класса MyOne public int Inkriment() { a = 9++; return a; }  } class MyTwo implements Mylnterface { int a; // реализация метода Inkriment() для класса MyTwo public int Inkriment() { а = 2++; return a; }  }

Созданный интерфейс Mylnterfасе имеет один пустой метод Incriment (). Тело метода отсутствует, есть только его декларация, а класс МуОnе реализует данный интерфейс для своих нужд. В свою очередь класс MyTwo тоже реализует метод Incriment () в необходимой ему форме. Интерфейс задает, что именно надо сделать, а класс, реализующий данный интерфейс, решает, как ему это сделать. Все методы, заключенные в интерфейсе, обязательно должны быть созданы в классе, реализующим этот интерфейс. Интерфейсы не являются классами, поэтому создать интерфейс при помощи ключевого слова new невозможно, но создавать переменные интерфейса можно, в случае если они сохраняются на объекты класса. Любой интерфейс может наследовать другой интерфейс при помощи ключевого слова extends. Интерфейсы очень ярко отражает полифонизм языка Java.

 


Конструктор



1.4. Конструктор



Каждый класс обязан содержать конструктор. Конструктор - это тот же самый метод, но имеющий название класса, например:

class Telefon { Telefon(); // конструктор int w, h, s; // переменные void Area(); // метод }

Конструктор позволяет инициализировать создаваемые объекты данного класса с заданными значениями. Каждый класс имеет конструктор, и если вы явно не записали строку кода (как в нашем случае Telefon () , Java автоматически создаст его за вас, такой конструктор носит название конструктора по умолчанию.

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

class Telefon { int w, h, s; Telefon (int a, int b) // конструктор { w = a; h = b; } void Area() // площадь телефона { S = W*h; } }

При создании объекта (об этом чуть позже), вы можете указать необходимые значения для параметров а и b, например: а = 70, b = 100. Эти заданные числа автоматически присвоятся переменным w и h при создании объекта класса Telefon. Тем самым произойдет инициализация объекта с необходимыми значениями.

Количество конструкторов в классе ограничивается только вашей фантазией и здравым смыслом. Например, можно создать два конструктора классу Telefon:

Telefon (int a, intb); Telefon (char a, char b);

В этом случае при создании объекта по переданным параметрам конструктору класса, компилятор выберет сам необходимый конструктор и создаст заданный объект.

 



Массивы



1.9. Массивы



Очень часто в программировании встречается большое количество однотипных данных. Для того чтобы не объявлять, скажем, сто переменных, существуют массивы данных. Массив - это набор однотипных значений. В языке Java для создания массивов предусмотрена специальная запись:

int[]M;

С помощью такой записи создается пустая переменная, содержащая определенный массив данных. Объявление массива происходит так же как и объявление объекта класса. Необходимо воспользоваться ключевым словом new чтобы выделить память массиву и явно инициализировать его с количеством элементов. Например:

int[]M = new int[20];

В этой строке кода был создан целочисленный массив из двадцати элементов. К каждому из элементов массива можно обратиться при помощи индекса М [n], для сохранения либо изъятия значения заданного элемента.

М[0] = 3; М[1] = 5; М[2] = 20;

Индекс любого созданного массива всегда начинается с 0, об этом нужно помнить. Чтобы инициализировать массив данных, например из пятидесяти элементов, должно потребоваться пятьдесят строк кода, но в нашем распоряжении имеется цикл for, прекрасно справляющийся с этой задачей.

int[]М = new int[50]; for .(int i = 0; i<50; i++) { M[i]. = i; }

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

int[]M = (0, 1, 2, 3, 4}

В этом случае каждый элемент массива инициализируется пятью числами от 0 до 4. Все вышеперечисленные примеры создавали простой одномерный массив данных, но иногда приходится представлять данные в виде парных значений. Например, координаты по X и по Y в системе координат. Для этого в Java существуют многомерные массивы данных.

int stroka = 10; int stolbec =10; int[][]M = new[stroka][stolbec];

Многомерные массивы представлены в виде таблицы. Чтобы получить доступ к заданному элементу массива, нужно указать в какой строке и в каком столбце находится элемент массива. Точно так же в высшей математике происходит работа с матрицами. Многомерный массив данных можно инициализировать с помощью фигурных скобок:

intn []M = { (5, 3, 8}, {7, 12, 16} , 49, 12, 14}  }

Инициализация массива данных при помощи цикла for немного сложнее, но очень эффективная и используется постоянно. Например, у вас есть большой массив данных, который требуется обнулить. Вот как будет выглядеть запись для этого массива данных:

int[][]M = new int[100][50]; for1(int i = 0; i < 100; i++) for (int a = 0; a < 50; a++)  M[i][a] =0;

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

 


Наследование



1.10. Наследование



В языке Java имеется термин наследование. Это очень мощный инструмент, без которого не обходится ни одна профессионально написанная программа. Каждый из вас, читающий эти строки обязательно хочет стать профессиональным программистом, поэтому стоит подробно рассмотреть механизм наследования.

Наследование - это механизм, позволяющий наследовать от вышестоящего в иерархии класса все его возможности. Что значит класс, стоящий выше в иерархии? В языке Java существует термин суперкласс и подкласс. Например, имеется некий класс Siemens:

class Siemens {Int w, h; int Area() { return w*h; } }

Чтобы создать подкласс класса Siemens, необходимо воспользоваться ключевым словом extends:

class SiemensMSS extends Siemens { // члены класса }

Класс SiemensMSS является подклассом класса Siemens, в свою очередь класс Siemens является суперклассом для класса SiemensMSS. Класс SiemensMSS наследует все члены своего суперкласса Siemens и имеет возможность доступа к ним при одном условии: все члены суперкласса Siemens, к которым вы впоследствии захотите получить доступ, должны быть объявлены со спецификатором public. Поскольку мы не определяли вообще никакого спецификатора, а это по умолчанию равно ключевому слову public, то подкласс SiemensMSS, будет иметь доступ ко всем членам своего суперкласса Siemens. Вы можете воспользоваться методом Area () и переменными w и h. Вам не нужно переопределять переменные и метод суперкласса Siemens, но вы можете добавлять дополнительные переменные и методы для подкласса SiemensMS 5, реализующие свои специфические действия для этого подкласса.

Давайте рассмотрим небольшой пример по созданию суперкласса и подкласса. Как вы уже, наверное, догадались, я воспользовался маркой телефона Siemens М55 для названия подкласса. Чтобы не обижать других производителей телефонов, рассмотрим пример для Nokia.

// суперкласс Nokia class Nokia { // высота, ширина и площадь дисплея int dh, dw, ds; // метод, вычисляющий площадь дисплея int Area() { return dw * dh; }  } // подкласс Nokia5100 class Nokia310 extends Nokia { // высота, ширина и площадь всего телефона int th,dw, ds; // метод, вычисляюшщий площадь телефона  int tArea() { return tw * th; } { //входная точка приложения class RunNokia ; { public static void main (String args[]) { // при создании объекта используется конструктор по умолчанию Nokia3100 nokia3100 = new Nokia3100(); // задаем значения для переменных  noki.a3100.dh = 128; nokia3100.dw = 128; nokia3100.th = 102; nokia3100.tw = 43; // вычисляем площадь дисплея  ds = nokia.dArea(); } // вычисляем полощадь телефона dt = nokia.tArea(); } { }

Создав подкласс Nokia3100, вы получите доступ ко всем членам суперкласса Nokia, определенные как public. Используя оператор «.» (точка), вы открываете доступ к переменным и методам суперкласса. При создании объекта суперкласса, например Nokia nokiasuper = new Nokia (), объект созданного класса может пользоваться своими членами класса, но уже члены подкласса ему не доступны.

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

Суперкласс вправе иметь сколько угодно подклассов, например, в рассмотренном примере можно создать еще десяток-другой подклассов: Nokia5100, Nokia6600, Nokia2100 и так далее. Но каждый из подклассов может иметь только один суперкласс. Множественные наследования в языке Java не предусмотрены. Но каждый из подклассов может иметь свой подкласс, и такая цепочка наследования может длиться до разумной бесконечности.

 


Объектноориентированное программирование



1.2. Объектно-ориентированное программирование



Java типиризированный, и по своей природе объектно-ориентированный язык программирования. Эти термины при детальном рассмотрении очень просты в понимании. Основных типов данных мы коснемся, когда будем обсуждать семантику языка, а сейчас сосредоточимся на объектно-ориентированной парадигме современного программирования.

Объектно-ориентированное программирование построено на объектах по аналогии с нашим миром. Если оглянуться вокруг себя, то обязательно можно найти что-то, что поможет более ярко разобраться в модели такого программирования. Например, я сейчас сижу за столом и печатаю эту главу на компьютере, который состоит из монитора, системного блока, клавиатуры, мыши и так далее. Все эти части являются объектами, из которых состоит компьютер. Зная это, очень легко сформулировать какую-то обобщенную модель работы всего компьютера. Если не разбираться в тонкостях программных и аппаратных свойств компьютера, то можно сказать, что объект Системный блок производит определенные действия, которые показывает объект Монитор. Объект Клавиатура в свою очередь может корректировать или вообще задавать действия для объекта Системный блок, а тот влияет на объект Монитор. Объект Колонки предназначен для воспроизведения звуковых данных с различных источников. Построенный процесс очень хорошо характеризует всю систему объектно-ориентированного программирования. Представьте себе некий мощный программный продукт, содержащий сотни тысяч строк кода. Если не использовать объектно-ориентированное программирование, то вся программа должна выполняться построчно, строка за строкой и в принципе каждая из последующих строк кода обязательно будет связана с предыдущей. Когда потребуется изменить этот программный код, скажем при необходимости улучшения каких-то элементов, то придется произвести большое количество работы с кодом. В объектно-ориентированном программировании все куда проще. Допустим, вас уже не устраивает пятнадцати дюймовый монитор. Вы можете спокойно его обменять, например на семнадцати или девятнадцати дюймовый монитор, конечно же, при наличии определенных материальных средств. Сам же процесс обмена не повлечет за собой огромных проблем. Ну, разве что драйвер придется сменить, да вытереть пыль из-под старого монитора. Объектно-ориентированное программирование очень легко и ясно отражает суть решаемой проблемы и что самое главное, дает возможность веь ущерба для всей программы убирать старые и ненужные объекты заменяя их на новые, точней говоря, модернизировать без лишних затрат. Также общая читабельность всей программы становится намного проще. Существенно и то, что один и тот же код можно использовать в абсолютно разных программах.

 


Объекты классов



1.5. Объекты классов



Объекты представляют класс, наследуя от своего класса все возможности. Объявить объект очень просто, необходимо вначале указать класс, а потом объект этого класса. Например:

Telefon object;

Точно так же как создается переменная int а, создается и объект класса. Такая запись создаст пустой объект класса, инициализирующийся значением null. Конечно, это еще не полноценный объект, а всего лишь ссылка на данный класс. Чтобы создать полноценный класс, нужно воспользоваться ключевым словом new, с помощью которого происходит выделение области памяти для содержания создаваемого объекта.

Telefon object; object = new Telefon);

или

Telefon object = new Telefonf);

Обе записи создания объекта класса Telefon одинаковы. Чаще всего используется вторая запись, но это можно оставить на усмотрение программиста. Сначала создается пустая ссылка object, а потом с помощью ключевого слова new выделяется память для объекта и он инициализируется конструктором класса Telefon (). Именно тут и необходим хорошо продуманный конструктор с параметрами, инициализирующий объект с заданными значениями.

Теперь давайте рассмотрим пример посложнее. Создадим класс с конструктором для инициализации высоты и ширины дисплея и в методе main () создадим объект класса Telefon, вычислив при этом площадь экрана абстрактного телефона.

class Telefon { int w, h, s; // конструктор класса Telefon  Telefon (int a, int b) { w = a; h = b; } // метод, вычисляющий площадь экрана void Area() { S = w*h; } } // class RunTelefon может находится в файле  RunTelefon.Java class RunTelefon  { public static void main (String args[]) { // создаем объект класса Telefon Telefon object = new Telefon (70, 90); // вычисляем площадь дисплея object.Area(); }  }

Разберем весь пример более подробно. Итак, мы создаем класс Telefon с тремя переменными: w, h и s, в которых впоследствии будут храниться, соответственно, ширина, высота и площадь дисплея телефона. Далее создаем конструктор класса Telefon для инициализации высоты и ширины дисплея. Метод Area () класса Telefon вычисляет площадь экрана, сохраняя полученный результат в переменной s. После этого идет класс RunTelefon с методом main (), являющийся входной точкой для всей программы. Как только написанное приложение начнет работать, программа найдет метод main () и начнет выполнять содержимое программы.

В первой строке кода метода main () происходит создание объекта класса Telefon со значениями ширины - 70 и высоты - 90 для экрана телефона. Вторая строка кода вызывает метод Area (), вычисляющий площадь дисплея. Метод Area () нельзя просто так вызвать в программе, он должен ссылаться на объект класса Telefon. Запись object.Area () как раз и указывает на то, что объект класса Telefon вызывает метод Area (). Если имеется несколько объектов класса Telefon, то есть несколько различных телефонов, тогда вызов метода Area () должен происходить для каждого из объектов класса Telefon, например:

object1.Area(); object2.Area(); objects.Area();

Для каждого из объектов класса Telefon будет вычисляться только своя площадь экрана. Давайте рассмотрим еще более сложную программу, создав несколько объектов класса Telefon, а заодно используем другую схему работы метода Area (), воспользовавшись ключевым словом return.

class Telefon { int w, h, s, n; // конструктор Telefon (int a, int b) { w = a; h = b; } // вычисляет площадь дисплея int Area()  { return w*h;  } } // class RunTelefon может находится в.файле RunTelefon.java class RunTelefon { public static void main (String[] args)  { // создадим объект Siemens Telefon Siemens = new Telefon (101, 8.0); // создадим объект nokia Telefon nokia = new Telefon (128, 128); // сохраним полученную площадь в s s = Siemens.Area(); // сохраним полученную площадь в n  n = nokia.Area(); } }

В реализации класса Telefon изменился только метод Area (), использовалось ключевое слово return. С его помощью результат умножения высоты на ширину, то есть результат работы всего метода возвращается для дальнейшего использования в коде программы. А в рабочем цикле программы в методе main (), этот результат сохраняется в двух переменных s и N для каждого из объектов класса Telefon. В данном случае площадь экрана для объекта Siemens равна 101x80=8080, а для объекта nokia 128x128=16384 и оба результата хранятся в различных переменных.

У вас наверно сразу возникает вопрос, а как увидеть получившийся результат? Действительно, просчитать значение не составляет труда, но хотелось бы увидеть полученный результат на дисплее. Для этого в Java существует встроенный метод print In(). Чтобы увидеть на экране результат работы метода Area (), нужно добавить вызов метода print In ().

s = Siemens.Area(); System.out.println("Площадь экрана Siemens" + s) ; n = nokia.Area() System.out.println("Площадь экрана nokia" + n) ;

Метод print (), как уже говорилось, встроенный и принадлежит классу System, поэтому такая запись, out — это поток ввода, связывающий программу с консолью. Реально в программировании телефонов метод printIn () используется, как правило, в диагностических целях, но как логическое завершение примера подойдет. С помощью кавычек ограничивается количество выводимого на экран текста, это необходимое условие. Запись + s, применяет операцию конкатенации на основе оператора +, с помощью которого на экран выводится значение переменной s, то есть целочисленное значение равное площади экрана.

Резюмируя объектно-ориентированное программирование, можно с уверенностью заявить - это не сложно, не страшно, достаточно понятно и, что самое главное, просто в использовании. Создав необходимый класс, объявив объект и воспользовавшись методами созданного класса, вы получаете неограниченные возможности в программировании приложений. Но главное - большое количество необходимых классов и методов уже созданы за вас и собраны в специальные библиотеки, о которых мы поговорим в конце этой главы. Вам же остается только воспользоваться этими готовыми классами, создавая свои объекты этих классов.

 


Пакеты



1.12. Пакеты



При наличии большого количества своих классов, можно создавать пакеты, для этих классов, коллекционируя их. С помощью ключевого слова package можно создать пакет для класса. Для этого в самом начале файла, где вы пишете исходный код для класса, сделайте запись, например следующую, для созданного ранее в разделе 1.10.1 класса Nokia:

package Nokia;

В последствии вы сможете получить доступ к пакету с этим классом с помощью спецификатора import в начале файла, где вам необходим класс Nokia.

import Nokia.*

Оператор звездочка в конце импорта класса Nokia обозначает доступ ко всем классам этого пакета. Но возможно обращение и к отдельному классу всего пакета, например:

import Nokia..NokiaeSeries60 .Nokia6600;

При условии, конечно, что все эти классы существуют в пакете Nokia. Если вы собираетесь использовать много классов из пакета, то лучше воспользоваться оператором звездочка, чем перечислять каждый класс в отдельной строке кода.

Кроме этого пакеты имеют еще одну ценную возможность - при создании своих классов существует вероятность того, что какой-нибудь программист, собирающий яблоки в Новой Зеландии возьмет и назовет свой созданный класс точно таким же именем. В этом случае возникает конфликт имен вызывающий исключительную ситуацию. Но если пользоваться возможностью создания пакетов, такая вероятность повторения снижается. Даже если названия созданных классов будут одинаковыми, содержаться они будут в разных пакетах. Конфликта не возникнет. Слышу провокационный вопрос: а если названия пакетов совпадут? Да вы правы, есть же сказка про Буратино от двух разных авторов... В таком случае можно воспользоваться рекомендуемой компанией Sun Microsystems, создавшей язык Java, схемой записи по зарезервированному домену в Интернете, например':

package ru.dmk;

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

package Buratino; package Pinocchio;

И избежать тем самым конфликта имен. Такой способ записи по домену действительно работает и на этой схеме построены все пакеты в Java.

Язык Java имеет огромное количество предопределенных классов, существующих в виде библиотек. Все библиотеки разбиты на пакеты по своему назначению. Платформа Java 2 ME состоит из одиннадцати пакетов:

 java.io;  java.lang;  java.util;  javax.microedition.lcdui;  javax.inicroedition.lcdui.game;  javax.microedition.io;  javax.microedition.inedia;  javax.microedition.media.control;  javax.microedition.pki;  javax.microedition.midlet;  javax.inicroedition.rms.


Каждый из пакетов содержит множество классов с различной областью применения. Имеются математические классы, классы, отвечающие за работу с сетью, классы ввода-вывода, классы утилит и так далее. Более подробно каждый из пакетов будет рассмотрен в главе 2. Для того чтобы воспользоваться имеющимися классами и методами, необходимо в начале исходного кода импортировать нужный для работы пакет:

import java.lang.*

Затем можно воспользоваться, к примеру методом abs (int а) .класса Math, возвращающим целочисленное значение переменой.

int а = 9; int x = Math.abs(a);

Импортируя пакеты в программу, вы упрощаете разработку приложения, поскольку имеется огромное количество готовых классов и достаточно просто создать объект импортированного класса и пользоваться всеми его методами и возможностями.

В этом приложении мы рассмотрели язык программирования Java вкратце, но изученного материала будет достаточно для прочтения этой книги и освоения азов программирования мобильных телефонов на Java 2 Micro Edition.

 


Синтаксис и семантика языка Java 2 ME



1.3. Синтаксис и семантика языка Java 2 ME



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

Таким образом, как вы знаете из раздела посвященного основам программирования, прежде чем начинать писать исходный код программы, необходимо сначала решить поставленную перед вами задачу в любом удобном для себя виде.

Давайте создадим некий класс отвечающий, например, за телефон, который будет иметь всего два метода: включающий и выключающий этот самый телефон. Поскольку мы сейчас не знаем синтаксис языка Java, то, напишем класс Телефон на абстрактном языке.

Класс Телефон  { Метод Включить() { // операции по включению телефона } Метод Выключить() { // операции по выключению телефона } }

Таким вот образом может выглядеть класс Телефон. Заметьте, что фигурные скобки обозначают соответственно начало и конец тела класса, метода, либо всякой последовательности данных. То есть скобки указывают на принадлежность к методу или классу. На каждую открывающую скобку обязательно должна быть закрывающая скобка. Чтобы не запутаться их обычно ставят на одном уровне в коде. А теперь давайте запишем тот же самый класс только уже на языке Java.

class Telefon { void on() { // тело метода оn() } void off() { // тело метода off () } }

Ключевое слово class в языке Java объявляет класс, далее идет название самого класса. В нашем случае это Telefon. Сразу пару слов касательно регистра записи. Почти во всех языках программирования важно сохранять запись названий в том регистре, в котором она была сделана. Если вы написали Telefon, то уже такое написание как telefon или TELefoN выдаст ошибку при компиляции. Как написали первоначально, так и надо писать дальше.

Зарезервированные или ключевые слова записываются в своем определенном регистре, и вы не можете их использовать, давая их названия методам, классам, объектам и так далее.

Пробелы между словами не имеют значения, поскольку компилятор их просто игнорирует, но для читабельности кода они важны.

В теле класса Telefon имеются два метода: on () - включающий телефон и метод off () - выключающий телефон. Оба метода имеют свои тела и в них по идее должен быть какой-то программный код, описывающий необходимые действия обоих методов. Для нас сейчас не важно как происходит реализация этих методов, первостепенное - это синтаксис языка Java.

Оба метода имеют круглые скобки on (), внутри которых могут быть записаны параметры, например on (int time) или on (int time, int time1). С помощью параметров происходит своего рода связь методов с внешним миром. Говорят, что метод on (int time) принимает параметр time. Для чего это нужно? Например, вы хотите, чтобы телефон включился в определенное время. Тогда целочисленное значение в параметре time будет передано в тело метода и на основе полученных данных произойдет включение телефона. Если скобки пусты, то метод не принимает никаких параметров.

 


Управляющий оператор



1.7. Управляющий оператор



В языке Java существует управляющий оператор switch, который можно в принципе отнести к условным операторам. Он тоже основан на неких условиях, но предоставляет многовариантное ветвление для выбора пути заданных действий. Посмотрите на синтаксический шаблон этого оператора:

switch (условие)  { case 1 // действие 1 break; case 2: // действие 2 break; case 20: // действие 20 break; default: //-действие по умолчанию break;  }

Вся конструкция оператора switch основана на метках case, имеющих целочисленные значения. Когда условие, проверяющееся оператором switch совпадает с одним из значений метки case, то последующие за меткой действия будут выполнены. Если ни одно из условий не совпало с меткой case, то будут выполнены действия, следующие за меткой default. Оператор break, использующийся в конце всех действий для каждой метки очень важен. Когда условие совпадет с одной из меток и начнется выполнение указанных действий для этой метки, то выходной точкой служит оператор break. Если вы случайно забудете поставить оператор break, то ваша программа начнет выполнять следующую метку, сведя тем самым ваши усилия по выбору заданных действий на ноль. Никогда не забывайте ставить оператор break для каждой из меток!

 


Условные операторы



1.6. Условные операторы



Когда мы создавали и использовали класс RunTelefon, с методом main (), я говорил, что программа выполняет прописанный код строка за строкой и это действительно так. В небольших программах, таких, как мы создали, этого вполне достаточно, но в действительно огромных программах такой подход не логичен. Нельзя «прыгать» по программе, надо идти от строки к строке. Но если все же требуется перейти в программе к какому-то методу или месту программы, что тогда? Для этого в языке Java существуют условные операторы.

Рассмотрим ситуацию, которая более наглядно объяснит смысл операторов. Допустим, вы дома, у вас нет хлеба и надо сбегать в булочную за углом. Прежде чем идти в булочную вы обязательно проверите, есть ли у вас деньги на покупку хлеба и только потом отправитесь в магазин за хлебом. Здесь имеет место предусловие наличия денег, выполнение которого приводит вас либо к походу за хлебом, либо к соседу за деньгами. В том случае, если не рассматривать это предусловие, то вы бы вышли и пошли в магазин, а уже придя, стали бы искать по карманам. Вот для этого и существуют условные операторы. В языке Java имеется несколько условных операторов. Первый из них: if /else - представляющий собой такую сдвоенную конструкцию. Синтаксический шаблон условного оператора if /else выглядит следующим образом:

if (условие) { // действие №1 } else { // действие №2 }

Переводя эту конструкцию на русский язык, можно сказать: если (if) некое условие верно, то перейти к действию №1, а иначе (else) выполнить действие №2. Такая сдвоенная конструкция if /else может быть не обязательна, иногда достаточно лишь записи оператора if. Можно использовать вложенные операторы if /else, например:

if (условие 1) { if (условие 2) { } }

Здесь проверяется первое условие и если оно верное, то происходит переход к следующему оператору if, если и это условие верное, то выполняются действия и во втором и в первом условном операторе. Если же условие во втором операторе if не верно, то выполняются действия только первого оператора if. Условные операторы в программировании на Java используются постоянно и важно понимать их общий принцип работы.

 


В приложении ...



В приложении ...



Это приложение не претендует на роль полного руководства по языку Java (Ява), но данного материала будет достаточно для дальнейшего изучения книги. Предлагаемая к рассмотрению в этом разделе информация содержит основы языка Java и ориентирована на неподготовленного читателя. Также нужно иметь в виду, что обучение языку Java будет происходить в соответствии с контекстом книги, а именно, всей той части языка Java, необходимой для программирования мобильных устройств. То есть такие «продвинутые» темы как аплеты, библиотеки AWT и Swing в этом приложении не рассматриваются, поскольку не применяются в Java 2 Micro Edition.

 


Введение в программирование



1.1. Введение в программирование



Программирование - это написание исходного кода программы на одном из языков программирования. Существует множество различных языков программирования, благодаря которым создаются всевозможные программы, решающие определенный круг задач. Язык программирования - это набор зарезервированных слов, с помощью которых пишется исходный код программы. Компьютерные системы еще не в силах понимать человеческий язык и логику, поэтому все программы пишутся на языках программирования, которые впоследствии переводятся на язык компьютера, то есть в машинный код. Системы, переводящие исходный код программы в машинный код, очень сложные и их, как правило, создают не один десяток месяцев и не один десяток программистов. Такие системы называются интегрированными средами программирования приложений.

Система программирования представляет собой огромную продуманную визуальную среду, где можно писать исходный код программы, переводить его в машинный код, тестировать, отлаживать и многое другое. Также существуют программы, которые позволяют производить вышеперечисленные действия при помощи командной строки. Язык Java предоставляет такую возможность, но в книге данная проблематика не освещается.

Вы, наверное, не раз слышали термин «программа написана под Windows или под Linux, Unix». Дело в том, что среды программирования при переводе языка программирования в машинный код могут быть двух видов — это компиляторы и интерпретаторы. Говоря про общий вид: компиляция или интерпретация программы задает способ дальнейшего выполнения программы. Программы написанные на языке Java всегда работают на основе интерпретации, тогда как программы написанные на C/C++ - компиляции. В чем разница этих двух способов? Компилятор после написания исходного кода в момент компиляции читает сразу весь исходный код программы и переводит в машинный код. После чего программа существует как одно целое и может выполняться только в той операционной системе, в которой она была написана. Поэтому программы, написанные под Windows, не могут функционировать в среде Linux и наоборот. Интерпретатор осуществляет пошаговое или построчное выполнение программы каждый раз, когда она выполняется. Во время интерпретации создается не выполняемый код, а виртуальный, который впоследствии выполняется виртуальной Java машиной. Поэтому на любой платформе — Windows или Linux, Java-программы могут одинаково выполняться при наличии в системе виртуальной Java машины, которая еще носит название Системы времени выполнения.

Все что сейчас от вас требуется - это изучение синтаксиса языка Java, для того чтобы писать и понимать исходные коды программ, написанные на этом языке. А так же освоить работу с одной из сред программирования, подробное описание которых вы найдете в главе 3. Это приложение содержит теоретический материал, раскрывающий особенности программирования на языке Java.