Yusupov Xusan 943-19-guruh Tajriba ishi №11 Mavzu: Sinf va ob’ektlar. Maksad: C++ da sinflarni yaratish. Yaratilgan sinflar uchun ob’ektlarni yaratish. Strukturalar yaratishni o`rganish
Nazariy qism Struktura – bu ma’lumotlarni bir butun nomlangan elementlar to‘plamiga birlashtirish. Struktura elementlari (maydonlar) xar xil tipda bo‘lishi mumkin va ular xar xil nomlarga ega bo‘lishi kerak.
Strukturani initsializatsiyalash(boshlang’ich qiymat berish) uchun uning elementlar qiymatlarini figurali qavslarda tavsiflanadi.
1-Usul: include using namespace std;
struct Student
{
char name[50];
int kurs;
float rating;
};
int main ()
{
Student s = {"Qurbonov Qodir", 1, 3.5};
cout<<"\nName = "<cout<<"\nKurs = "<cout<<"\nRating = "<}
2-Usul #include using namespace
e std;
struct Student
{
char name[50];
int kurs;
float rating;
} s {"Qurbonov Qodir", 1, 3.5};
int main ()
{
cout<<"\nName = "<cout<<"\nKurs = "<cout<<"\nRating = "<}
Strukturalarni o‘zlashtirish Bitta tuzilma tipdagi o‘zgaruvchilar uchun o‘zlashtirish operatsiyasi aniqlangan. Bunda xar bir elementdan nusxa olinadi.
Student ss=s;
Struktura elementlariga murojaat Struktura elementlariga murojaat aniqlangan ismlar yordamida bajariladi:
. employee.name - «Ashurov» satriga ko’rsatkich;
employee.rate - 10000 qiymatga ega bo’lgan butun tipdagi o’zgaruvchi
Sinf Sintaksis bo‘yicha, C++ da sinf - bu mavjud bo’lgan tiplar asosida yangi yaratilgan strukturlangan tip.
Sinf ta’rifi sodda shakli:
{
};
bu yerda:
sinf_tipi – class xizmatchi so‘zi;
sinf_nomi – identifikator;
sinf_komponentlari_ro‘yxati – sinfga tegishli ma’lumotlar va funksiyalar ta’rifi.
Funksiya – bu ob’ektlar ustida bajariladigan operatsiyalarni aniqlovchi sinf usuli.
Ma’lumotlar - bu ob’ekt strukturasini xosil qiluvchi maydon.
Usullar sinfdan tashqarida aniqlanganda ularning nomlarini kvalifikatsiya qilish (ixtisoslashtirish) kerak. Usulning ko’rimlilik soxasini aniqlaydigan uning bunday kvalifikatsiya sintaksisi quyidagi ko’rinishga ega:
:: Sinf ichida aniqlangan usullar ko’zda tutilgan bo’yicha joylashtiriluvchi (inline) funksiya xisoblanadi. Sinf tashqarisida aniqlangan usullarni oshkor ravishda joylashtiriluvchi deb ta’riflanishi lozim.
Sinf ob’ekti (sinf nusxasi) ni ta’riflash uchun quyidagi konstruksiyadan foydalaniladi:
;
Ob’ekt orqali maydonlarga va usullarga quyidagicha murojjat qilish mumkin:
< ob’ekt_nomi >. < ob’ekt_nomi >.
Komponentalarga murojat xuquqlari Komponentalarga murojaat xukuki murojaat spetsifikatorlari yordamida boshqariladi: public, private, protected.
Umumiy (public) komponentalar dasturni ixtiyoriy qismida murojaat xuquqiga ega. Ulardan, ixtiyoriy funksiya ushbu sinf ichida va sinf tashqarida foydalansa xam bo’ladi.
Xususiy (private) komponentalar sinf ichida murojaat xuquqiga ega, lekin sinf tashqarisidan esa murojaat qilish mumkin yemas. Komponentalardan ushbu ular tavsiflangan sinfdagi funksiya - a’zolari yoki do’stona- funksiyalar orqali foydalanish mumkin.
12
FUTBOLCHI(ismi, yoshi, kim bo‘lib o‘ynaydi, gollar soni)
gollar soni > 50
class Player():
def __init__(self) -> None:
pass
def inp(self):
self.name = input("Ismi: ")
self.age = int(input("Yoshi: "))
self.num = int(input("Gollar soni: "))
while True:
if self.num<=50:
print("Gollar soni 50 dan kam bo'lmasligi kerak")
self.num = int(input("Gollar soni: "))
else:
break
self.ampula = input("Ampula: ")
print("\n\n")
def prnt(self):
print(f"Ismi: {self.name}")
print(f"Yoshi: {self.age}")
print(f"Gollar soni: {self.num}")
print(f"Ampula: {self.ampula}\n\n")
n = int(input("O'yinchilar soni kiritilsin: "))
lst = [0]*n
for i in range(n):
lst[i] = Player()
lst[i].inp()
for i in range(n):
lst[i].prnt()