Deadline-1
1-deadline: Java dasturlash tilida klasslar, ob’ektlar va massivlar
Topshirdi
|
714 18 talabasi
SOBIROV A.
|
Qabul qildi
|
Musayev X.
|
Java-bu obyektga yo'naltirilgan til, shuning uchun unda "klass" va "obyekt" kabi tushunchalar asosiy rol o'ynaydi. Har qanday Java dasturini o'zaro ta'sir qiladigan ob'ektlar to'plami deb hisoblash mumkin. Ob'ektning shabloni yoki tavsifi klass bo'lib, obyekt shu klassning namunasini ifodalaydi. Quyidagi o'xshashlikni ham shu gapimizni isboti deb tasavvur qilsak bo’ladi. Biz hammamiz odam haqida tasavvurga egamiz - ikki qo'li, ikki oyog'i, boshi, tanasi va boshqalar. Ba'zi naqsh bor - bu naqshni klass deb atash mumkin. Haqiqatan ham mavjud odam (aslida, bu klassning namunasi) - bu klass obyekti. Class kalit so'z yordamida aniqlanadi:
1
2
3
|
class shaxs{
sinf tanasi
}
|
Bunday holda, klass - shaxs deb nomlanadi. Klass nomidan keyin {} qavslar bor, ular orasiga sinf tanasi joylashadi - ya'ni uning maydonlari va usullari. Har qanday ob'ekt ikkita asosiy xususiyatga ega bo'lishi mumkin: holat - obyekt saqlaydigan ba'zi ma'lumotlar va xatti -harakatlar - ob'ekt bajarishi mumkin bo'lgan harakatlar. Ob'ekt holatini klassda saqlash uchun maydonlar yoki sinf o'zgaruvchilari ishlatiladi. Usullar klassdagi ob'ektning xatti -harakatini aniqlash uchun ishlatiladi. Masalan, shaxsni ifodalovchi shaxs klassida quyidagi ta'rifga ega bo'lishi mumkin:
1
2
3
4
5
6
7
8
|
class shaxs{
String name; // ism
int age; // yosh
void displayInfo(){
System.out.printf("Name: %s \tAge: %d\n", name, age);
}
}
|
Shaxs klassi ikkita maydonni belgilaydi:name odamning ismini, age esa uning yoshini ifodalaydi. Va displayInfo usuli ham aniqlangan, u hech narsani qaytarmaydi va bu ma'lumotlarni konsolda chop etadi. Endi biz bu klassdan foydalanamiz. Buning uchun biz quyidagi dasturni aniqlaymiz:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class Mohizoda{
public static void main(String[] args) {
Shaxs Anvar;
}
}
class Shaxs{
String name; // ism
int age; // yosh
void displayInfo(){
System.out.printf("Name: %s \tAge: %d\n", name, age);
}
}
|
Odatda, klasslar har xil fayllarda belgilanadi. Bunday holda, soddalik uchun biz bitta faylda ikkita klassni aniqlaymiz. Shunisi e'tiborga loyiqki, bu holda faqat bitta klassda umumiy modifikator bo'lishi mumkin (bu holda bu dastur klassi) va kodli faylning o'zi shu klass nomi bilan nomlanishi kerak, ya'ni bu holda, fayl Mohizoda.java deb nomlanishi kerak. klass yangi turni ifodalaydi, shuning uchun biz berilgan turni ifodalovchi o'zgaruvchilarni aniqlashimiz mumkin. Shunday qilib, bu erda asosiy usulda Anvar o'zgaruvchisi aniqlanadi, bu Shaxs sinfini ifodalaydi. Ammo hozircha bu o'zgaruvchi hech qanday obyektga ishora qilmaydi va u sukut bo'yicha bekor hisoblanadi. Umuman olganda, biz uni hali ishlata olmaymiz, shuning uchun avval Shaxs sinfining obyektini yaratish kerak. Konstruktorlar oddiy usullardan tashqari, klasslar konstruktorlar deb nomlangan maxsus usullarni belgilashi mumkin. Konstruktorlar bu sinfning yangi obyekti yaratilganda chaqiriladi. Konstruktorlar obyektni ishga tushirishni amalga oshiradilar. Agar klassda konstruktor aniqlanmagan bo'lsa, bu klass uchun avtomatik ravishda parametrsiz konstruktor yaratiladi. Yuqorida tavsiflangan shaxs klassida konstruktorlar yo'q. Shuning uchun, avtomatik ravishda u uchun standart konstruktor yaratiladi, biz undan shaxs obyektini yaratish uchun foydalanishimiz mumkin. Xususan, bitta obyektni yarataylik:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public class Mohizoda{
public static void main(String[] args) {
Shaxs Anvar = new Shaxs();
tom.displayInfo();
Anvar.name = "Anvar";
Anvar.age = 34;
tom.displayInfo();
}
}
class shaxs{
String name;
int age;
void displayInfo(){
System.out.printf("Name: %s \tAge: %d\n", name, age);
}
}
|
Shaxs obyektini yaratish uchun new shaxs () iborasi ishlatiladi. Yangi operator Shaxs obyekti uchun xotira ajratadi. Va keyin parametrlarni olmaydigan standart konstruktor chaqiriladi. Natijada, bu ifoda bajarilgandan so'ng, xotirada Shaxs obyektining barcha ma'lumotlari saqlanadigan bo'lim ajratiladi. Va Anvar o'zgaruvchisi yaratilgan obyektga havola oladi. Agar konstruktor obyekt o'zgaruvchilarining qiymatlarini ishga tushirmasa, ular standart qiymatlarni oladi. Raqamli turdagi o'zgaruvchilar uchun bu raqam 0, satrlar va sinflar uchun esa nol (ya'ni, deyarli qiymat yo'q). Ob'ektni yaratgandan so'ng, biz Anvar o'zgaruvchisi orqali Shaxs ob'ektining o'zgaruvchilariga kirishimiz va ularning qiymatlarini o'rnatishimiz yoki olishimiz mumkin, masalan, Anvar.name = "Anvar". Natijada, biz konsolda ko'ramiz:
Name: null Age: 0
Name: Tom Age: 34
Agar sizga ob'ekt yaratishda qandaydir mantiq kerak bo'lsa, masalan, klass maydonlari o'ziga xos qiymatlarni qabul qilsa, siz o'z konstruktorlaringizni klass belgilashingiz mumkin. Masalan:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
public class Program{
public static void main(String[] args) {
Shaxs Madina = new Shaxs();
Madina.displayInfo();
Shaxs Anvar = new Shaxs("Anvar");
Anvar.displayInfo();
Shaxs Mohizoda= new Shaxs("Mohizoda", 22);
Mohizoda.displayInfo();
}
}
class Shaxs{
String name;
int age;
Shaxs()
{
name = "Undefined";
age = 18;
}
Shaxs(String n)
{
name = n;
age = 18;
}
Shaxs(String n, int a)
{
name = n;
age = a;
}
void displayInfo(){
System.out.printf("Name: %s \tAge: %d\n", name, age);
}
}
|
Endi klassda uchta konstruktor bor, ularning har biri turli xil parametrlarni oladi va klass maydonlarining qiymatlarini o'rnatadi. Dasturning konsol chiqishi:
Name: Undefined Age: 18
Name: Anvar Age: 18
Name: Mohizoda Age: 22
This kalit so'z
This kalit so'z klassning joriy namunasiga havolani ifodalaydi. this kalit so'z orqali biz o'zgaruvchilarga, ob'ektning usullariga murojaat qilishimiz, shuningdek uning konstruktorlarini chaqirishimiz mumkin. Masalan:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
public class Program{
public static void main(String[] args) {
Shaxs undef = new Shaxs();
undef.displayInfo();
Shaxs Anvar = new shaxs("Anvar");
Anvar.displayInfo();
Shaxs Mohizoda = new Shaxs ("Mohizoda", 22);
Mohizoda.displayInfo();
}
}
class shaxs{
String name;
int age;
Shaxs()
{
this("Undefined", 18);
}
Shaxs(String name)
{
this(name, 18);
}
Shaxs (String name, int age)
{
this.name = name;
this.age = age;
}
void displayInfo(){
System.out.printf("Name: %s \tAge: %d\n", name, age);
}
}
|
Uchinchi konstruktorda parametrlar klass maydonlari bilan bir xil nomlanadi. Va maydonlar va parametrlarni farqlash uchun bu kalit so'z ishlatiladi:
Shunday qilib, bu holda, biz nom parametrining qiymati nom maydoniga tayinlanganligini ko'rsatamiz. Bundan tashqari, bizda xuddi shunday qiladigan uchta konstruktor bor: name va age maydonlarini o'rnating. Takrorlanishni oldini olish uchun, undan foydalanib, klass konstruktorlaridan biriga murojaat qilib, uning parametrlari uchun kerakli qiymatlarni o'tkazishingiz mumkin:
1
2
3
4
|
Shaxs(String name)
{
this(name, 18);
}
|
Natijada, dastur natijasi oldingi misolda bo'lgani kabi bo'ladi . Asosiy Konstruktordan tashqari, ob'ektni dastlabki ishga tushirishni ob'ektni ishga tushirish vositasi yordamida amalga oshirish mumkin edi. Boshlovchi har qanday konstruktordan oldin ishlaydi. Ya'ni, biz kodni hamma konstruktorlar uchun umumiy bo'lgan boshlovchi ichiga qo'yishimiz mumkin:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
public class Program{
public static void main(String[] args) {
shaxs undef = new shaxs();
undef.displayInfo();
Person Anvar = new Shaxs("Anvar");
Anvar.displayInfo();
}
}
class shaxs{
String name;
int age;
{
name = "Undefined";
age = 18;
} shaxs(){
}
shaxs(String name){
this.name = name;
}
shaxs(String name, int age){
this.name = name;
this.age = age;
}
void displayInfo(){
System.out.printf("Name: %s \tAge: %d\n", name, age);
}
}
|
Konsol chiqishi:
Name: Undefined Age: 18
Name: Anvar Age: 18
Do'stlaringiz bilan baham: |