OYD ni tashkil etuvchilari:
Class-sinf
Object-ob’ekt
Inheritance-merosxo’rlik
Polimorphism-polimorfizm
Incapsulation-inkapsulyatsiya
Abstrction-mavhumlik
3-ilova.Paketlar va interfyslar
Java dasturlash tili klasslarni package nomli o’ramlarga guruhlash imkoniyatini beradi. Paketlarni qo’llashni asosiy maqsadi bu klass nomini qaytarilmasligini ta’minlashdir.
Interfeys klass bajarishi kerak bo’lgan metodlar to’plamini e’lon qiladi. Interfeysni interface kalit so’zi bilan e’lon qilinadi va interfeysda abstrakt, ya’ni metod tanasi bo’lmagan metodlar e’lon qilinadi.
4-ilova. Klasslar (Sinflar) va qobiqlar.
Javada sinflar quyidagilardan tashkil topadi:
Data member-o’zgaruvchilar
Method-funksiya
Constructor-konstrukor
Block-blok({} qavslar ichiga sinf tanasi yoziladi)
Class and interface-klass va interfeys.
6-ilova. Klass kolleksiyalari
Java klasslari:
Class String
Class Vector
Class Stack
Class Hashtable
Class String Tokenizer
Class String buffer
5-ilova.Satrlar va ular bilan ishlash.
Javada satr char tipining massivi bilan initsiallashtiriladi.String asosan char tipidagi qiymatlar ketma-ketligini ifodalovchi ob’ekt hisoblanadi.
Java String klassida quyidagi funksiyalardan foydalaniladi:
compare To()
concat()
cubstring()
equals()
indexOf()
length()
replace()
7-ilova.Klass utilitlar.
Kalendar klassi abstrakt bo’lib unda yulian,gregorian va oy(lunniy) kalendarlarining umumiy xususiyatlari to’plami.Java API da esa faqat bu klassning xosilaviy klassi sifatida GregorinCalendar mavjud.Kalendar abstrakt bo’lgani sababli uni 4 xil statik metodlar yordamida egzeplyarlari yaratiladi yoki soatlar poyasi bo’yicha:
1.Calendar getIntance();
2. Calendar getIntance(Locale loc);
3 Calendar getIntance(TimeZone tz);
4.Calendar getIntance(TimeZone tz, Locale loc);
8-ilova. Grafik interfeylarni qurish prinsipi.
Javada grafik interfeys qurish uchun quyidagi klasslardan foydalaniladi:
Abstract Window Toolkit(AWT)
Swing
9-ilova.Grafik primitiv(maxsus grafik klasslar).
Maxsus grafik klasslar;
Class Polygon
FontMetrics
BasicStroke
GeneralPath
GradientPaint va TexturePaint
11-ilova.komponentlarni o’rnatish.
AWT va Swing klasslarining layoutlari:
BorderLayout
FlowLayout
GridLayout
GardLayout
GridBagLayout
BoxLayout
CardLayout
SpringLayout
GroupLayout
10-ilova.Asosiy komponentlar.
Maydon komponentlari:
Button
Checkbox
ChecboxGroup
Choise
List
Matn kiritish komponentalari:
TextFiled
TextArea
Scrollbar
Panel
Fialog
Frame
12-ilova.Apletlar.
Java o’ziningbilovalaridan tashqari apletlar yaratish imkonini beradi.
Aplet bu programma bo’lib boshqa dasturiy sohalarda ishlaydi.Java nuqtai nazaridan bu Aplet sinfini kengaytirish bo’lib u o’z navbatida anel sinfini kengaytiradi.Aplet bu maxsus panel(konteyner) bo’lib qo’shimcha metod va xususiyatlarni o’zida joylashtiradi.Joylashtirish komponenti menejeri sifatida Panel sifidagi FlowLayout xizmat qiladi.
13-ilova. Qism jarayonlar.
Class Thread metodlari:
Start()
Run()
toString()
stop()
sleep()
yield()
Thread - bu bir nechta vazifalarning bir vaqtning o'zida bir jarayonda ishlashiga imkon berish uchun qulay muhit.
14-ilova. Javaning tarmoq vositalari.
www tizimida ishlash http protokoli asosida amalga oshriladi.Unda kengaytirilgan adresslar ya’ni URL qo’llaniladi.Javada socket sinfi mavjud.Socket sinfi java.io paketidan olingan.Java.net paketida serverlardan foydalnish uchun ServerSocket sinfidan foydalaniladi.Bu sinf konstruktorida port nomeri ko’rsatiladi.
ServerSocket(int port)
15-ilova.Javada ilovalar.
Javada operatsion sistemlarning boshqa imkoniyatlari va boshqa dasturlar imkoniyatlaridan foydalanish mumkin.Masalan jar arivatorini keltirish mumkin.Bu arxivator zip arxivator metodiga asoslangan.
2.3 Dasturlash tillarini o’qitishda innovatsion uslublar
Mavzu:Berilganlarning asosiy va primitiv turlari.
Java tilida programmada ishlatiladigan barcha o‘zgaruvchilar
qo‘llanishidan oldin ta’riflangan bo‘lishi kerak. Ko‘p programmalash
tillarida (Algol, Paskal, Delphi va h.k.) o‘zgaruvchilar programmaning bosh
qismida ta’riflanadi va bu o‘zgaruvchilar programmaning oxirigacha
xotiradan egallagan joylarini bo‘shatmaydilar. Java da esa o‘zgaruvchilarni
kerakli joyda (blokda) ta’riflash mumkin. Blokdan chiqish bilan o‘zgaruvchi
xotiradan egallagan joy bo‘shatiladi. Bu haqda keyinroq batafsil to‘xtalamiz.
O‘zgaruvchilarni ta’riflash deganda, uning qabul qiladigan qiymatiga
qarab turini aniqlashga aytiladi. Programma o‘zgaruvchining turiga qarab,
xotiradan mos joy ajratadi.
Java tilida malumotlar tiplari ikki guruhga bo’linadi: oddiy tiplar (primitive types)
va havola qiluvchi tiplar (reference types).
Havola qilivchi tiplarga massivlar (arrays), sinflar (classes), interfeyslar
(interfaces) va hisoblash tiplari (enum) kiradi.
Javada berilganlar toifalari
Primitiv(oddiy )toifa
Mantiqiy toifa
Butun
short
Sanoqli toifa
Sonli toifa
Haqiqiy
byte
char
long
int
double
float
Interfeys
Klass
Massiv
Ko’rsatkichli toifa(Havola qilivchi)
Javada sakkizta primitiv(oddiy) tip mavjud – byte,short,int,long,char,
float,double va boolean.Ularni to’rt turga ajratish mumkin.
1. Butun.Ularga byte, short, int, long turlarni kiradi.Bular belgili butun
sonlar uchun mo’ljallangan.
2. Haqiqiy(nuqtali) turlarga – float va double tegishli.Ular kasr sonlarni
ifodalovchi sonlarni taqdim etadi.
3. Char turi.Bu tur belgilar jadvali elementlarini ifodalovchi tur
hisoblanadi.
4. Boolean turi.Bu mantiqiy kattaliklarni tasvirlovchi maxsus tur
hisoblanadi.
Java dasturlash tilida unsigned(ishorasiz) ta’rifi ishlatilmaydi.
Butun qiymat qabul qiluvchi o‘zgaruvchilar.
Butun qiymat qabul qiluvchi o‘zgaruvchilar qabul qilishi mumkin
bo‘lgan qiymatning kattaligiga qarab, bir necha turga bo‘linadi (3.5-jadval).
O‘zgaruvchining
turi
|
Xotiradan
ajratiladigan joy
|
Qabul qilishi mumkin bo‘lgan qiymatning oralig‘i
|
byte
|
1 bayt
|
-27 dan +27-1 gacha
|
short
|
2 bayt
|
-215 dan +215-1 gacha
|
int
|
4 bayt
|
-231dan +231 -1 gacha
|
long
|
8 bayt
|
-263 dan +263-1gacha
|
3.5-jadval.
Misol:
byte a;
byte s;
byte G;
Yuqorida uchta o‘zgaruvchi ta’riflangan. Ta’riflovchi so‘z jadvalda
qanday yozilgan bo‘lsa, programmada ham shunday yoziladi, ya’ni byte
o‘rniga Byte yozish mumkin emas. Java tilida xizmatchi so‘zlarning qat’iy
yozilish qoidasi mavjud. O‘zgaruvchini ta’riflash nuqtali vergul bilan tugashi
shart. O‘zgaruvchilarning turi bir xil bo‘lsa, ularni umumlashtirish ham
mumkin. Yuqoridagini quyidagicha yozish ham mumkin:
byte a, s, G;
Bu holda uzgaruvchilar orasiga vergul belgisi qo‘yiladi. Bu qoidalar
boshqa turdagi o‘zgaruvchilar uchun ham o‘rinli:
short A, a;
int k,l,m; long v,h;
Haqiqiy turdagi o‘zgaruvchilar.
Haqiqiy turdagi o‘zgaruvchilar ikki xil bo‘ladi:
O‘zgaruvchining
turi
|
Xotiradan
ajratiladigan joy
|
Qabul qilishi mumkin bo‘lgan
qiymatning oralig‘i
|
float
|
4 bayt
|
1.4E-45 dan +3.4E+38 gacha
|
double
|
8 bayt
|
4.9E-324 dan +1.8E+308 gacha
|
Misol.
float x1, x2;
double d, s, pi;
Belgi o‘zgaruvchilar.
Qiymati bitta belgidan iborat bo‘lgan o‘zgaruvchilarni Java da ta’riflash
uchun char xizmatchi so‘zidan foydalaniladi. Bu turdagi o‘zgaruvchilar
uchun xotiradan ikki bayt joy ajratiladi. Misol:
char s$, f_f;
Mantiqiy turdagi o‘zgaruvchilar.
Qiymati mantiqiy kattalik bo‘lgan (true yoki false) o‘zgaruvchilarni
ta’riflash uchun boolean xizmatchi so‘zidan foydalaniladi. Misol:
boolean l, m, j;
Satrli o‘zgaruvchilar.
Qiymati ixtiyoriy satr bo‘lgan o‘zgaruvchilarni ta’riflash uchun String
xizmatchi so‘zidan foydalaniladi. Ammo, bu so‘z Java da klassning nomi
bo‘lgani uchun, undan keng ma’noda foydalanish mumkin. Bu haqda
keyinroq batafsil to‘xtalamiz. Hozircha String dan satrli o‘zgaruvchilarni
ta’riflashda foydalanamiz. Misol:
String aa, bb, cc;
String so‘zining yozilishiga e’tibor bering. Bu so‘z bosh harfdan
boshlangan.
Tipni keltirish.
Tipni keltirish(type casting) – C++ ning noqulay xossalaridan biridir,biroq bu xossa Java tilida ham saqlanib qolgan.Ba’zan shunaqa vaziyatlar yuzaga keladiki,sizda biror tipdagi kattalik mavjud,biroq uni boshqa tipdagi o’zgaruvchiga ta’minlashingiz kerak bo’ladi.Ba’zi tiplar uchun buni tipni keltirmasdan ham bajarish mumkin bo’lib,bunday hollarda tiplarni avtomatik almashtirish haqida gapiriladi.Javada avtomatik almashtirish faqat shu holda mumkinki,agar aylantirish natijasida hosil bo’luvchi o’zgaruvchining sonlarni tasvirlash aniqligi boshlang’ich qiymatni saqlash uchun yetarli bo’lsa.Bunday almashtirish M: byte yoki short tipidagi o’zgaruvchi qiymatini yoki o’zgarmasni int tipiga o’tkazishda yuz beradi.Bu kengayish (widening) yoki oshirish(promotion) deb nomlanadi,sababi kichikroq razryaddagi tip kattaroq sig’imli tipgacha kengayadi. Int tipining o’lchami byte tipi diapazonidagi sonlarni sig’dirish uchun doim yetarlidir.Kattalikni muayyan tipga keltirish uchun shu kattalikdan oldin qavs ichiga olingan tip nomini yozish kerak.Quyida keltirilgan kod parchasida manba tipi (int tipidagi o’zgaruvchi)ni voris tipiga(byte tipidagi o’zgaruvchiga) keltirish namoyish etiladi.Agar bu amal chog’ida butun qiymat byte uchun mumkin bo’lgan diapazon chegarasidan oshib ketganda edi,u byte diapazoniga modul bo’yicha bo’lish orqali kuchaytirilardi.(modul bo’yicha songa bo’lish natijasi – bu shu songa bo’lishda olingan qoldiq)
int a = 100;
byte b = (byte) a;
Ifodalarda tipning avtomatik almashtirilishi
Ifodaning qiymatini hisoblayotgan chog’ingizda oraliq natijalarni saqlash uchun talab etiladigan aniqlik yakuniy natijani ifodalash uchun talab etiluvchi aniqlikdan katta bo’lishi kerak.
byte a = 40;
byte b = 50;
byte с = 100;
int d = a* b / с;
(a*b) oraliq ifoda qiymati byte uchun ruxsat berilgan diapazondan oshib ketishi mumkin.Shu sababli Java avtomatik ravishda ifodaning har ikki tarafining tipini int tipigacha shunday oshirdiki,(a*b) qiymati uchun joy yetarli bo’ladi.
Avtomatik tip almashtirish ba’zan kutilmagan xatolar haqida transyatorning xabar berishiga olib keladi. M: Quyida keltirilgan kod korrekt ko’rinsada,translyatsiya fazasida xatolik haqida xabar beradi.Unda biz 50*2 qiymatni byte ozgaruvchiga joylashtirmoqchimiz 100 – byte tipida juda yaxshi joylashadi.Biroq natija tipining int ga avtomatik almashtirilishi natijasida translyatordan xatolik haqida xabarga ega bo’lamiz – sababi int ni byte ga ta’minlash chog’ida aniqlik yo’qotilishi mumkin.
byte b = 50;
b = b* 2;
^ Incompatible type for =. Explicit cast needed to convert int to byte. (= uchun mos kelmaydigan tiplik int ni byte ga oshkor keltirish zarur)
To’g’rilangan matn :
byte b = 50;
b = (byte) (b* 2);
natijasida b ga 100 qiymat to’g’ri ta’minlanishiga olib keladi.
Agar ifodada byte,short va int tipidagi o’zgaruvchilar ishlatilsa,u holda to’lib ketmaslik uchun butun ifoda tipi avtomatik int tipiga o’tkaziladi.Agar ifodada hech bo’lmasa bitta o’zgaruvchii tipi long bo’lsa,butun ifoda tipi ham longgacha oshiriladi.Oxirida L (yoki l) belgisi bo’lmagan butun literallar (o’zgaruvchilar) ega bo’ladi.Agar ifodada float tipidagi o’zgaruvchilar qatnashsa,ifoda tipi floatga o’tkaziladi.Agar ifodada hech bo’lmasa bitta oprant double tipida bo’lsa,butun ifoda doublega keltiriladi .Jimlik holatida Java barcha qo’zg’aluvchan nuqtali literallarni double tipiga ega deb qabul qilinadi.Quyida keltirilgan dastur ifodadagi har bir kattalikning tipi har birar operatorning ikkinchi operandi bilan mos bo’lishi uchun qanday qilib oshirilishi ko’rsatilgan.
class Promote {
public static void main (String args []) {
byte b = 42;
char с = 'a';
short s = 1024;
int i = 50000;
float f = 5.67f;
double d =.1234;
double result = (f* b) + (i/ c) - (d* s);
System. out. println ((f* b)+ "+ "+ (i / с)+ " - " + (d* s));
System. out. println ("result = "+ result); }}
Java dasturlash tilidagi ma’lumotlar tiplar o’rgatish jarayonida c++ dasturlash tilidagi ma’lumotlar tiplari qiyoslagan holda olib boramiz
Tur nomi
|
Java
dasturlash
tilida
qiymati
|
Java dasturlash tilida ishlatadigan xotira
|
Java dasturlash tilida turning qiymat chegarasi
|
C++
dasturlash
tilida
qiymati
|
C++ dasturlash tilida ishlatadigan xotira
|
C++ dasturlash tilida turning qiymat chegarasi
|
boolean
|
true yoki false
|
1 byte
|
|
true yoki false
|
1 byte
|
|
char
|
Bitta xarf
|
2 byte
|
Barcha Unikod xarflari
|
Bitta xarf
|
1 byte
|
0..255
|
byte
|
Butun son
|
1 byte
|
-128 dan 127 gacha
|
ba'zi bir kontekstlarda char
|
1 byte
|
-128 dan 127 gacha
|
short
|
Butun son
|
2 byte
|
-32768 dan 32767 gacha
|
Butun son
|
2 byte
|
–32,768 to 32,767
|
int
|
Butun son
|
4 byte
|
-2147483648 dan 2147483647 gacha
|
Butun son
|
4 byte
|
-32768.. 32767
|
long
|
Butun son
|
8 byte
|
-9223372036854775808 dan 9223372036854775807 gacha
|
Butun son
|
4 byte
|
–2,147,483,648 to 2,147,483,647
|
float
|
Ratsional son
|
4 byte
|
byte -3.40282347*10+38 dan -1.40239846*10-45 gacha
|
Ratsional son
|
4 byte
|
1.2Е-38..3.4Е38
|
double
|
Ratsional son
|
8 byte
|
±1.76769313486231570*10+308 dan ±4.94065645841246544*10-324 gacha
|
Ratsional son
|
8 byte
|
2.2Е-308..1.8Е308
|
Bu qiyosiy jadvalimizda shuni takidlashimiz joizki ma’lumotlarni tiplari dasturlash tillarida asosi bir xil,ya’ni dasturlash tillarida malumotlarni tiplari bir xil ammo dasturdagi yozilish buyruq kodlari sintaksis jihatidan har xil ifodalanadi.Java va C++ dasturlash tillarida ma’lumotlar tiplari deyarli bir xil ammo,Javada byte tipi char tipi ma’lumotlarni ham o’z ichiga oladi.Java va C++ tilida ma’lumot tiplari bir xil bo’lsada ularni qiymatlar chegarasi har xil.Masalan int tipining Java da qiymatlar chegarasi -2147483648 dan 2147483647 gacha C++ da esa -32768.. 32767 ,long tipining Java da qiymatlar chegarasi -9223372036854775808 dan 9223372036854775807 gacha C++ da esa
–2,147,483,648 to 2,147,483,647.
Do'stlaringiz bilan baham: |