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: