Войти Регистрация

Docx

  • Рефераты
  • Дипломные работы
  • Прочее
    • Презентации
    • Рефераты
    • Курсовые работы
    • Дипломные работы
    • Диссертациии
    • Образовательные программы
    • Инфографика
    • Книги
    • Тесты

Информация о документе

Цена 2000UZS
Размер 52.0KB
Покупки 0
Дата загрузки 07 Ноябрь 2026
Расширение docx
Раздел Рефераты
Предмет Педагогика

Продавец

Bohodir Jalolov

Sinf elementlariga ko‘rsatkich. ko‘rsatkichiniqo‘llashga oid misollar

Купить
Mavzu :  Sinf elementlariga ko’rsatkich.  ko’rsatkichiniqo’llashga oid
misollar .
          Ko’pincha   ,agar   sinfda   metodni   chaqirsangiz,   c++uni   qaysi   obyekt
deb hisoblaydi, degan savol ko’p uchrab turadi. Bu savolda c++ yashirin
ko’rsatkichi ishlatadi deb javob berish mumkin.
  yashirin   ko’rsatkichi .   Quyidagi   butun   sonli   qiymatni   o’z   ichiga   olgan,
konstruktori  va yordamchi funksiyalari bo’lgan oddiy sinf berilgan.
#include<iostream>
Using namespace std;
Class Value
{private:
   Int m_number;
Public:
   Value (int number)
{ 
setNumber (int number);
}
Void setNumber (int number)
{
m_number=number;
}
Int getNumber()
{
Return m_number;
}
};
Int main() {value v(3);
v.setNumber(4);
cout<<v.getNumber()<<’\n’;
return o;
}
Dasturni bajarish natijasi:
4
v.setNumber(4)   ni   chaqirganda   c++dasturlash   tilida   setnumber()   funksiyasi
boshqa   obyektda   ishlaydi   va   m_number   aslida   V.m_number   .   Hammasi   qanday
ishlashini batafsil ko’rib chiqaylik.
Masalan, quyidagi qatorni ko’raylik:
V.setNumber(4);
Garchi bir qarashda bizda faqat bitta bahs bordek tuyulsada aslida ikkita savol bor.
Kompilyatsiya   vaqtida   v.setNumber(4)   qatori   kompilyator   tomonidan
quyidagilarga o’zgartiradi.
setNumber(&V,4);//boshqa obyekt nuqta oldidan obyekt argumentiga aylantiradi.
Bu   endi   faqat   standart   funksiya   chaqiruvchi   va   V   obyekti   (ilgari   alohida   ibyekt
bo’lgan   va   nuqtadan   oldin   jelgan)   endi   funksiya   argument   sifatida   manzilga
uzatiladi
Funksiya   chaqiruvchi   hozir   ikkata   argument   mavjud   bo’lgani   uchun,   metod   mos
ravishda o’zgarishi kerak (shuning uchun ikkita argument kerak bo’ladi). Shunday
qilib quyidagi metod:
Oddiy   metodini   tuzishda       kompilyator   unga     parametrni   bilvosida   qo’shadi
ko’rsatkichi   sinf   metodini   chaqiradigan   obyektning   manzilini   o’z   ichiga   olgan
yashirin doimiy ko’rsatkichdir.
Yana   bitta   tafsilot   bor.   Metod   ichida   sinfning   barcha   azolarini   (funksiya   va
o’zgaruvchilar)yangilashingiz   kerak,   shunda   ular   ushbu   metodni   chaqiradigan
obyektga   murojat   qiladi.   Buni   har   biriga   ->prefiksini   qo’shish   orqali   qilish   oson.
Shunday   qilib,   setNumber   ()   funksiyasining   tanasida   m_number   (sinfning   azo
o’zgaruvchisi)   ->m_number   ga   aylanadi.   Qachon     boshqasining   manzilini
ko’rsatsa , ->m_number V.m_numberga ishora qiladi.
Yuqoridagilarni umumlashtirib quyidagilarni aytish mumkin: -V.setNumber(4) ga murojat qilganda kompilyator aslida setNumber(&another ,4)
ni chaqiradi. 
-setNumber ()ichida  ko’rsatkich boshqasining manzilini o’z ichiga oladi.
-setNumber()   ichidagi   har   qanday   azo   o’zgaruvchilar   ->prefiksi   orqali   murojat
qiladi.
Shunday   qilib   m_number-number   deb   aytganimizda,   komplyator   aslida   -
>m_number=number ni bajaradi.
Muhim jihati shundaki, bularning barchasi(dasturchilar) yashiringan va bu qanday
ishlashini eslaysizmi yoki yo’qmi muhim emas. Shuni yodda tutish kerakki, barcha
oddiy   sinf   usullarida   *metodikasi   chaqiruvchi   bilan   bog’liq   obyektni   ko’rsatuvchi
ko’rsatkich mavjud.
*   ko’rsatkichi   har   doim   joriy   obyektga   ishora   qiladi.   Endiga   dasturlashni
o’rganishni   boshlagan   dasturchilar   bazida   nechta   *   ko’rsatkichi   borligiga
chalkashib   ketishadi.   Har   bir   metodda   parametr   sifatida   *   ko’rsatkichi   mavjud
bo’lib, u amalda bajarilayotgan obyektning manzilini ko’rsatadi. Masalan:
Int main()
{
Value X(3); //* -& X Valuekonstruktor ichida
Value Y(4); //* -& X Valuekonstruktor ichida 
X.setNumber(5); //* -& X setNumber metodi ichida
Y.setNumber(6); //* -& Y setNumber metodi ichida
Return 0; 
}
*   ko’rsatkichi   navbat   bilan   x   yoki   y   obyektining   manzilini   o’z   ichiga   oladi,   qaysi
metod chaqirilishiga va hozirda bajarilishga bog’liq.
*   ko’rsatkichiga   oshkor   ko’rsatkich.   Ko’kina   hollarda   *   ko’rsatkichini   aniq
ko’rsatkish   shart   emas   .   biroq   bu   bazida   foydali   bo’lishi   mumkin.   Misol   uchun,
agar parametr o’zgaruvchisi bilan bir xil parametrga ega bo’lgan konstruktor (yoki
metod) bolsa, uni * ko’rsatkich yordamida ajratib ko’rsatish mumkin.
Class Something 
{private  Int data:
Public:
Somthing (int data)
{
->data=data;
}
};
Bu   holatda   konstruktor   a’zo   o’zgaruvchi   bilan     bir   xil   nomdagi   parametrni   oladi.
Bunday holda ma’lumot parametrga -> data a’zo o’zgaruvchiga tegishli.
Mavzuga doir mustaqil masalalar:
1-misol
Human   nomli   sinf   yarating.   Unda     2ta   xossa   Ushbu   xossalarga   this   ko’rsatkichi
orqali qiymat taminlovchi parametrli konstruktor qatnashsin. Main funksiyasida 3
ta obyekt yarating.
#include<iostream>
using namespace std;
class Human
{
private:
    string name;
    int age;
public:
    Human(string name, int age)
    {
        this->name=name;
        this->age=age;
    }
    void printInfo()     {
        cout<<"ismi: "<<name<<endl;
        cout<<"yoshi: "<<age<<endl;
    }
};
int main()
{
    Human obj1("Ali",12);
    Human obj2("Maruf",13);
    Human obj3("Sardor",10);
    obj1.printInfo();
    obj2.printInfo();
    obj3.printInfo();
    return 0;
}
2-misol
Book nomli sinf yarating. Unda 3ta xossa bo’sin. Ushbu xossalarga this ko’rsatkichi
orqali qiymat taminlovchi parametrli konstruktor qatnashsin. Main funksiyasida 3
ta obyekt yarating. #include<iostream>
#include<string>
using namespace std;
class Book
{
private:
    string nomi;
    int yili;
    int soni;
public:
    Book(string nomi, int yili,int soni)
    {
        this->nomi=nomi;
        this->yili=yili;
        this->soni=soni;
    }
    void printInfo()
    {
        cout<<"nomi: "<<nomi<<endl;
        cout<<"yili: "<<yili<<endl;
        cout<<"varoqlari soni: "<<soni<<endl;
    }
};
int main()
{
    Book obj1(" Atom ",2012,3);
    Book obj2("Saodat asri",2012,432);     Book obj3("Payg'ambarlar tarixa",1998,453);
    obj1.printInfo();
    obj2.printInfo();
    obj3.printInfo();
    return 0;
}
3-misol
Mashina   nomli   sinf   yarating.   Unda   this   ko’rsatkichidan   foydalaning.   Unda   3ta
xossa
Bo’lsin. Main funksiyasi ichida 2ta obyekt yarating.
#include<iostream>
using namespace std;
class Car
{
private:
    string name;
    int year;
    string color;     public:
    Car(){}
    Car(string name,int year,string color)
    {
        this->name=name;
        this->year=year;
        this->color=color;
    }
    string getName()
    {
        return name;
    }
    int getYear()
    {
        return year;
    }
    string getColor()
    {
        return color;
    }
};
int main()
{
    Car obj1("Jentra",2023,"Qora");
    Car obj2("Nexia", 2022,"Oq");
        cout<<"Mashina   nomi:   "<<obj1.getName()<<"   Mashinaning   ishlab   chiqarilgan
yili: "<<obj1.getYear()<<" Mashina rangi: "<<obj1.getColor()<<endl;         cout<<"Mashina   nomi:   "<<obj2.getName()<<"   Mashinaning   ishlab   chiqarilgan
yili: "<<obj2.getYear()<<" Mashina rangi: "<<obj2.getColor();
}

Sinf elementlariga ko‘rsatkich. ko‘rsatkichiniqo‘llashga oid misollar

Купить
  • Похожие документы

  • 2001-yil sentabr voqealri va uning xalqaro munosabatlarga
  • 1945-1990-yillarda Buyuk Britaniya
  • 1918-1923 yillarda xalqaro munosabatlar, Versal Vashington siyetemasining tuzilishi
  • Ahmad al-farg‘oniy
  • Almashlab ekishni loyihalashtirish va joriy etish

Подтвердить покупку

Да Нет

© Copyright 2019-2026.

  • Инструкция по снятию с баланса
  • Контакты
  • Инструкция использования сайта
  • Инструкция загрузки документов
  • O'zbekcha