Klass a’zolari va metodlarni ko’rinilishi
Obyektlarga ixtisoslashgan dezaynni asosiy xususiyatlaridan biri bu ma’lumotni berkitish, ya’ni enkapsulyatsiya xisoblanadi. Enkapsulyatsiyaning asosiy maqsadi bu obyekt o’zgaruvchilarini tashqi obyektlarni to’g’ridan to’g’ri murojaatidan berkitish xisoblanadi. Bu bilan obyekt o’zgaruvchilariga noto’g’ri qiymatlarni berilishi oldi olinadi. Masalan, Avtomobil obyektini tezlik o’zgaruvchisiga manfiy qiymat berilishi. Enkapsulyatsiyaning yana bir afzalligi bu obyekt bajaradigan amallarini qay tarzda bajarilishini berkitishdir. Masalan, Telefon obyekti aloqaniUrnatish() metodi yordamida tarmoq orqali aloqani o’rnatsa, ushbu metod qay tarzda aloqani o’rnatishi (ya’ni qanday tarmoqda, qaysi tarmoq protokolini qo’llab, ma’lumotlarni qay tarzda uzatib) tashqi muxitdan berkitiladi. Boshqa obyektlar Telefon obyekti yordamida aloqa o’natishi uchun aloqaniUrnatish() metodini chaqirishi lozim xolos.
Obyekt a’zolarini boshqa obyektlardan yashirish uchun o’zgartiruvchilar qo’llaniladi. Java dasturlash tilida to’rt turdagi o’zgartiruvchilar qo’llaniladi, bular:
1. private
2. o’zgartiruvchisiz (default)
3. protected
4. public
private o’zgartiruvchisi klass a’zosini boshqa klasslarga ko’rinmaydigan qilib qo’yadi. private o’zgartiruvchili klass a’zosiga faqatgina ushbu klassni boshqa a’zolari murojaat qilishi mumkin.
O’zgartiruvchisi bo’lmagan klass a’zosi klass joylashgan o’ramning boshqa klasslariga ko’rinadi. Ya’ni bunday klass a’zosiga murojaat qila olish uchun klasslar bir o’ramda bo’lishi lozim.
protected o’zgartiruvchisi klass a’zosini boshqa o’ramda joylashgan ushbu klassni ostki klassiga va klass joylashgan o’ramning boshqa klasslariga ko’rinarli qiladi.public o’zgartiruvchisi klass a’zosini barcha klasslarga ko’rinarli qiladi.
Quyidagi rasmda klass a’zolarini o’zgartiruvchisiga qarab ko’rinilish darajasi keltirilgan.
Klass a’zolarining o’zgartiruvchilari va ularning a’zo ko’rinilishiga ta’siri
Object klassi
Java dasturlash tilida barcha classlar Object klassini avtomatik ravishda kengaytiradi. Klass Object klassini kengaytirishi uchun ushbu klass nomidan keyin extends Object ifodasini yozish shart emas. Java ushbu ifodani avtomatik ravishda qo’shib qo’yadi.
Object klassi bir necha muxim metodlarga ega. Kengaytirish qoidasiga asosan barcha klasslar Object klassi a’zolarini (jumladan metodlarini) meros qilib oladi. Quyida Object klassini asosiy metodlarini ko’rib chiqamiz.
equals() metodi
Object klassining equals() metodi ikki obyektni tengligini tekshiradi. Metod quyidagi ko’rinishda e’lon qilingan:
public boolean equals(Object obj)
{
…
}
equals() metodi boshqa obyektni qabul qiladi va mantiqiy qiymatni (obyektlar teng bo’lganda true, aks xolda false qiymatini) qaytaradi. Object klassida e’lon qilinishi bo’yicha equals() metodi tenglikga tekshirilayotgan obyektlar bir xil obyekt o’zgaruvchilari tomonidan murojaat qilinayotganligi tekshiriladi. Meros qilib olingan metodlarni qayta e’lon qilish imkoniyati mavjud bo’lganligi sababli, equals() metodini xam qayta e’lon qilib olish mumkin.
Masalan, agar ikkita kitob bir xil nom va varoqlar soniga ega bo’lsa ular bir xil xisoblansin. Ushbu me’zonga asosan tenglikni tekshiradigan equals() metodini quyidagicha qayta e’lon qilish mumkin:
public class Kitob{
int varoqlarSoni;
String nomi;
public boolean equals(Object obj)
{
return nomi.equals(obj.name) && varoqlarSoni == obj.VaroqlarSoni;
}
}
Yuqorida qayta e’lon qilingan equals() metodi Kitob obyektlarini tengligini tekshirish uchun qayta e’lon qilingan.
hashCode() metodi
hashCode() metodi joriy obyektni maxsus kodini qaytaradi. Ushbu maxsus kod obyekt mazmuni asosida xisoblanadi. Object klassida e’lon qilinishi bo’yicha hachCode() metodi xar bir obyekt namunasiga, ya’ni bitta klass andozasi asosida yaratilgan obyektga, qaytarilmas sonni maxsus kod sifatida belgilaydi. Maxsus kod obyektlarni to’plamlarda saqlash uchun ishlatiladi.
toString() metodi
toString() metodi obyektni matn qiymatini qaytaradi. Ushbu metod asosan obyekt va uning xolati xaqida ma’lumot berish uchun qo’llaniladi. Masalan:
Scooter s = new Scooter();
System.out.println(s.toString());
Yuqoridagi dastur kodi quyidagi malumotni ekranga chiqarib beradi:
Scooter@42e816
Meros qilib olingan boshqa metodlar singari toString() metodini qayta e’lon qilib olish mumkin. Masalan, toString() metodi quyidagicha qayta e’lon qilingan bo’lsin:
public class Scooter
{
public String toString()
{
return “Scooter bu kichik mototsikl”;
}
}
Bunda,
Scooter s = new Scooter();
System.out.println(s.toString());
dastur kodi quyidagi ma’lumotni ekranga chiqarib beradi:
Scooter bu kichik mototsikl
Dostları ilə paylaş: |