Select your language:

Home Главная | Registration Регистрация | Login Вход

Menu Меню сайта
Statistics Статистика

Total online: Онлайн всего: 1
Guests: Гостей: 1
Members: Пользователей: 0
Study entry Форма входа
Логин:
Пароль:
Забыл пароль | Регистрация

Ссылки:

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

// высота, ширина и площадь дисплея int dh, dw, ds;

// метод, вычисляющий площадь дисплея ■

int Area ()

{

return dw * dh;

} j

// подкласс Nokia310 0 class Nokia310 extends Nokia' {

7/ высота, ширина и площадь всего телефона ■ int th, dw, ds;

У/ метод, вычисляюшщий площадь телефона

int tArea

{

.return tw * th;

}

// входная точка приложения

class RunNokia

,{

public static . void main (String args [ ] ) {

// при создании объекта используется конструктор по умолчанию

Nokia3100 nokia3100 = new Nokia3100() ; // задаем значения для переменных nokia3100.dh = 128; nokia3100.dw .= 128; nokia3100.th = '102; nokia3100.tw = 43; // вычисляем площадь дисплея ds = nokia.dArea( ) ; // вычисляем ПОЛОЩЭДЬ телефона dt = nokia. tArea ( ) ]

Создав подкласс Nokia3100, вы п олучите доступ ко всем членам суперклас-caNokia, определенные какриЪНс. Используя оператор открываете доступкпеременнымиметодам суперкласса. Присозданииобъектасупер-класса, например Nokia nokiasuper - new Nokia (), объект созданного

класса может пользоваться своими членами класса, но уже члены подкласса ему недоступны.

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

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

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

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

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

// суперкласс Nokia class Nokia {

// конструктор суперкласса Nokia // тело класса Nokia

}

// подкласс NokiaSeries60 class NokiaSeries60 extends Nokia {

// конструктор подкласса NokiaSer.ies60 NokiaSeries60(int a, int b) ; // тело подкласса NokiaSeries60

}

// подкласс Nokia6600 для суперкласса NokiaeSeries60

class Nokia6600 extends NokiaSeries60 {

7/ конструктор подкласса 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

}

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

// суперкласс Siemens

class Siemens

{

int a, b;

}

// подкласс SiemensMC62

class SiemensMC62 extends Siemens {

int a, b;

// конструктор подкласса SiemensMC62

SiemensMC62 (int c, int d)

£

stTper.a = с,- // для а в суперклассе Super . b = d; // для b в суперклассе a = с; // для а подкласса b = d; // для b подкласса

}

}

Основы языка Java

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

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

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

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

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

public interface Mylnterfасе '1 {

int InkrimentO;

}

