арапайым түрлер және операциялар 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

арапайым түрлер және операциялар

Дәріс №4.

Java бағдарламасындағы файлдар. Бағдарлама формасын құру. Файлдармен жұмыс: құру, өңдеу. swing және awt пакеттері.

Java тіліндегі файл құрылымы былай жазылады.

  • Файлдың бірінші жолында міндетті емес package операторы болуы мүмкін.
  • Келесі жолдарда міндетті емес import операторы болуы мүмкін.
  • Келесі кластар мен интерфейстер түсініктемесі болады.

Басқа екі ереже.

  • Файл кластарының ішінде тек бір ғана ашық public –класы болады.
  • Файл аты ашық класс атымен бірдей болуы керек, егер ашық класс бар болса.

Осыдан көретініміз егер проектіде бірнеше ашық кластар бар болса, онда олар әртүрлі файлдарда болуы керек.

Интерфейстер

Класс өшімшесінен extends сөзінен кейін тек бір ғана аталық класс атын жазу керек.

Интерфейстің (interface), кластан айырмашылығы әдістің тек тұрақтылары мен тақырыбынан тұрады.

Интерфейстер кластар сияқты пакеттер мен ішкі пакеттерге таратылады және class-файлдарында компиляцияланады.

Интерфейс жазылуы interface сөзінен басталады алдында public модификаторы тұруы мүмкін, бұл оның барлық жерде мүмкін болатынын білдіреді. Егер public модификаторы болмаса ол тек өз пакетінде ғана көрінеді.

Interface сөзінен кейін оның аты; сосын extends сөзінен кейін үтір арқылы бөлініп жоғарғы интерфейстер тізімі жазылады. Фигуралық жақшаларға әдістің тұрақтылары мен тақырыбы жазылады.

Мысалы,  автомобилдер иерархиясы:

interface Automobile{ . . . }

interface Car extends Automobile{ . . . }

interface Truck extends Automobile{ . . . }

interface Pickup extends Car, Truck{ . . . }

Интерфейсті емес, оның таратылуын (implementation) беру керек. Интерфейс таратылуы дегеніміз — бір немесе бірнеше интерфейстер әдістері жазылған класс.

Автомобилдер иерархиясын тарату мысалы:

interface Automobile{ . . . }

interface Car extends Automobile! . . . }

class Truck implements Automobile! . . . }

class Pickup extends Truck implements Car{ . . . }

немесе:

interface Automobile{ . . . }

interface Car extends Automobile{ . . . }

interface Truck extends Automobile{ . . . }

class Pickup implements Car, Truck{ . . . }

Интерфейстер таратылуы толық болмауы, кейбір интерфейс әдістері жазылған, ал кейбіреуі жазылмаған болады. Бұндай таратылулар— абстрактілі класс болады. Оларды abstract модификаторымен белгілеу керек.

Интерфейстерге сілтеулер жасауға болады. Бұндай сілтеулер интерфейс таратылуында ғана көрсетіледі. Бұл арқылы полиморфизмді ұйымдастыру әдісін аламыз.

15 - листинг интерфейс көмегімен 9 - листингтегі үй жануарларының хорын жинауға болатынын көрсетеді.

Листинг 15. Полиморфизмді ұйымдастыруда интерфейсті қолдану

interface Voice{

void voice();

}

class Dog implements Voice{

public void voice(){

System.out.println("Gav-gav!");

}

}

class Cat implements Voice{

public void voice(){

System.out.println("Miaou!");

}

}

class Cow implements Voice{

public void voice(){

System.out.println("Mu-u-u!");

}

}

public class Chorus{

public static void main(String[ ] args){

Voiced singer = new Voice[3];

singer[0] = new Dog();

singer[1] = new Cat();

singer[2] = new Cow();

for(int i = 0; i < singer.length; i++)

singer[i].voice();

}

}

Бұл листингте жазылған абстракты Pet класы орнына voice интерфейсі қолданылады.

Интерфейстер таратылуының әдістері ашық болуы керек, public, себебі анықтау кезінде тек үлкейте аламыз, ал интерфейстер әдістері әрқашанда ашық.

Интерфейстердің тұрақтыны анықтауы 16 - листингте көрсетілген.

Листинг 16. Светофорды басқару жүйесі

interface Lights{

int RED = 0;

int YELLOW = 1;

int GREEN = 2;

int ERROR = -1; }

class Timer implements Lights{

private int delay;

private static int light = RED;

Timer(int sec)(delay = 1000 * sec;}

public int shift(){

int count = (light++) % 3;

try{

switch(count){

case RED: Thread.sleep(delay); break;

case YELLOW: Thread.sleep(delay/3); break;

case GREEN: Thread.sleep(delay/2); break;

} }catch(Exception e){return ERROR;}

return count; } }

