logo

Javada ob’ektga mo’ljallangan dasturlash, Polimarfizm

Загружено в:

08.08.2023

Скачано:

0

Размер:

31.326171875 KB
Javada ob’ektga mo’ljallangan dasturlash, Polimarfizm.
Reja:
1. Nazariy qism
a) Ob’yektga mo’ljallangan dasturlash
b) Javada ob’yektga mo’ljallangan dasturlash
2. Amaliy qism
a) Polimarfizm
3. Xulosa
4. Adabiyotlar 1 . 
Obyektlarga   ixtisoslashgan   dasturlash   xozirgi   kunda   asosiy   dasturlash
paradigmasi xisoblanib, 1970 yillarda yaratilgan protsedurali dasturlash texnikasini
o’rniga   keldi.   Obyektlarga   ixtisoslashgan   dizayn   dasturni   bir   necha   to’laqon,   bir
biri   bilan   ishlovchi   dastur   komponentlari,   ya’ni   obyektlarga   bo’lish   imkoniyatini
birdiradi. Obyektlarga ixtisoslashgan dasturlashni maqsadi mavjud muammoni bir
necha kichik, oson xal  qilib bo’linadigan muammolarga bo’lish xisoblanadi.   Java
dasturlash tili to’laqon obyektlarga ixtisoslashgan dasturlash tilidir. 
Obyektlarni   dizayn   qilish   uslubi   bu   dasturni   obyektlarga   bo’lish   uchun
mo’ljallangan  qoidalar  majmui.   Ko’pincha   bu  real   dunyo  element   va  xodisalarini
dastur   komponentlariga   bog’lash   xisoblanadi.   Dasturni   qayta   ishlatish
imkoniyatiga ega bo’lgan obyektlarga bo’lishni turli xil uslublari mavjud. 
Obyektlarga   ixtisoslashgan   dasturlashning   unumdorligini   asosiy   sababi   bu
xar bir obyektni o’ziga tegishli vazifani bajarish majburiyati mavjudligi. Agar biror
obyekt o’zini majburiyati bo’lmagan vazifaga bog’liq bo’lsa u xolda ushbu vazini
bajaruvchi   boyektga   murojaat   qilishi   kerak.   Birinchi   obyekt   ikkinchi   oyektdan
vazifani   bajarishni   so’raydi   (Java   dasturlash   tilida   ushbu   so’rov   metod   chaqiruvi
orqali amalga oshiriladi).
Klasslar 
Klasslar   Java   dasturining   tashkiliy   elementi   xisoblanadi.   Klass   metodlarni,
o’zgaruvchilarni,   izitsializatsiya   kodi   va   boshqa   klasslarni   o’z   ichiga   olishi
mumkin.   U   klass   na’munalarini,   klass   strukturasini   bajaruvchi   obyektlarini,
yaratish   uchun   andoza   xisoblanadi.   Klass   class   kalit   so’zi   orqali   el’on   qilinadi.
Klassning  metod  va  o’zgaruvchilari  uning  figurali  qavslari   ichida,  ya’ni   tanasida,
joylashadi. Masalan: 
class Avtomobil 
{ 
int tezligi;  
double narxi; 
String rangi; 
public int getTezligi() 
{ 
return tezligi; 
} 
}
Yuqoridagi   Avtomobil   klassi   uchta   o’zgaruvchilarni   o’z   ichiga   oladi,   bular
tezligi,   narxi   va   rangi.   Ushbu   klass   getTezlik()   metodini   xam   belgilaydi.
Avtomobil   klassi   e’lon   qilingandan   so’ng   Avtomobil   obyektini   yaratib   olish
mumkin. Buning uchun quyidagi ifodadan foydalanish mumkin: 
Avtomobil a; 
a = new Avtomobil(); 
Yuqoridagi   dastur   kodining   birinchi   qatorida   Avtomobil   turidagi   a
o’zgaruvchisi   e’lon   qilingan.   Ikkinchi   qatorda   new   kalit   so’zi   yordamida
Avtomobil   obyekti   yaratilib   a   o’zgaruvchisiga   biriktirilgan.   Avtomobil   obyekti
yaratilgandan so’ng uning o’zgaruvchilari va metodlariga murojaat qilish mumkin.
Masalan: 
a.tezligi = 200; 
int tez = a.getTezligi();   2 .  Polimorfizm
Polimorfizm   orqali   bir   jarayonni   turli   yo'llar   bilan   tashkillashtirishimiz
mumkin.   Polimorfizm   so'zi   yunoncha   ikki   so'zning   birikmasidan   tashkil   otpgan
«poly» — Ko'p va «morphs» — formalar. Polimorfizm  ham   ko'p formalar   degan
ma'noni anglatadi.
Javada polimorfizmni ikki turi mavjud: programma kompilatsiya bo'layotgan
vaqtda   sodir   bo'ladigan   polimorfizm   (compile   time   polymorphism,   static
polymorphism)   va   programma   ishlab   turgan   vaqtda   sodir   bo'ladigan   polimorfizm
(runtime polymorphism, dynamic polymorphism). Javada polimorfizm metodlarni
qayta yuklash (overload) va qayta yozish (override) bilan amalga oshiriladi.
Compile time polimorfizm
Agar metodni   qayta	
 yuklansa	 (overload)   bu — compile time polimorfizmga
