Главная страница
Навигация по странице:

  • //-----------> деструктор

  • Дербес элементтер және жолдас класстар. Жоспар

  • 2. Кластың жолдастары

  • 3. Жолдас кластар мен қорғалған элементтер

  • ОББН лекция 2. Си программалау тіліне кіріспе Жоспар


    Скачать 128.11 Kb.
    НазваниеСи программалау тіліне кіріспе Жоспар
    Дата06.08.2020
    Размер128.11 Kb.
    Формат файлаdocx
    Имя файлаОББН лекция 2.docx
    ТипПрограмма
    #135233
    страница7 из 11
    1   2   3   4   5   6   7   8   9   10   11

    4. Деструктор



    Деструктор программа объектіне жойған уақытта автоматты түрде іске қосылады. Әзірше сіздің программаңыз объектілерді оның ең басында жариялап құрды. Ал программ аяқталғанда C++ объектіні жойды. Егер сіз деструкторды программаның ішінде жарияласаңыз, онда C++ программа аяқталғанда автоматты түрде әрбір объект үшін деструкторды шақырады. Конструкторға ұқсас, деструктордың атауы бар. Ол атау класс объектісіне ұқсас. Тек оның атауында тильда () символы қолданылады:

    class_name (void) //-----------> деструктор

    {
    // деструктор операторлары
    }

    Келесі программада employee класы үшін деструктор анықталған:

    void employee::-employee(void)

    {
       cout<}

    Программа аяқталған уақытта C++ автоматты түрде әрбір объект үшін деструкторды шақырады.

    #include

    #include

    class employee

    {
    public:
       employee(char*,long,float);
       employee(void);
       voidshow_employee(void);
       intchange_salary(float);
       longget_id(void);
    private:
       charname[64];
       longemployee_id;
       floatsalary;
    };

    employee::employee(char *name, long employee_id, float salary)

    {
       strcpy(employee::name,name);
       employee::employee_id=employee_id;
       if(salary<50000.0)employee::salary=salary;
       else // жалақының мәні дұрыс емес
       employee::salaryв0.0;
    }

    void employee::-employee(void)

    {
       cout<}

    void employee::show_employee(void)

    {
       cout<<"қызметші:"<   cout<<"қызметшіномері:"<   cout<<"жалақысы:"<}

    void main(void)

    {
       employeeworker("Арман",101,10101.0);
       worker.show_employee();
    }

    Егер программаны теріп, компиляциядан өткізіп және есептеуге жіберсеңіз, онда экранда:

    қызметші: Арман

    қызметші номері: 101

    жалаұысы: 10101

    Арман үшін объектіні жою

    шығады.


      1. Дербес элементтер және жолдас класстар.


    Жоспар

    1. Жолдас кластар


    2. Кластың жолдастары

    3. Жолдас кластар мен қорғалған элементтер

    4. Класс жолдастарының сандарына шек қою


    5. Жолдас- функциялар


    1. Жолдас кластар



    Біз білетініміздей, программа кластың дербес (private) элементтеріне осы кластың функция-элементтері арқылы әсер етеді. Жалпы жағдайда, кластың дербес элементтерін қолдану арқылы біз класс элементтерінің мәндерін бүлдіріп алудан сақтанамыз.Мұнда дербес элементтерді өзгерту интерфейс функциялары арқылы жүзеге асырылады. Программада әртүрлі объектілер қолданылады. Осы объектілерді тиімді пайдаланып программаның мүмкіншілігін аттыруға болады. Ол үшін бір кластың объектілерінде екінші кластың элементтерін қолданады. Бұл жағдайда интерфейс функцияны шақыру үшін кететін уақыт үнемделеді.Осындай уақыттарда C++ тілінде класты басқа кластың жолдасы (friend} ретінде анықтайды және класс-жолдасқа басқа кластың дербес элементтерін қолдануға рұқсат береді.

    Кластың дербес (private) элементтері оны қорғайды, қатенің болу ықтималдығын азайтады.

    Кластың жолдастарын анықтау



    C++ тілінде нақты кластың жолдастары осы кластың дербес элементтерін қолдана алады. Бір клас екінші бір кластың жолдасы екенін көрсету үшін friend қызметші сөз және жолдас-кластың атауы беріледі. Мысалы , төменде сипатталған book класы librarian класын өзінің жолдасы ретінде жариялайды. Сондықтан, librarian класының объектілері book класының дербес элементтерін нүкте операторы арқылы тікелей қолдана алады:

    class book

    {
    public:
       book(char*,char*,char*);
       voidshow_book(void);
       friendlibrarian;
    private:
       chartitle[64];
       charauthor[64]
       charcatalog[64];
    };

    Көріп отырғанымыздай, жолдас класты көрсету үшін, класс анықтамасының ішінде тек бір оператор ғана жеткілікті. Төменде librarian класы book класының жолдасы ретінде алынады. Программада librarian класы change_catalog функциясын нақты кітаптың карточкасын өзгерту үшін қолданады:

    #include

    #include

    class book

    {
    public:
       book(char*,char*,char*);
       voidshow_book(void);
       friendlibrarian;
    private:
       chartitle[64];
       charauthor[64];
       charcatalog[64];
    };

    book::book(char *title, char *author, char •catalog)

    {
       strcpy(book::title,title);
       strcpy(book::author,author);
       strcpy(book::catalog,catalog);
    }

    void book::show_book(void)

    {
       cout<<"атауы:"<   cout<<"автор:"<   cout<<"каталог:"<}

    class librarian

    {
    public:
       voidchange_catalog(book*,char*);
       char*get_catalog(book);
    };

    void librarian::change_catalog(book *this_book, char *new_catalog)

    {
       strcpy(this_book->catalog,new_catalog);
    }

    char *librarian: :get__catalog(book this_book)

    {
       staticcharcatalog[64];
       strcpy(catalog,this_book.catalog);
       return(catalog);
    }

    void main(void)

    {
       book programming( " C++ тілінде программалауға үйрену", "Jamsa", "P101");
       librarianlibrary;
       programming.show_book();
       library.change_catalog(&programming,"ЖылдамC++101");
       programming.show_book();
    }

    Көріп отырғанымыздай, программа book класының объектісін librarian класының change_catalog функциясына адрес арқылы береді. Функция book класының элементін өзгертетіндіктен, программа параметрді адрес арқылы беруге тиіс, одан кейін көрсекішті осы кластың элементін пайдалану үші қолданамыз.

    2. Кластың жолдастары

    Әдетте кластың дербес элементтерін қолдану үшін интерфейстік функциялар арқылы жүзеге асырылады.Пргораммада объектілерді қолдану барысында бір кластың элементтеріне екінші кластың элементтерін пайдалануға рұқсат беру қажет болады. Ол үшін компиляторға жолдас класс жайында информация беруіміз қажет.

    class abbott

    {
    public:
    friendcostello;
    //жалпыэлементтер
    private:
    //дербесэлементтер
    };


    3. Жолдас кластар мен қорғалған элементтер

    C++тілінде кластың қорғалған (protected) элементтері оның туынды кластарында бірден қолдана беруге болатынын білеміз. Бірақ қорғалған элементтерді тек қана туынды кластың элементері ғана қолдана алады. Жолдас кластар мұрагерлік қасиет арқылы байланыспайды.Сондықтан байланыспаған кластардың дербес элементтерін қолдану үшін компиляторға берілген класс жолдас класс екенін хабарлауымыз қажет.
    1   2   3   4   5   6   7   8   9   10   11


    написать администратору сайта