Samarqand davlat universiteti raqamli texnologiyalar fakulteti optimal boshqaruv usullari kafedrasi


Takrorlash uchun savol va topshiriqlar



Yüklə 1,58 Mb.
səhifə39/79
tarix14.12.2023
ölçüsü1,58 Mb.
#179928
1   ...   35   36   37   38   39   40   41   42   ...   79
Java MAJMUA

Takrorlash uchun savol va topshiriqlar:

1. Obyektlarga ixtisoslashgan dasturlashning afzalliklari nimalardan iborat?


2. Klass deganda nima tushuniladi?
3. Klass qanday e’lon qilinadi?
4. Metod nima vazifani bajaradi?
5. Metod qayerda e’lon qilinadi?
6. Lokal o’zgaruvchi deganda nima tushuniladi?
7. Obyekt qanday va nima asosida yaratiladi?
8. Obyekt qachon o’chiriladi?



  1. Ostki klasslar va irsiyat

Java dasturlash tilida klasslar ierarxiyada joylashadi. extend kalit so’zi yordamida bir klass ikkinchi klassni ostki klassi sifatida e’lon qilinishi, ya’ni kengaytirishi mumkin. Ostki klass yuqori klass a’zolarini, ya’ni o’zgaruvchilari va metodlarini, meros qilib oladi va ularni o’zini a’zolari singari ishlatishi mimkin.


Masalan:
public class Daraxt
{
float balandlik;
public void bargChiqarish()
public class MevaliDaraxt extends Daraxt
{
int mevalarSoni;
public void mevaSolish()
Yuqoridagi dasturda MevaliDaraxt klassi Daraxt klassini kengaytirib Daraxt klassi a’zolarini meros qilib oladi. Endi MevaliDaraxt klassi o’zi e’lon qilgan mevalarSoni o’zgaruvchisi va mevaSolish() metodi va Daraxt klassidan meros qilib olgan balandlik o’zgaruvchisi va bargChiqarish() metodini a’zolari sifatida o’z ichiga oladi.
Klass faqatgina bitta klassni kengaytirishi mumkin. Ostki klassni yana kengaytirish mumkin. Masalan:
public class Olma extends MevaliDaraxt
{
Date gullashVaqti;
public void gullash()
Ushbu dasturda Olma klassi MevaliDaraxt va Daraxt klass a’zolarini o’z ichiga oladi. Yuqoridagi klass ierarxiyasi quyidagi rasmda keltirilgan:
Daraxt
MevaliDaraxt
Olma
Klass ierarxiyasi
Klass biror bir klassni kengaytirsa u kengaytirilayotgan klass metodlarini meros qilib oladi. Agar meros qilib olinayotgan metod bajarilishi to’g’ri kelmasa yoki o’zgacha bajarish kerak bo’lsa meros qilib olingan metodni qayta yaratish mumkin. Masalan:
public class Xisoblagich
{
public float xisoblash(int a, int b)
{
float c = (a+b)/2;
return c;
}
}
public class Kalkulyator extends Xisoblagich
{
public float xisoblash(int a, int b)
{
float c = (a*b)/2;
return c;
}
}
Yuqoridagi dasturda Xisoblagich klassi xisoblash() metodini e’lon qilib, ushbu metod qabul qilgan ikki butun sonni o’rta arifmetik qiymatini xisoblab qaytaradi. Kalkulyator klassi Xisoblagich klassini kengaytirib xisoblash() metodini meros qilib olib uni qayta yaratadi va endi xisoblash() metodi qabul qilgan ikki butun sonni o’rta geometrigini xisoblab beradi.
Kalkulyator k = new Kalkulyator();
k.xisoblash(4,5); Dastur kodida xisoblash metodi 10 qiymatini qaytaradi. Shuni ta’kidlab o’tish kerakki metodni qayta yaratayotganda metod qaytarayotgan va qabul qilayotgan qiymat turlari bir xil bo’lishi kerak.
Klass ikkinchi klassni kengaytirganda u kengaytirayotgan klass metodlarini a’zo sifatida meros qilib oladi va meros qilib olgan metodlarni bevosita ishlatishi yoki qayta yaratishi mumkin. Java dasturlash tilida klasslarda abstrakt metodlar mavjudki, ularni meros qilib olgan ostki klasslar albatta qayta yaratishi kerak bo’ladi. Abstrakt metodlar oddiy metodlardan farqi shundaki, ularda metod tanasi mavjud bo’lmaydi. Masalan:
public void go()
{
}
public abstract void go();
Yuqoridagi birinchi metod oddiy metod xisoblanadi. Uni tanasi mavjud bo’lib figurali qavslar bilan belgilanadi. Ikkinchi metod abstrakt metod xisoblanib tanaga ega bo’lmaydi. Bitta abstrakt metodi mavjud klass xam abstrakt klass xisoblanadi. Abstrakt klasslarni abstrakt bo’lmagan metodlari xam mavjud bo’lishi mumkin. Abstrakt klasslar obyekt yaratish uchun andoza xisoblanmaydi, balki ularni kengaytirgan, abstrakt bo’lmagan klasslar uchun meros qilib oladigan metodlarni qayta yaratish shartnomasi xisoblanadi.
Masalan:
public abstract class Avtomobil
{
public abstract void tezlashish();
public void yurish()
{
//metod tanasidagi yurish kidi

}
}
public class YukAvtomobili extends Avtomobil
{
public void tezlashish()
{
//yuk avtomobiliga xos tezlashish kodi

}public void yukTashish()
{
// yuk tashish kodi

}
}
Yuqoridagi dasturda abstrakt Avtomobil klassi berilgan bo’lib uning bitta abstrakt va bitta oddiy metodi mavjud. Avtomobil klassi uni kengaytiradigan barcha klasslarda (masalan, YukAvtomobili, YengilAvtomobil) tezlashish() metodi mavjud bo’lish shartnomasini taklif etadi. Ya’ni Avtomobil klassini kengaytirgan klass tezlashish() metodini ushbu klassga xos amalni bajaradigan qilib qayta yaratishi kerak. Yuqoridagi misolda YukAvtomobili klassi tezlashish() metodini yuk avtomobillarga xos qilib qayta yaratgan. Bundan tashqari ushbu klassda yangi yukTashish() metodi xam e’lon qilingan. YukAvtomobili jami uchta metodni, ya’ni meros qilib olingan yurish() metodi, meros qilib olingan va qayta yaratilgan tezlashish() metodi va o’zida e’lon qilingan yukTashish() metodi.




  1. Yüklə 1,58 Mb.

    Dostları ilə paylaş:
1   ...   35   36   37   38   39   40   41   42   ...   79




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin