Asosiy qism i-bob


Download 394.25 Kb.
bet6/14
Sana05.01.2022
Hajmi394.25 Kb.
#206631
1   2   3   4   5   6   7   8   9   ...   14
Bog'liq
dasturlash asoslari kurs ishi Sh.shomurodov

Yagona asosiy sinf


Bir qator dasturlash tillarida aniq yoki yashirin ravishda barcha sinflar ba'zi bir asosiy sinflardan meros bo'lib olinadi. Smalltalk ushbu kontseptsiyani ishlatgan birinchi tillardan biri edi. Bunday tillarga quyidagilar kiradi: Objective-C (sinf NSObject), Perl ( UNIVERSAL), Eyfel ( ANY), Java ( java.lang.Object), C # ( System.Object), Delphi ( TObject), Scala ( Any).

2.2.Sinf merosi


Sinf merosi ob'ektga yo'naltirilgan dasturlashda juda kuchli xususiyatdir. Bu tayanch sinfning barcha usullari va elementlarini (ota-ona sinfi) asos qilib olib, hosil qilingan sinflarni (meros qilib olingan sinflar) yaratishga imkon beradi. Bu yangi dastur kodini yozish va disk raskadrovka uchun ko'p vaqtni tejaydi. Boshiga bir sinf ob'ektlari bepul  uchun  asosiy sinf yaratilgan va debugged narsani foydalaning. Shu bilan birga,  biz ham qila olamiz olingan sinfga dasturni takomillashtirish uchun kerakli kodni qo'shing: yangi elementlar, usullar va boshqalarni qo'shing. Asosiy sinf buzilmasdan qoladi. Ushbu mavzuni yangi boshlanuvchilar egallashi mumkin. Siz faqat sintaksis va ba'zi xususiyatlar bilan tanishishingiz kerak. Quyida oddiy dastur kodi keltirilgan, biz uni ro'yxat ostida batafsil tahlil qilamiz. Ushbu dasturda ikkita sinf yaratilgan: asosiy - FirstClass  va undan kelib chiqqan SecondClass.

Misol:

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

39



40

41

42



43

44

45



46

47

48



49

50

51



52

53

54



55

#include

using namespace std;

 

class FirstClass    // базовый класс



{

protected:          // спецификатор доступа к элементу value

    int value;

public:


    FirstClass()

    {


        value = 0;

    }


 

    FirstClass( int input )

    {

        value = input;



    }

 

    void show_value()



    {

        cout << value << endl;

    }

};

 



class SecondClass : public FirstClass   // производный класс

{

public:



    SecondClass() : FirstClass ()   // конструктор класса

SecondClass вызывает конструктор класса FirstClass

    {}

 

    SecondClass(int inputS) : FirstClass (inputS)   // inputS



передается в конструктор с параметром класса FirstClass

    {}


 

    void ValueSqr () // возводит value в квадрат. Без

спецификатора доступа protected эта функция не могла бы

изменить значение value

    {

        value *= value;    



    }  

};

 



int main()

{

    setlocale(LC_ALL, "rus");



 

    FirstClass F_object(3);     // объект базового класса

    cout << "value F_object = ";

    F_object.show_value();

 

    SecondClass S_object(4);    // объект производного класса



    cout << "value S_object = ";

    S_object.show_value();  // вызов метода базового класса

 

    S_object.ValueSqr();        // возводим value в квадрат



    cout << "квадрат value S_object = ";

    S_object.show_value();

 

   


 //F_object.ValueSqr();      // базовый класс не имеет доступа

к методам производного класса

 

    cout << endl;



    return 0;

}


Biz misolni tartibda tahlil qilamiz. Ilgari, biz faqat kirish ko'rsatgichlari bilan ishladik privateva   public. 6 - qatorda biz uchun yangi kirish aniqlovchisi bilan tanishdik protected. Bu bilan ajralib turadi  private, chunki u kelib chiqqan sinflardan asosiy sinf a'zolariga kirish imkoniyatini beradi. Agar element value maydonda bo'lsa  private, unda unga kirish yopilgan bo'lar edi va biz 34 - 37 satrlarda  belgilangan SecondClassfunktsiya yordamida  sinf ob'ekti orqali uning qiymatini o'zgartira olmaymiz  .ValueSqr()

Aniqroq qilish uchun kirish spetsifikatorlaridagi farqlar jadvalda aks etishi mumkin:







Download 394.25 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   14




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling