Java bir kund



Download 1,09 Mb.
bet14/24
Sana30.09.2022
Hajmi1,09 Mb.
#850991
1   ...   10   11   12   13   14   15   16   17   ...   24
Bog'liq
Java быстрый старт (1)

istisnolardan foydalanish deb ataladi .

Dastur yozishda har doim yuzaga kelishi mumkin bo'lgan xatolarni oldindan ko'rishga harakat qiling. Agar ma'lum bir kod bloki xatolikka olib kelishi mumkin deb hisoblasangiz, uni try- catch-finally buyrug'i bilan ishlatib ko'ring. try catch-finally buyrug'ining sintaksisi quyidagicha ko'rinadi:


harakat qilib ko'ring


{
harakatlar


}
catch (xato turi)
{
xatolik yuz berganda harakatlar
}

102 6 -bob Boshqarish buyruqlari



nihoyat
{


try yoki catch sharti bajarilganidan qat'iy nazar bajariladi.

}


Bir nechta ushlash bloklari bo'lishi mumkin. Bundan tashqari, final bloki ixtiyoriy.

Bir misolni ko'rib chiqing. NetBeans-ni ishga tushiring va ErrorDemo nomli yangi loyiha yarating. Yaratilgan almashtiring


kod quyidagicha:



  1. paket xatosi demosi;

  2. import java.util.Scanner;

3

  1. umumiy sinf ErrorDemo{

  2. umumiy statik void main(String[] args) { 6

7 int num, deno;

sakkiz

9
o'n


Skaner kiritish = yangi Skaner(System.in);



o'n bir

12
13


harakat qilib ko'ring
{

System.out.print("Iltimos, raqamni kiriting: ");




o'n to'rt
num = input.nextInt();

o'n besh
16

System.out.print("Maxrajni kiriting: ");





17 deno = input.nextInt();

o'n sakkiz
19
yigirma

21
22


System.out.println("Natija " num/deno); +


}
tutish (e istisno)

6.5. Ishlov berish istisnosi 103




23 {


24
25 }
System.out.println(e.getMessage());

26 nihoyat
27 {
28 System.out.println(" Xatolarni bartaraf etishning
oxiri ");
29 }
o'ttiz }
31}
Ushbu misolda try bloki 11-21-qatorlarda , catch bloki 22-25 -qatorlarda va oxirgi blok 26-29 -qatorlarda joylashgan .

Agar siz kodni ishga tushirsangiz va 12 va 4 qiymatlarini kiritsangiz, siz xabar olasiz


Natija 3


---- Xatolarni tugatish misoli ----

Bunday holda, dastur try blokidagi kodni bajarishga harakat qiladi va muvaffaqiyatga erishadi. Natijada, u bo'linish natijasini ko'rsatadi. Kodni sinab ko'rish blokida bajarganingizdan so'ng finally blokidagi kod bajariladi . Finally bloki , try yoki catch bloki bajarilganidan qat'i nazar, har doim bajariladi.


Dasturni qayta ishga tushiring va 12 va 0 raqamlarini kiriting. Siz xabar olasiz:


/ nolga
---- Xatolarni tugatish misoli ----

Bunday holda, dastur try blokidagi kodni bajarishga harakat qiladi, lekin buni amalga oshira olmaydi. Gap shundaki, sonni 0 ga bo'lish mumkin emas. Shu sababli, o'rniga



104 6 -bob Boshqarish buyruqlari

catch blokidagi kod bajariladi. Catch bloki bajarilgandan so'ng finally blokidagi kod ham bajariladi.
Tutib olish bloki bajarilish vaqtida ushlanmaslik kerak bo'lgan xato turini belgilash imkonini beradi . Bizning misolimizda biz "umuman xato" ni ushlaymiz. Shu sababli, belgi
tutish (e istisno)

Bu yerda Istisno – xato tegishli sinf, e – xatoga berilgan nom.


Istisno Java -da oldindan yozilgan sinflardan biridir. U barcha umumiy xatolarni ko'rib chiqadi va istisno sababining tavsifini qaytaradigan getMessage() deb nomlangan usulni o'z ichiga oladi. Xato xabarini ko'rsatish uchun buyruqdan foydalaning
System.out.println(e.getMessage());

Bizning misolimizda quyidagi xato xabari ko'rsatiladi:


/ nolga



      1. MAXSUS XATOLAR

Yuqoridagi misolda Exception klassi umumiy xatolarni aniqlash uchun ishlatilgan . Exception sinfiga qo'shimcha ravishda , Java'da aniqroq xatolarni qayta ishlash uchun boshqa sinflar mavjud.
Ushbu sinflar tuzoqqa tushgan xatoga bog'liq bo'lgan
aniq muammolarni hal qilish uchun juda foydali . Masalan, siz o'zingizning xato xabarlaringizni chop etishingiz mumkin.
6.5. Istisnolarni ko'rib chiqish 105

Bu qanday ishlashini ko'rish uchun NetBeans-ni ishga tushiring va ErrorDemo2 nomli yangi loyiha yarating. Yaratilgan kodni quyidagi bilan almashtiring :
packageerrordemo2;

import java.util.InputMismatchException; import java.util.Scanner;


umumiy sinf ErrorDemo2{


umumiy statik void main(String[] args) {


int tanlovi = 0;


Skaner kiritish = yangi Skaner(System.in);


int[] raqamlari = { 10, 11, 12, 13, 14, 15}; System.out.print("Iltimos, massiv indeksini kiriting: ");


harakat qilib

ko'ring {

tanlov = input.nextInt(); System.out.printf("raqamlar[%d] = %d%n", tanlov,


raqamlar[tanlov]); }

catch(ArrayIndexOutOfBoundsException e) {

System.out.println("Xato: indeks noto'g'ri.");


}catch(InputMismatchException e) {

System.out.println("Xato: Siz butun sonni kiritmadingiz.");


}catch (e istisno) {


System.out.printf(e.getMessage());


}

} }



106 6 -bob Boshqarish buyruqlari



Agar qiymat kiritsangiz


o'n

siz xabar olasiz:

Xato: indeks noto‘g‘ri.


Agar siz qatorga kirsangiz


Salom

xabar boshqacha bo'ladi:

Xato: Siz butun son kiritmadingiz.


Birinchi xato IndexOutOfBoundsException Array tomonidan taqdim etilgan bo'lib, u birinchi catch bloki tomonidan boshqariladi . Chegaradan tashqari indeksli elementga kirishga urinilganda istisno chiqariladi.


Ikkinchi InputMismatchException ikkinchi catch bloki tomonidan boshqariladi . Skaner usuli mo'ljallangan turga mos kelmasa , InputMismatch istisnosi chiqariladi . Bizning misolimizda, kiritish.


nextInt() InputMismatchException ni chiqaradi, chunki "Salom" kiritish keyingiInt() usuli qabul qilish uchun mo'ljallangan ma'lumotlar turiga mos kelmaydi.
Oldingi bloklar qamrab ololmagan har qanday umumiy xatolarni ushlash uchun ikkita o'ziga xos tutib olish blokidan keyin boshqa tutib olish bloki keladi .
Ushbu misol Java-dagi ko'p istisnolardan faqat uchtasini ko'rsatadi .
6.5. Istisnolarni ko'rib chiqish 107

InputMismatchExpection klassi java'da .
util va foydalanishdan oldin import qilinishi kerak . Boshqa tomondan, boshqa ikkita istisno sinflari (ArrayIndexOutOfBoundsException va Exception) java.lang paketida joylashgan va barcha Java dasturlari tomonidan sukut bo'yicha import qilinadi. Qaysi sinflarni import qilish kerakligini va sukut bo'yicha import qilinishini eslay olmasangiz, tashvishlanmang ; NetBeans ostida
sizga paket yoki sinfni import qilish kerakligini aytadi
o'z-o'zidan.

      1. ISTISOZLAR MASASI

Endi dasturda istisnolarni qanday tashlashni ko'rib chiqamiz. Oldingi misolda biz oldindan belgilangan sharoitlarda xatolarni ushlashga harakat qilmoqdamiz.
Masalan, ArrayIndexOutOfBoundsException xatosi
foydalanuvchi harakat qilganda ushlanadi
Indeksi massiv chegarasidan tashqarida bo'lgan elementga o'ting . Bu misolda, bu qachon sodir bo'ladi
foydalanuvchi 5 dan katta salbiy yoki ijobiy raqamni kiritadi.
Oldindan belgilangan sharoitlarda xatolarni aniqlashdan tashqari, siz xatolik yuzaga kelishi kerak bo'lgan o'z sharoitlaringizni ham belgilashingiz mumkin.
Aytaylik, negadir siz foydalanuvchilarning massivning birinchi elementiga kirishini xohlamaysiz . Buning uchun foydalanuvchi 0 qiymatini kiritganda dasturdan istisno qilishni talab qilishingiz mumkin.
108 6 -bob Boshqarish buyruqlari

Ushbu xususiyat qanday ishlashini tushunish uchun oldingi dasturni sinab ko'ring va 0 qiymatini kiriting.
Dastur normal ishlaydi va chiqishni chiqaradi
raqamlar[0] = 10

Endi buyruqlar qo'shishga harakat qiling


agar (tanlov == 0)
yangi ArrayIndexOutOfBoundsException();

buyruqdan keyin


tanlov = input.nextInt();


sinash blokida . Dasturni qayta ishga tushiring va 0 qiymatini kiriting. Bu safar blok bajariladi.
catch(ArrayIndexOutOfBoundsException e)
Buning sababi, foydalanuvchilar 0 qiymatini kiritganda, tanlov == 0 sharti rost deb baholanadi . Shunday qilib, buyruq bajariladi
yangi ArrayIndexOutOfBoundsException();

Ushbu buyruq tufayli blok bajariladi


catch(ArrayIndexOutOfBoundsException e)
Machine Translated by Google
7
OBYEKTGA YO'LLANGAN
DASTURLASH, I QISM

Ushbu bob Java dasturlashda juda muhim tushuncha , ob'ekt tushunchasini qamrab oladi


yo'naltirilgan dasturlash.
Ob'ektga yo'naltirilgan dasturlash nima ekanligini, o'z sinflaringizni qanday yozishni va ular asosida ob'ektlarni yaratishni bilib olasiz. Bundan tashqari, maydonlar, oluvchilar, setterlar, konstruktorlar va usullar tushunchalari ham yoritiladi.



    1. OBYEKTGA YO'LLANGAN DASTURLASH NIMA?

Ob'ektga yo'naltirilgan dasturlash - bu dasturlash vazifasini bir-biri bilan o'zaro ta'sir qiluvchi ob'ektlarga bo'lgan dasturlash metodologiyasi .
do'st bilan.
Ob'ektlar sinflar deb ataladigan shablonlar asosida yaratiladi . Sinfni qism chizmasi bilan solishtirish mumkin. Ob'ekt chizmaga muvofiq ishlab chiqariladigan "qism " ga aylanadi .

    1. O'z darslaringizni yozish 111


    1. O'Z DARSLARINGIZNI YOZIB

Sinf deklaratsiyasi sintaksisi:

AccessModifier sinf ClassName {


// Sinf mazmuni
// maydonlar, konstruktorlar va usullar bilan
}

Misol:

umumiy sinf ManagementStaff{
}

Ushbu misol birinchi navbatda kirish darajasini belgilaydi kirish modifikatori ishlatiladigan sinf . Sinfga kirish modifikatorlari o'sha sinfga kimga ruxsat berilishini nazorat qiluvchi darvozabonlarga o'xshaydi . Boshqacha qilib aytganda, ular boshqa sinflar ma'lum bir sinf


maydoni yoki usulidan foydalanishi mumkinligini nazorat qiladi.
Sinf umumiy yoki paketli bo'lishi mumkin. Yuqoridagi misol umumiy sinfni belgilaydi. Ommaviy modifikator sinfning dasturdagi istalgan sinf uchun mavjud ekanligini bildiradi .

Boshqa tomondan, paketga kirish darajasi sinfga faqat bitta paketdagi boshqa sinflar kirishi mumkinligini anglatadi. Bitta Java ilovasi bir nechta paketlardan foydalanishi mumkin. Agar siz paket nima ekanligini unutgan bo'lsangiz, 2.4.1-kichik bo'limga qayting. Odatiy bo'lib, ommaviy kirish darajasi ishlatiladi. Agar kirish modifikatori belgilanmagan


bo'lsa, bu sinf paketga kirish darajasiga ega bo'lishini anglatadi.
112 7 -bob. Ob'ektga yo'naltirilgan dasturlash

Kirish modifikatorlari 8.5-bo'limda batafsilroq muhokama qilinadi .
Sinfga kirish darajasi deklaratsiyasidan keyin class kalit so'zi keladi, bu biz sinfni e'lon qilayotganimizni bildiradi. Undan keyin sinf nomi (ManagementStaff) keladi.
Sinf nomlarida Paskal sxemasidan foydalanish odatiy holdir. Bu atama har bir so'zni (shu jumladan birinchisini) ThisIsAClassName kabi bosh harf bilan boshlash amaliyotiga ishora qiladi. Ushbu sxema butun kitob davomida qo'llaniladi.
Sinf mazmuni sinf nomidan keyin jingalak qavslar ichiga olinadi . Sinf tarkibiga konstruktorlar, maydonlar, usullar, interfeyslar va boshqa sinflar kiradi. Ushbu
komponentlarning ba'zilari ushbu bobda muhokama qilinadi.
Keling, sinfni boshidanoq qurishga harakat qilaylik.
NetBeans-ni ishga tushiring va ObjectOrientedDemo nomli yangi Java ilovasini yarating.
Siz uchun yaratilgan kodni tahlil qiling. NetBeans IDE avtomatik ravishda siz uchun umumiy sinfni qanday yaratganiga e'tibor bering?
Ommaviy sinf ObjectOrientedDemo deb nomlangan;
uning nomi fayl nomi bilan bir xil (ObjectOrientedDemo.java).
Java tilida har bir Java fayli faqat bitta umumiy sinfga ega bo'lishi mumkin, u fayl nomi bilan bir xil bo'lishi kerak. main() usuli bu umumiy sinfda.
Ushbu misolda biz ObjectOrientedDemo sinfi bilan o'zaro aloqada bo'lgan ikkinchi Java sinfini yaratamiz.
7.2. O'z darslaringizni yozish 113
Bu sinf obyektorienteddemo paketida yaratiladi. Buning uchun Project Explorer panelidagi paket nomini o‘ng tugmasini bosing va NewÿJava Class ni tanlang . Yangi sinf yaratishda Project Explorer -da to'g'ri elementni bosish juda muhimdir . Misol uchun, agar siz objectorienteddemo paketiga yangi sinf qo'shayotgan bo'lsangiz , sinfni yaratishda paket nomini bosishingiz kerak ,

rasmda ko'rsatilganidek.


Keling, yangi sinfga Staff nom beramiz va unga maydonlar,


konstruktorlar va usullarni qo'shamiz. Sinf deklaratsiyasi quyidagicha ko'rinadi:

umumiy sinf xodimlari {


//Sinf mazmuni
}

Sinf mazmuni ochilish va yopish jingalak qavslar orasiga kiritilishi juda muhimdir . Aks holda, dastur ishlamaydi. Ushbu bo'lim uchun to'liq kodni quyidagi manzildan yuklab olish mumkin: https://www.


Learncodingfast.com/java.

      1. DALALAR

Xodimlar sinfining maydonlarini e'lon qilishdan boshlaylik . Sinfning jingalak qavslari ichiga quyidagi kod qatorlarini qo'shing:


xususiy String nameOfStaff; xususiy final int hourlyRate = 30; xususiy int soatlar Ishlagan;
U bitta String o'zgaruvchisini (nomi OfStaff) va ikkita int o'zgaruvchini (hourlyRate va hours - ) e'lon qiladi. ishlagan). Ushbu o'zgaruvchilar sinf maydonlari deb
ataladi. Maydon sinf ichida e'lon qilingan o'zgaruvchidir. Qanday
114 7 -bob. Obyektga yo‘naltirilgan dasturlash

va boshqa o'zgaruvchilar, ular saqlash uchun mo'ljallangan
ma'lumotlar. Barcha uchta maydon shaxsiy deb e'lon qilingan .
Maydon xususiy, ommaviy yoki himoyalangan deb e'lon qilinishi mumkin . Agar a
sinf komponenti uchun kirish darajasi ko'rsatilmagan bo'lsa, u sukut bo'yicha paketlangan hisoblanadi (ya'ni faqat bir xil paketning boshqa sinflari uchun mavjud). Bizning holatlarimizda uchta maydon shaxsiy deb e'lon qilingan. Bu shuni anglatadiki, ularga faqat Staff sinfining o'zidan kirish mumkin. Boshqa sinflar (masalan, ObjectOrientedDemo sinfi) bu maydonlarga kira olmaydi.
Boshqa sinflardan ushbu maydonlarga kirish istalmagan
ikki sababga ko'ra.