misol   bo'ladi.   Ya'ni,   agar   class   ichida   bir   xil   nomli,   ammo   argumentlarning   soni
yoki argumentlarning ma'lumot tipi (yoki ikkalasi) farq qiladigan metodlar mavjud
bo'lsa, bu compile time polimorfizm bo'ladi. 
M isol : class   X
{
    void   metodA ( int  num)
   {
       System. out .println ( "metodA:"  + num);
   }
    void   metodA ( int  num1,  int  num2)
   {
       System. out .println ( "metodA:"  + num1 +  ","  + num2)
   }
    double   metodA ( double  num) {
       System. out .println( "metodA:"  + num);
        return  num;
   }
}
class   Y
{
    public   static   void   main  (String args [])
   {
       X Obj =  new  X();
        double  natija;
       Obj.metodA( 20 );
       Obj.metodA( 20 ,  30 );
       result = Obj.metodA( 5.5 );
       System. out .println( "Javob:"  + natija);
    }
}
metodA : 20
metodA: 20 , 30
metodA: 5.5 Javob: 5.5
Yuqoridagi misolda, X classning 3 ta metodi bor. Uchala metodlarning xam
nomlari   bir   xil   —   metodA ,   ammo   metodlarning   argumentlarida   farqlar   mavjud.
Kompilyatsiya vaqtida kompilyator metodga yuborilayotgan argumentlarning soni
va ma'lumot tipiga qarab kerakli metodni tanlab oladi. Qaysi metodlarni chaqirish
kompilatsiya   vaqtida   aniqlanishi   tufayli   ham   bu   polimorfizm   turi   Compile   time
polimorfizm deb nomlanadi.
Compile   time   polimorfizmni   yana   Static   binding,   Early   binding   deb   ham
ataladi .
Runtime polimorfizm
Dastlab   casting,   up-casting   va   down-casting   tushunchalari   bilan   tanishib
olaylik   (Aslida,   runtime   polimorfizmni   tushunish   un   faqat   up-casting   ni   o'zini
bilish   yetadi,  ammo   men  to'lqiroq  yozdim).  Obyektni   bir   toifadan   boshqa   toifaga
o'tkazishga casting   deyiladi.
Agar   ota   classning   obyekti   bola   class   toifasga   o'tkazilsa   bu   down-
casting   deyiladi. Misol:
Object  satrObject = "Bu shunchaki satr"; // Object - ota class
String  satrString = ( String )ObyektSatr; // String - Object classning bola classi
Yuqoridagi   misolda   Object   toifasidagi   o'zgravchi   (satrObject)   String
toifasiga   o'zgartirilayapti.   Bilamizki,   Obyekt   class   barcha   classlarning   otasi
hisoblanadi.
Agar   bola   classning   obyekti   ota   class   toifasga   o'tkazilsa   bu   up -casting   deyiladi.
Misol:
String  satrString = "Bu shunchaki satr"; 
Object  satrObject = ( Object )satrString; Agar   ota   classning   o'zgaruvchisi   bola   class   obyektini ko'rsatsa   (xotiradagi
adresini ko'rsatsa) ham up-casting deyiladi. Misol:
class   A {}  
class   B   extends   A {}
A a =  new  B(); //upcasting
Yuqoridagi misolda A class toifasidagi a o'zgaruvchi (reference variable) B
bola classning   obyektini	
 ko'rsatadi   (hotiradagi adresini ko'rsatadi).
Runtime   polimorfizmda   bola   classdagi   override   qilingan   metod,   ota   class
toifasidagi o'zgaruvchi orqali chaqiriladi. Quyidagi misolga qarang:
class   Chevrolet {  
   void   run (){System. out .println("running");}  
}  
class   Malibu   extends   Chevrolet {  
   void   run (){System. out .println("CHevrolet Malibu");}  
  
   public   static   void   main (String args[]){  
    Chevrolet ch =  new  Malibu();//upcasting  
    ch.run();  
  }  
}
Naija:
CHevrolet  Malibu 
Yuqoridagi   misolda   biz   ikkita   class   yaratayapmiz.   Malibu   class   Chevrolet
class dan nasl olayapti va run() metodni qayta yozayapti (override). Qayta yozilgan
run metod ota class toifasidagi o'zgaruvchi ch orqali chaqirilayapti. ch o'zgaruvchi Malibu toifasidagi  obyektga ko'rsatayotgani  uchun Malibu classda qayta yozilgan
metod chaqiriladi.
Xulosa
Men   ushbu   mustaqil   ishni   bajarish   jarayonida   oby’ektga   yo’naltirilgan
dasturlash,   java   dasturlash   tilida   ob’yektga   yo’naltirilgan   dasturlash,   polimorfizm
haqida   bilimlarga   ega   bo’ldim   va   olgan   bilimlarimni   misollar   yordamida
mustahkamladim.  Foydalanilgan adabiyotlar
1.   Язык программирования  Java   SE  8. Подробное описание   Авторы: 
Джеймс Гослинг, Билл Джой
Год: 2015
2. Irmuhamedov   Z.M.   va   boshqalar.   Informatika.5.Axborot   texnologiyalari.
Toshkent, 1-qism.  2002, 2-qism. 2003
3. http://fayllar.org
4. https://www.onlinegdb.com/online_java_compiler

Javada ob’ektga mo’ljallangan dasturlash, Polimarfizm. Reja: 1. Nazariy qism a) Ob’yektga mo’ljallangan dasturlash b) Javada ob’yektga mo’ljallangan dasturlash 2. Amaliy qism a) Polimarfizm 3. Xulosa 4. Adabiyotlar

1 . Obyektlarga ixtisoslashgan dasturlash xozirgi kunda asosiy dasturlash paradigmasi xisoblanib, 1970 yillarda yaratilgan protsedurali dasturlash texnikasini o’rniga keldi. Obyektlarga ixtisoslashgan dizayn dasturni bir necha to’laqon, bir biri bilan ishlovchi dastur komponentlari, ya’ni obyektlarga bo’lish imkoniyatini birdiradi. Obyektlarga ixtisoslashgan dasturlashni maqsadi mavjud muammoni bir necha kichik, oson xal qilib bo’linadigan muammolarga bo’lish xisoblanadi. Java dasturlash tili to’laqon obyektlarga ixtisoslashgan dasturlash tilidir. Obyektlarni dizayn qilish uslubi bu dasturni obyektlarga bo’lish uchun mo’ljallangan qoidalar majmui. Ko’pincha bu real dunyo element va xodisalarini dastur komponentlariga bog’lash xisoblanadi. Dasturni qayta ishlatish imkoniyatiga ega bo’lgan obyektlarga bo’lishni turli xil uslublari mavjud. Obyektlarga ixtisoslashgan dasturlashning unumdorligini asosiy sababi bu xar bir obyektni o’ziga tegishli vazifani bajarish majburiyati mavjudligi. Agar biror obyekt o’zini majburiyati bo’lmagan vazifaga bog’liq bo’lsa u xolda ushbu vazini bajaruvchi boyektga murojaat qilishi kerak. Birinchi obyekt ikkinchi oyektdan vazifani bajarishni so’raydi (Java dasturlash tilida ushbu so’rov metod chaqiruvi orqali amalga oshiriladi). Klasslar Klasslar Java dasturining tashkiliy elementi xisoblanadi. Klass metodlarni, o’zgaruvchilarni, izitsializatsiya kodi va boshqa klasslarni o’z ichiga olishi mumkin. U klass na’munalarini, klass strukturasini bajaruvchi obyektlarini, yaratish uchun andoza xisoblanadi. Klass class kalit so’zi orqali el’on qilinadi. Klassning metod va o’zgaruvchilari uning figurali qavslari ichida, ya’ni tanasida, joylashadi. Masalan: class Avtomobil { int tezligi;

double narxi; String rangi; public int getTezligi() { return tezligi; } } Yuqoridagi Avtomobil klassi uchta o’zgaruvchilarni o’z ichiga oladi, bular tezligi, narxi va rangi. Ushbu klass getTezlik() metodini xam belgilaydi. Avtomobil klassi e’lon qilingandan so’ng Avtomobil obyektini yaratib olish mumkin. Buning uchun quyidagi ifodadan foydalanish mumkin: Avtomobil a; a = new Avtomobil(); Yuqoridagi dastur kodining birinchi qatorida Avtomobil turidagi a o’zgaruvchisi e’lon qilingan. Ikkinchi qatorda new kalit so’zi yordamida Avtomobil obyekti yaratilib a o’zgaruvchisiga biriktirilgan. Avtomobil obyekti yaratilgandan so’ng uning o’zgaruvchilari va metodlariga murojaat qilish mumkin. Masalan: a.tezligi = 200; int tez = a.getTezligi();

