O’zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarini rivojlanshtirish vazirligi


Vorislikdan foydalanish xususiyatlari. Interfeyslar


Download 193.07 Kb.
bet14/17
Sana24.12.2022
Hajmi193.07 Kb.
#1057035
1   ...   9   10   11   12   13   14   15   16   17
Bog'liq
Qozoqov Abdulaziz loyiha ishi

2.3 Vorislikdan foydalanish xususiyatlari. Interfeyslar
Object sinfi hamma sinflar ajdodi hisoblanadi. Java tilida xar bir sinf Object sinfini kengaytiradi. Lekin class Employee extends Oblects yozish shart emas. Agar supersinf oshkor ko‘rsatilmagan bo‘lsa Object supersinf hisoblanadi. Java tilida xar bir sinf Object sinfini kengaytirgani uchun Object sinfi imkoniyatlarini bilish muximdir.
Object tipidagi o‘zgaruvchini ixtiyoriy tipdagi obyektga ilova sifatida ishlatish mumkin:
Object obj = new Employee("Garri Хaker", 35000);
Bu tipdagi o‘zgaruvchidan foydalanish uchun avval boshlang‘ich tipni aniqlab, tiplarni keltirishni amalga oshirish lozim:
Employee ye = (Employee) obj;
Object sinfining equals usuli ikki obyekt bir xilligini tekshiradi. Lekin equals usuli Object sinfiga tegishli bo‘lgani uchun, ikkalasi bir xotira qismiga ilova qilganligini tekshiradi. Ikki obyekt ekvivalentligini tekshirish uchun equals usulini qo‘shimcha yuklash lozim. Mukammal equals usuli yaratish qoidalari.

  1. Oshkor otherObject parametrini chaqirish — keyinchalik uning tipini other deb atalgan boshqa o‘zgaruvchi tipiga keltirish lozim.

  2. Тekshirish, this va otherObject ilovalar bir xilmi:

i f ( this == otherObject) return true;
Odatda obyektlar maydonini solishtirgandan ko‘ra ilovalarni solishtirish osondir.

  1. Тekshirish otherObject ilova nulga (null) tengmi. Agar xa bo‘lsa false qiymat qaytarish. Bu tekshirishni albatta amalga oshirish lozim.

if (otherObject == null) return false;

  1. Тekshirish this va other obyektlari bitta sinfga tegishlimi. Bu tekshirish "simmetriklik qoidasiga " ko‘ra majburiydir. if (getClass() != otherObject.getClass()) return false;

  2. Тalab qilingan sinf o‘zgaruvchisiga otherObject obyektini o‘zgartirish:

ClassName other = (ClassName)otherObject;

  1. Хamma maydonlarni solishtirish. Asosiy tipdagi maydonlar uchun == operatori, obyektli maydonlar uchun —equals usuli qo‘llanadi. Agar ikki obyekt hamma mydonlari bir xil bo‘lsa true qaytarish, aks holda false.