class MyOne implements Mylnterface {

int a;

/ / реализация метода Inkximent () для класса MyOne public int Inkriment ()

{ . . a = 9 + +,-

return :

class MyTwo implements Mylnterface {

int a;

// реализация метода Inkriment ()для класса MyTwo public int Inkriment ()

Пакеты

а = 2++; return а;

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

1.12. Пакеты

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

package Nokia;

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

import Nokia . *

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

import Nokia.NokiaeSeries60-Nokia6600;

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

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

Основы языка Java

есть же сказка про Буратино от двух разных авторов... В таком случае можно воспользоваться рекомендуемой компанией Sun Microsystems, создавшей языкТауа, схемой записи по зарезервированному домену в Интернете, например:

package ru.dmk;

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

package Buratino; •package Pinocchio;

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

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

□ javaio;

□ java.lang;

□ java.util;

□ javax.microedition.lcdui;

□ javax.microedition.lcdui.game;

□ javax.microedition.io;

□ javax.microedition.media;

□ javax.microedition.media.control; О javax.microcdition.pki;

G javax.microedition.midlet;

□ javax.microedition.rms.

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

import java.lang.*

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

int а = 9;

int х = Math.abs(а);

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

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

Приложение 2. Справочник по Java 2 Micro Edition

Б этом приложении содержится исчерпывающий справочный материал по всем пакетам, интерфейсам, классам, конструкторам классов и константам платформы 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.

2.1. Пакет java.lang

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

2.1.7. Интерфейс ЙиппаЫе

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

Метод

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

2.1.2. Класс Boolean

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

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

Q boolean booleanValue () - возвращает значение объекта класса Boolean;

Q boolean equals (Object obj ) - возвращает значение true, если это объект класса Boolean;

Справочник по Java 2 Micro Edition

О int hashCode () - возвращает специальный код (хеш-код) объекта класса Boolean;

□ String toString t - возвращает объект класса String для булевой переменной.

2.1.3. Класс Byte

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

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

□ byte byteValue () - возвращает значение объекта класса Byte;

□ boolean equals (Object obj ) - возвращает значение в байтах для объекта класса Byte;

□ int hashCode () - возвращает специальный код (хеш-код) объекта класса Byte;

□ static byte parse Byte (String s)— возвращает значение в байтах для указанного объекта String;

□ static byte parse Byte (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; Q static boolean isDigit(char ch) - узнает, является ли значение

ch числовым значением; Q static boolean isLowei Case (char ch) - определяет,является ли

символьное значение строчным; -

□ static boolean isUpperCase (char ch) - определяет, является ли символьное значение заглавным;

■■■■III

Структура ком пакт-диска

* cdsetup 1.0.0.76 - пр ограмма для соединения теле фона с компьютером; J Sony Ericsson - в папке представлено программное обеспечение компании

Sony Ericsson:

■ *semc_j2me_sdk_2_l_0_beta - Sony Ericsson J2ME SDK2.1;

■ semc_SDK21_patch - патч к Sony Ericsson J2ME SDK 21;

* Packagel_l.5.9.2 - программа для соединения телефона с компьютером;

Q Motorola- в папке представлено программное обеспечение компании Motorola:

* sdk41ga - Motorola Lanchpad for J2ME;

"□ Samsung - в папке представлено программное обеспечение компании Samsung:

* JSDKvl_0 -SamsungJSDK 1.0.

I

Приложение 3. Структура компакт-диска

Компакт-диск включает в себя следующие папки:

□ SDK - содержит средства программирования:

* ffj_me_win32 - среда программирования Sun One 4 Mobile Edition;

* j2me_wircless_toolkit-2_l-window's — среда программирования J2ME Wireless Toolkit 2.1;

* j2re-l_4_l_02-windo\vs-i586 - Java Runtime;

* j2sdk-l_4_2_03-windows-i586-p - Java SDKSE;

□ Code - содержит все исходные коды из книги;

□ Nokia - в папке представлено программное обеспечение компании Nokia

■ Linux — папка с инструментариями под опер анионную систему Linux;

■ nds_jmc_linux_v2_0.tar - Nokia Developer's Suite 20 for Linux;

* nS30_jmc_concept_sdk_linux_bO_2.tar — эмулятор тридцатой серии;

■ ndsjme_v_2_0 - Nokia Developer's Suite 20 for J2ME;

■ Nokia_S40_DP20_SDK_bet_0[l].5.0 - эмулятор сороковой серии; ■

* nS40_jme_conccpt_sdk_bO_3 - эмулятор сороковой серии;

* nS60jine_sdk_v2_l - эмулятор шестидесятой серии;

* nS90 jmc_sdk_vl_0_b - эмулятор девяностой серии;

* Nokia_5100_SDK_Final_l_0 - эмулятор телефона 5100;

■ n3410_sdk_vl_0 — эмулятор телефона 3410;

Nokia_PC_Suite_51_ru - программа для соединения телефона с компьютером;

Q Siemens - в папке представлено программное обеспечение компании Siemens:

* smtk_0_13__2_59 - Siemens Mobility Toolkit forJava Development;

* 2128_0_12_15_1 - эмулятор телефона2128;

* c55_0_12_15_l - эмулятор телефонас55;

* с60а_0_12_24 - эмулятор телефонасбО;

* m50_Chinese_setup - эмулятор телефона м50 китайская версия;

* m50_setup - эмулятор телефона м50;

■ т55_0_12_09_1 - эмулятор телефона м55;

* т55с_0_12_09_1 —эмулятор телефона м55с;

* mc60_setup - эмулятор телефонамсбО;

s55_0_12_l 11 - эмулятор телефонавбб; s57_0_12_09_l - эмулятор телефона s57;

* sl45_Chinese_setup - эмулятор телефона sl45 китайская версия;

* sl45_setup - эмулятортелефона sl45;

* sl55_0_12_05 - эмулятор телефоназ155;

Для перехода к следующей странице статьи перейдите по вы подающему меню

Basket Корзина
Your basket is empty Ваша корзина пуста
'); $(el).append(g); $(g).show(); } _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'clear'}}); return false; } function removeBasket(id){ if(lock_buttons) return false; else lock_buttons = 1; $('#basket-item-'+id+' .sb-func').removeClass('remove').addClass('myWinLoadS').attr('title',''); _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'del', 'id':id}}); return false; } function add2Basket(id,pref){ if(lock_buttons) return false; else lock_buttons = 1; var opt = new Array(); $('#b'+pref+'-'+id+'-basket').attr('disabled','disabled'); $('#'+pref+'-'+id+'-basket').removeClass('done').removeClass('err').removeClass('add').addClass('wait').attr('title',''); $('#'+pref+'-'+id+'-options').find('input:checked, select').each(function(){ opt.push(this.id.split('-')[3]+'-'+this.value);}); _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'add', 'id':id, 'pref':pref, 'opt':opt.join(':'), 'cnt':$('#q'+pref+'-'+id+'-basket').attr('value')}}); return false; } function buyNow(id,pref){ if(lock_buttons) return false; else lock_buttons = 1; var opt = new Array(); $('#b'+pref+'-'+id+'-buynow').attr('disabled','disabled'); $('#'+pref+'-'+id+'-buynow').removeClass('done').removeClass('err').removeClass('now').addClass('wait').attr('title',''); $('#'+pref+'-'+id+'-options').find('input:checked, select').each(function(){ opt.push(this.id.split('-')[3]+'-'+this.value);}); _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'add', 'id':id, 'pref':pref, 'opt':opt.join(':'), 'cnt':$('#q'+pref+'-'+id+'-basket').attr('value'), 'now':1}}); return false; } //-->
Search Поиск
Calendar Календарь
«  March Март 2011  »
Mon Пн Tues Вт Wed Ср Thurs Чт Fri Пт Sat Сб Sun Вс
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archive records Архив записей

Ссылки:

Rambler's Top100 Все для дома - Бытовая техника, опубликовать информацию о фирме
QLE 88x31

раскрутка сайта в интернете Рейтинг сайтов Товары / Услуги

Copyright MyCorp © 2011 Создать сайт бесплатно

Copyright MyCorp © 2011