Birinchidan, boshqa sinflar bu sohalar haqida bilishlari shart emas. Misol uchun, bizning holatlarimizda hourlyRate maydoni faqat Staff sinfida kerak bo'ladi. Xodimlar sinfida xodimning oylik maoshini hisoblash uchun hourlyRate ishlatadigan usul mavjud. Boshqa sinflar hourlyRate maydonidan umuman foydalanmaydi. Shuning uchun, hourlyRate maydoni boshqa


sinflardan yashirin bo'lishi uchun shaxsiy deb e'lon qilinishi kerak.
Ushbu tushuncha inkapsulyatsiya deb ataladi . Inkapsulyatsiya sinfga ma'lumotlar va xatti-harakatlarni bu haqda bilishi shart bo'lmagan boshqa sinflardan yashirish imkonini beradi. Bu , agar kerak bo'lsa, kelajakda kodni osongina o'zgartirishga imkon beradi. hourlyRate qiymati boshqa sinflar uchun ta'sir qilmasdan xavfsiz tarzda o'zgartirilishi mumkin.
Maydonni xususiy deb e'lon qilishning ikkinchi sababi boshqa sinflar uni o'z xohishiga ko'ra o'zgartirmasligi kerak. Kirishni bloklash orqali
7.2. O'z darslaringizni yozish 115
sinf maydonlariga, siz tasodifiy yoki qasddan ma'lumotlarning buzilishi ehtimolini kamaytirasiz .
Kirish modifikatorlari quyida batafsilroq muhokama qilinadi
bob.

hourlyRate maydonini e'lon qilishda xususiy kalit so'zga qo'shimcha ravishda, yakuniy kalit so'z ham qo'shildi :


xususiy final int hourlyRate = 30;


Yakuniy kalit so'z qiymatni yaratilgandan keyin o'zgartirib bo'lmasligini bildiradi. Yakuniy kalit so'z


bilan e'lon qilingan har qanday o'zgaruvchi deklaratsiya
nuqtasida yoki konstruktor ichida ishga tushirilishi kerak (konstruktorlar keyinroq muhokama qilinadi).
Bizning misolimizda hourlyRate maydoni e'lon
qilinganda 30 ga ishga tushiriladi . Kelajakda siz o'zgartira olmaysi
bu qiymat.

      1. USULLARI

Endi usullarga o'tamiz.



Download 1,09 Mb.

Do'stlaringiz bilan baham:
1   ...   10   11   12   13   14   15   16   17   ...   24




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish