• This kalit so‘zining roli
  • SetDriverName()
  • Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr




    Download 6,33 Mb.
    Pdf ko'rish
    bet162/194
    Sana20.02.2024
    Hajmi6,33 Mb.
    #159185
    1   ...   158   159   160   161   162   163   164   165   ...   194
    Konstruktor haqida 
    Barcha sinflar bekorga (pulsiz) standart konstruktor bilan ta’minlanadi. Shunday qilib agar 
    xozirgi loyihaga yangi sinfni Motorcycle nomi bilan qo‘shsak u keyingi ko‘rinishda aniqlangan: 
    class
    Motorcycle

    public
    void
    PopAWheely() 

    Console
    .WriteLine(
    "Yeeeeeee Haaaaaeewww!"
    ); 


    static
    void
    Main(
    string
    [] args)
    {
    Console.WriteLine(
    "***** Fun with Class Types *****\n"
    );
    Motorcycle mc = 
    new
    Motorcycle();
    mc.PopAWheely();
    ...

    Biroq, agar maxsus konstruktor ixtiyoriy miqdordagi parametrlar bilan aniqlangani bilinsa, 
    standart konstruktor jimgina sinfda o‘chib ketadi va kirib bo‘lmas bo‘lib qoladi. Buni bunday qabul 
    qiling agar siz maxsus konstruktorni aniqlamagan bo‘lsangiz, u holda S# kompilyator standart 
    konstruktor sinfi bilan ta’minlanadi.
    Agar siz ajoyib konstruktorni aniqlasangiz kompilatorsiz boshqaruvni o‘z qo‘lingizga oldi 
    deb xisoblaysiz.
    class
    Motorcycle
    {
    public
    int
    driverIntensity;
    public
    void
    PopAWheely()
    {
    for
    (
    int
    i = 0; i <= driverIntensity; i++)
    {
    Console
    .WriteLine(
    "Yeeeeeee Haaaaaeewww!"
    );
    }
    }
    // Put back the default constructor, which will
    // set all data members to default vaules.
    public
    Motorcycle() {}
    // Our custom constructor. 


    Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
    291 
    public
    Motorcycle(
    int
    intensity)
    {
    driverIntensity = intensity;
    }
    }
    This kalit so‘zining roli 
    S# tilida This kalit so‘zi mavjud u hozirgi sinfni elementlariga kiritishni ta’minlab beradi. 
    This so‘zini mavjud qo‘llanuvchilarida biri shundaki kontekstni bir qiymatliligini yechish uchun u 
    ham bo‘lishi mumkin. Unda quruvchi parametr sinfi berilganlar maydonidagi ismdek quruvchi 
    parametr xam nomlanganda bo‘ladi. Eng yaxshi xolati nomlash xaqidagi kelishuvda qolganlikdir. U 
    bunday bir qiymatlilikka olib kelmaydi. Shunga qaramasdan bunday this kalit so‘zini ishlatishni 
    ko‘rsatish uchun Motorcycle klassiga yangi string tipidagi maydonni qo‘shamiz u tashuvchining 
    ismini tasvirlaydi. Bundan so‘ng SetDriverName() nomli metodni qo‘shamiz u quyidagi 
    ko‘rinishda amalga oshirilgan.
    class
    Motorcycle
    {
    public
    int
    driverIntensity;
    // New members to represent the name of the driver. 
    public
    string
    name;
    public
    void
    SetDriverName(
    string
    name)
    {
    name = name;
    }
    ...

    Visual Studio o‘zgaruvchi o‘zi o‘ziga o‘zlashtirish xaqidagi ogoxlantiruvchi xabarni 
    ko‘rsatadi. buni ko‘rsatish uchun Main()ga SetDriverName() chaqiruvini qo‘shamiz va name 
    maydondan qiymatini chaqiramiz. Aniqlanadiki name maydoni qiymatida bo‘sh qator qoldi. 
    // Make a Motorcycle with a rider named Tiny? 
    Motorcycle c = 
    new
    Motorcycle(5);
    c.SetDriverName(
    "Tiny"
    );
    c.PopAWheely();
    Console.WriteLine(
    "Rider name is {0}"
    , c.name); 
    // Prints an empty name value! 
    Muammo shundaki, SetDriverName()ni amalga oshirishda uning o‘zining qiymatini 
    quruvchi parametrga o‘zlashtirishni bajaradi, chunki kompliyator nomi bu yerda o‘zgaruvchiga 
    jo‘natiladi deb o‘ylaydi.
    public
    void
    SetDriverName(
    string
    name)
    {
    this
    .name = name;

    Xisobga olingki agar bir qiymatlilik bo‘lmasa u holda siz this kalit so‘zini ishlatishingiz 
    shart emas. Masalan: agar string tipidagi Name berilganlar hadini driverNamega qayta nomlash 
    kerak bo‘lsa, u holda thisni qo‘llanishi majburiy bo‘lmaydi, chunki kontekstni bir qiymatliligi 
    yo‘qoladi. 
    class
    Motorcycle
    {
    public
    int
    driverIntensity;
    public
    string
    driverName;


    Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
    292 
    public
    void
    SetDriverName(
    string
    name)
    {
    // These two statements are functionally the same. 
    driverName = name;
    this
    .driverName = name;
    }
    ...

    Bir qiymatli bo‘lmagan holatta thisni ishlatishdagi olingan katta bo‘lmagan yutuq bu kalit 
    so‘zlarni ishlatishda foydali bo‘lishi mumkin, chunki IDE SharpDevelop va Visual Studio 
    muhitlari IntelliSense vositasini qo‘shadi. Qachonki this kiritilsa. Bu agar siz sinfni nomini esdan 
    chiqargan bo‘lsangiz bu juda yaxshi yordam beradi. 5.2 rasmga qarang. 

    Download 6,33 Mb.
    1   ...   158   159   160   161   162   163   164   165   ...   194




    Download 6,33 Mb.
    Pdf ko'rish

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr

    Download 6,33 Mb.
    Pdf ko'rish