class TrafficRegulator{

private static Timer t = new Timer(1);

public static void main(String[] args){

for (int k = -0; k < 10; k++)

switch(t.shift()){

case Lights.RED: System.out.println("Stop!"); break;

case Lights.YELLOW: System.out.println("Wait!"); break;

case Lights.GREEN: System.out.println("Go!"); break;

case Lights.ERROR: System.err.println("Time Error"); break;

default: System.err.println("Unknown light."); return;

} }

}Мұнда Lights интерфейсінде, барлық проект үшін тұрақтылар анықталған.

Timer класы интерфейсті таратады және тұрақтыларды өзінікі сияқты қолданады. Shift әдісі светофорға түріне байланысты ауыстыру дыбысын береді. Кідіртуді Thread класының sleep() әдісі орындайды (миллисекунд).

 

Design patterns

Бізге метеорологиялық станцияны автоматтандыру керек болсын. Бұнда әртүрлі датчиктер мәліметтері немесе, басқаша айтқанда, температураны, қысымды, сулы екенін, компьютерге цифрлық түрде түскен жел жылдамдығын тексерушілер керек. Ол өңделеді: аймақтар бойынша мәндері есептелінеді, көп күнгі тексерістен кейін ертеңгі күн ауа райы жағдайы жасалады, яғни аймақтың метеорологиялық суреті - модель құрылады. Содан кейін әртүрлі каналдарға беріледі: монитор экранына, желіге таратылады. Ол әртүрлі түрмен сандар колонкасы, графиктер, диаграммалар түрінде көрінеді.

Бұндай жүйені автоматтандыруды проектілеу үш бөлімнен тұрады.

  • Бірінші бөлім, Тексеруші (controller), датчиктерден мәліметтерді жинайды, болашақта талдаулар жасалатындай бір түрге келтіріп өңдейді, мысалы, бір масштабқа келтіреді. Әрбір датчиктің өз модулі жазылуы керек, дәл құрылғы дыбысы енеді және унифицирленген мәліметтер шығады.
  • Екінші бөлім, Модель (model), унифицирленген мәліметтерді тексерушіден қабылдап алады, ол датчиктер туралы ештеме білмейді, сосын өз алгоритімімен бір түрге келтіріп өңдейді, мысалы,  сандар тізбегіне келтіреді.
  • Үшінші бөлім,  Түр (view), шығару құрылғысымен байланысты және модельден қабылдаған мәліметтерді графикке, диаграммаға немесе желімен жіберетін пакетке айналдырады. Әрбір құрылғыға ерекшелігін ескере отырып өз модулі бойынша жазады.

Бұл схема 80-ші жылдарда [XX ғасыр] Smalltalk тілінде шыққан және MVG (Model-View-Controller) атын алған.  

Класты жазу керек, ол тек бір ғана дана болады, бірақ осыны басқа кластар  объектілері қолдану керек. Бұл үшін  Singleton схемасын пайдаланамыз.

Дәріс№ 5

Примитивті деректер түрлері және операторлармен жұмыс жасау. Булев (логикалық) түр. Логическалық операторлар. Бүтін түрлер, айнымалылар, тұрақтылар. Нақты түрлер және Math класы. Жинау (boxing) және шашу (unboxing). Санау түрлері (enum).

Java тілінде берілгендердің түрлері екі топқа бөлінеді: қарапайым түрлер (primitive types) және сілтелінген түрлер (reference types).

Сілтелінген түрлер массивтер (arrays), массалар (classes) және интерфейстер (interfaces) болып бөлінеді.

Қарапайым 8 түр бар. Олар логикалық (кейде булев деп атайды) түрі boolean және сандық (numeric) болып бөлінеді.

Сандық түрлерге бүтін integеr және нақты (floating-point) түрлері жатады.

Бүтін түр бесеу, олар: byte , short , int , long , char .

int түрінде берілген белгілерді кез келген жерде қолдануға болады. Мысалы арифметикалық есептеуде былай жазсақ 2 + 'ж' , онда екі санына 'ж' әріпінің Unicode '\u04i6' коды қосылады. Нәтижесінде ондық форматта 1048 санын береді.

Ал 2 + "Ж" нәтижесі "2ж" тең болады. Нақты түрлер: float және double .

Ескерту Java тілінде түрлер қатаң қолданы (strongly typed language).

Сурет 2. Java тіліндегі деректер түрлері



Поделиться:


Последнее изменение этой страницы: 2024-07-06; просмотров: 52; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.007 с.)