Albatta voris sinf yaratgan lasturchi o‘z toString usulini yaratishi va voris sinf nomini qo‘shishi lozim. Agar supersinfda getClass ().getNamef() usuli chaqirilsa, voris sinf super.ToString ( ) usulini chaqiradi. Manager sinfida toString usuliga misol.
class manager extends Employee
{
public String toString()
{
return super.toString()+ "[bonus=" + bonus
Endi Manager sinfi obyekti xolati quyidagi shaklda chiqariladi: Manager[name=...,salary=...,hireDay=...][bonus=...]
Agar obyekt satr bilan "+" amali yordamida konkatenatsiya qilinsa Java tili kompilyatori obyekt joriy xolatini olish uchun avtomatik ravishda toString usulini chaqiradi.
Birorr x — ixtiyoriy obyekt uchun dasturchi System.out.println(x) usulini chaqirsin;
Bu holda println usuli x. toString () usulini chaqiradi va natija satrini chiqaradi. Object sinfida aniqlangan toString usuli sinf nomi va obyekt adresini chiqaradi.
Masalan
System.out.println(System.out);
chaqirish natijasida quyidagi satr xosil bo‘ladi java.io.PrintStream@2f668 4
Buning sababi shuki PrintStream sinfida toString usuli qo‘shimcha yuklanmagan.
Standart bibliotekaga tegishli ko‘p sinflarda toString usuli shunday aniqlanganki, uning yordamida dasturni sozlash uchun kerakli ma’lumot olish mumkin. Ba’zi sozlovchilar obyektlar xolatini ekranda akslantinrish uchun toString usulini
chaqirishga imkon beradi. Shuning uchun dastur trassirovkasida, quyidagi ifodalardan foydalanish mumkin
System.out.println{"Joriy xolat = " + position);
Object tipidagi o‘zgaruvchilarda ixtiyoriy sinf o‘zgaruvchilari qiymati saqlanishi mumkin, masalan String sinfi:
Object obj = "Salom"; // Тo‘g‘ri.
Lekin sonlar, simvollar va mantiqiy o‘zgaruvchilar obyektlarga kirmaydi. obj = 5 ; // Noto‘g‘ri.
obj = false; // Noto‘g‘ri.
Bundan tashqari hamma tipdagi massivlar, ularda obyektlar yoki asosiy tiplardagi o‘zgaruvchilar saqlanishiga qaramay Object sinfi vorisi hisoblanadi.
Employee staff [] = new Employee[10]; Object arr = staff; // Тo‘g‘ri.
arr = new int[10]; // Тo‘g‘ri.
Biror sinfga tegishli obyektlar massivini Object sinfi obyektlari massiviga aylantirish mumkin. Masalan, Employee[] sinfi massivini Object[ ] sinfi massivini kutayotgan usulga uzatish mumkin. Bu usul umumlashgan dasturlash uchun foydalidir (generic programming).
Quyida umumlashgan dasturlash konsepsiyasini ko‘rsatuvchi misol keltirilgan.
Bu misolda massivda element indeksini aniqlash lozim. static int find(Object[] a, Object key)
(int i;
For
Employee staff[] = new Employee[10]; Employee harry;
int n = find(staff, harry);
SHuni ta’kidlab o‘tish lozimki Object[ ] tpi massivini faqat biror sinf obyektlari massiviga aylantirish mumkin. Preobrazovat massiv tipa int[ ] v massiv tipa Object[] tipi massiviga int[ ] tipi massivini o‘zgartirish mumkin emas.
Agar biror sinf obyektlaridan massiv, Object[ ] tipidagi massivga aylantirilsa, umumlashgan massiv boshlang‘ich tip xaqidagi ma’lumotni o‘zida saqlab qoladi. Bu massivga boshqa tipdagi elementni joylashtirish mumkin emas.
XULOSA
Ma’lumki, dastur tuzish sermashaqqat jarayon, lekin Delphi tizimi bu ishni sezilarli darajada soddalashtiradi va masala turiga qarab dastur tuzuvchi ishining 50– 80%ni tizimga yuklaydi. Delphi tizimi dasturni loyihalash va yaratish vaqtini kamaytiradi, hamda Windows muhitida ishlovchi dastur ilovalarini tuzish jarayonini osonlashtiradi.
Delphi - Windows muhitida ishlaydigan dastur tuzish uchun qulay bo‘lgan vosita bo‘lib, kompyuterda dastur yaratish ishlarini avto- matlashtiradi, xatoliklarni kamaytiradi va dastur tuzuvchi mehnatini yengillashtiradi. Delphida dastur zamonaviy vizual loyihalash texnolo-giyasi asosida obyektga mo‘ljallangan dasturlash nazariyasini hisobga olgan holda tuziladi. Delphi tizimi Turbo Pascal 7.0. tilining rivoji bo‘lgan obyektga mo‘ljallangan Object Pascal dasturlash tilini ishlatadi. Obyektga mo‘ljallangan yondoshuv dasturiy tizimlarni dasturlash tiliga bog‘liq bo‘lmagan holda yaratishda modellardan sistematik foydalanishga asoslangan. Har bir model uning o‘zi aks ettirayotgan predmetning hamma xususiyatlarini ifodalay olmaydi, u faqat ba’zi juda muhim belgilarini ifodalaydi. Demak model o‘zi aks ettirayotgan predmetga nisbatan ancha sodda bo‘ladi. Bizga shu narsa muhimki model endi formal konstruktsiya hisoblanadi: modellarning formalligi esa ular orasidagi formal bog‘lanishlarni aniqlashni va ular orasida formal operatsiyalar bajarishni ta’minlaydi. Bu ish modellarni ishlab chiqishni va o‘rganishni hamda kompyuterda realizatsiya qilishni osonlashtiradi.Xususan esa, modellarning formal xarakteri yaratilayotgan dasturning formal modelini olishni ta’minlaydi. Har bir sinfni ikkita muhim jihati mavjud: u arxitektura birligini moduli hisoblanadi,va u bir necha ma’lumotlar turlarini aniqlagan holda sermazmun tushunchaga ega. Dastur tizimi sinflari hammasi bir-biri bilan o‘zaro aniq bog‘lanishda bo‘ladi. Vorislik paytida bazaviy sinf yangi atributlar va operatsiyalar hisobiga yanada o‘sadi. Hosila sinfda odatda yangi ma’lumotlar a’zolari, xususiyatlar va metodlar paydo bo‘ladi. Obyektlar bilan ishlashda dasturchi odatda aniq masalani hal qilish uchun eng to‘g‘ri keladigan sinfni tanlaydi, hamda undan bitta yoki bir nechta voris avlod yaratadiki, ular o‘z otalarida mavjud imkoniyatlardan ko‘proq imkoniyatga ega bo‘ladilar. Do‘stona funksiyalar hosila sinfga barcha tashqi sinflar ma’lumotlari a’zolariga kirish huquqini olish imkonini beradilar.
C++ o‘zi istisno xolatlarni yuzaga keltirmaydi. Ularni C++ ning throw operatoridan foydalangan dasturlar yuzaga keltiradi. Istisno yuzaga kelganda, throw operatoridagi nom berish ifodasi muvaqqat obyektni nomlaydi (initsiallashtiradi), Bunda muvaqqat obyektning turi ifoda argumenti (dalili) ning turiga mos keladi. Ushbu obyektning boshqa nusxlari, masalan, istisno obyektidan nusxa ko‘chirish konstruktori yordamida generatsiya qilinishi mumkin.


Download 193.07 Kb.

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




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