Java Obyekt va Sinflar

Obyekt – bu holat va xususiyatga ega bo’lgan narsa, masalan, telefon, olma, qalam, shifokor. Bu moddiy yoki ma’naviy bo’lishi mumkin. Obyektning uchta xarakteri bo’ladi:

  • Holati: obyektning ma’lumoti yoki qiymati.
  • Xususiyat: obyektning metodlari.
  • Identifikatori: Har bir obyekt JVM tomonidan takrorlanmas identifikator bilan ta’minlanadi.

Keling biror obyektni muhokama qilamiz. Masalan, ruchka. Uning rangi qizil, bu uning holati. U yozish uchun mo’ljallangan, bu uning xususiyati.

Sinf yoki class – bir xil xususiyatlarga ega obyektlar to’plami. Class obyekt yaratishga mo’ljallangan shablon. Class fizik jihatdan mavjud emas, shuning uchun u xotiradan joy egallamaydi. Class yaratish uchun sintaksis quyidagicha:

class <class_nomi> {  
    maydon;  
    metod;  
}  

Namuna o’zgaruvchi sinf ichida lekin metod tashqarisida yaratilgan o’zgaruvchi hisoblanadi. Kompilyatsiya vaqtida namuna o’zgaruvchi xotiradan joy olmaydi. Qachonki sinfdan obyekt yaratilsagina xotiradan joy oladi, shuning uchun u namuna (yoki obyekt) o’zgaruvchi deb nomlanadi.

Metod funksiyaga o’xshash va sinfning xususiyatlarini ifodalaydi. Metod koddan qayta-qayta foydalanish va uni optimizatsiya qilish uchun ishlatiladi.

new kalit so’zi classdan obyekt yaratish va u uchun heap xotiradan joy band qilish uchun ishlatiladi.

Keling, endi Talaba nomli sinf yaratamiz. Unda id va ism nomli maydonlar bo’lsin. Va undan bitta obyekt yaratamiz.

class Talaba {
   int id;
   String ism;

   public static void main(String[] args) {
       Talaba talaba = new Talaba();
       System.out.println(talaba.id); // 0
       System.out.println(talaba.ism); // null
   }
}

Dasturlashda, odatda biz ko’plab sinflar yaratamiz va ulardan boshqa sinflar ichida foydalanamiz. Yuqoridagi misolda esa sinfdan o’sha sinfdagi main() metodida foydalandik.

Java dasturlash tilida obyektlar 3 xil usulda yaratiladi:

  • reference yordamida
  • metod yordamida
  • konstruktor yordamida

Quyida 3 ta usulda obyekt yaratamiz.

Reference yordamida

class Talaba {
   int id;
   String ism;

   public static void main(String[] args) {
       Talaba talaba = new Talaba();
       talaba.id = 1;
       talaba.ism = "Husan";
       System.out.println(talaba.id + " " + talaba.ism); // 1 Husan
   }
}

Metod yordamida

class Talaba {
   int id;
   String ism;

   void qiymatYuklash(int id1, String ism1){
       id = id1;
       ism = ism1;
   }

   void chopEtish(){
       System.out.println(id + " " + ism);
   }

   public static void main(String[] args) {
       Talaba talaba = new Talaba();
       talaba.qiymatYuklash(2, "Aziz");
       talaba.chopEtish(); // 1 Husan
   }
}

Konstruktor haqida keyingi darslarimizda o’rganamiz.

Quyida sinf va obyektlar ishtirokida Bank akkountga doir kod yozamiz. Uni yaxshi tahlil qilishga harakat qiling.

class Account {
   int akkountRaqami;
   String akkountIsmi;
   float pulMiqdori;

   void qiymatBerish(int a, String n, float amt) {
       akkountRaqami = a;
       akkountIsmi = n;
       pulMiqdori = amt;
   }

   void deposit(float amt) {
       pulMiqdori = pulMiqdori + amt;
       System.out.println(amt + " depozit qo'shildi");
   }

   void pulYechish(float amt) {
       if (pulMiqdori < amt) {
           System.out.println("Balans kam");
       } else {
           pulMiqdori = pulMiqdori - amt;
           System.out.println(amt + " pul yechildi");
       }
   }

   void balansniTekshirish() {
       System.out.println("Balans: " + pulMiqdori);
   }

   void chopEtish() {
       System.out.println(akkountRaqami + " " + akkountIsmi + " " + pulMiqdori);
   }

public static void main(String[] args) {
   Account a1 = new Account();
   a1.qiymatBerish(832345, "Anvar", 1000);
   a1.chopEtish();
   a1.balansniTekshirish();
   a1.deposit(40000);
   a1.balansniTekshirish();
   a1.pulYechish(15000);
   a1.balansniTekshirish();
}

}

Konsulga quyidagilar chop etiladi:

832345 Anvar 1000.0 Balans: 1000.0 40000.0 depozit qo'shildi Balans: 41000.0 15000.0 pul yechildi Balans: 26000.0