Javada ob’ektga mo’ljallangan dasturlash, Polimarfizm
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