2 . Polimorfizm Polimorfizm orqali bir jarayonni turli yo'llar bilan tashkillashtirishimiz mumkin. Polimorfizm so'zi yunoncha ikki so'zning birikmasidan tashkil otpgan «poly» — Ko'p va «morphs» — formalar. Polimorfizm ham   ko'p formalar degan ma'noni anglatadi. Javada polimorfizmni ikki turi mavjud: programma kompilatsiya bo'layotgan vaqtda sodir bo'ladigan polimorfizm (compile time polymorphism, static polymorphism) va programma ishlab turgan vaqtda sodir bo'ladigan polimorfizm (runtime polymorphism, dynamic polymorphism). Javada polimorfizm metodlarni qayta yuklash (overload) va qayta yozish (override) bilan amalga oshiriladi. Compile time polimorfizm Agar metodni qayta  yuklansa  (overload) bu — compile time polimorfizmga misol bo'ladi. Ya'ni, agar class ichida bir xil nomli, ammo argumentlarning soni yoki argumentlarning ma'lumot tipi (yoki ikkalasi) farq qiladigan metodlar mavjud bo'lsa, bu compile time polimorfizm bo'ladi. M isol :

class X { void metodA ( int num) { System. out .println ( "metodA:" + num); } void metodA ( int num1, int num2) { System. out .println ( "metodA:" + num1 + "," + num2) } double metodA ( double num) { System. out .println( "metodA:" + num); return num; } } class Y { public static void main (String args []) { X Obj = new X(); double natija; Obj.metodA( 20 ); Obj.metodA( 20 , 30 ); result = Obj.metodA( 5.5 ); System. out .println( "Javob:" + natija); } } metodA : 20 metodA: 20 , 30 metodA: 5.5