Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМКД_ОБП_Урдабаева.doc
Скачиваний:
113
Добавлен:
01.03.2016
Размер:
1.29 Mб
Скачать
  1. Жұмысты орындау тәртібі

1. Теориялық мәліметпен танысыңыз.

2. 1 – 3-ші программалардың жұмысын талдаңыз.

3. Өзіндік жұмыс тапсырмасын орындаңыз

  1. Өзіндік жұмыс тапсырмалары

  1. № 2 лабораториялық жұмыстың кластар иерархиясын топ класымен толтыру. Мысалы, ФАКУЛЬТЕТ пәндік облысы үшін «факультет», «студенттік топ», «кафедра» кластарын ұсынуға болады.

  2. Итератор әдісін кластар тобы үшін жазу.

  3. Топқа кіруші барлық объектілер үшін орындалатын процедура немесе функция жазу.

  4. Топтардың объектілері жасалатын, итератордың қолданылуын көрсететін бағдарлама құру.

Объектілер иерархиясы келесі түрде құрылады (ФАКУЛЬТЕТ мысалында):

а) бос ФАКУЛЬТЕТ құрылады

б) бос КАФЕДРА құрылады

в) ОҚЫТУШЫЛАР құрылады және КАФЕДРАҒА енгізіледі

г) КАФЕДРА ФАКУЛЬТЕТКЕ енгізіледі

д) басқа кафедра үшін осы қадамдар қайталанады

е) бос СТУДЕНТТІК ТОП құрылады

ж) СТУДЕНТТЕР құрылады және СТУДЕНТТІК ТОПҚА енгізіледі

з) СТУДЕНТІК ТОП ФАКУЛЬТЕТКЕ енгізіледі

и) басқа студенттік топ үшін осы қадамдар қайталанады

ФАКУЛЬТЕТ кері ретпен өшіріледі (деструкторды шақырған кезде).

  1. Жұмыс есебі

- Жұмыс тақырыбы мен мақсаты;

- Жұмыстың орындалуы кезінде қойылған сұрақтарға жауап беру;

- Өзіндік жұмыс программасының листингі.

  1. Лабораторялық жұмыс бойынша сұрақтар

  1. Объектілер иерархиясы дегеніміз не?

  2. Иерархия қалай құрылады?

  3. Итераторлар дегеніміз не?

  4. Топтар дегеніміз не?

  5. Топ элементтері қалай анықталады?

ЛАБОРАТОРНАЯ РАБОТА № 8

ДОСТЫҚ ФУНКЦИЯЛАР ЖӘНЕ КЛАСТАР

Жұмыс мақсаты: Достық функциялар және кластар механизмімен таныстыру.

  1. Қысқаша теориялық мәліметтер

1.Достық кластар

Класта басқа класты достық ретінде хабарлауға болады. Бір класс басқа класқа барлық жабық мүшелеріне қатынауға рұқсат береді. Әдетте достық кластар екі бір-біріне байланыссыз кластар үшін қолданылады.

class One {

friend class Two; //класс Two One класынын досы

private:

double value; //кластың жабық мүшесі

public:

One() { value = 3.14159; }

};

class Two {

private:

One object;

public:

// value жабық мүшесіне қатынау

void ShowVal(void) { cout << object.value; }

};

//Программа 1 Достық класты хабарлау мысалы

#include <iostream.h>

class One {

friend class Two; //класс Two друг класса One

private:

int x;

protected:

void doublex(void) { x *= x; } //доступен One и Two

public:

One() { x = 100; } //конструктор 1

One(int n) { x = n; } //конструктор 2

};

class Two {

private:

One object; //доступен только Two

public:

void ShowVal(void); //доступна всем

};

void main()

{

Two aTwo;

aTwo.ShowVal();

}

void Two::ShowVal(void)

{

One aOne(1234);

cout << endl << "Before, object.x == " << object.x;

object.doublex();

cout << endl << "After, object.x == " << object.x;

cout << endl << "aOne.x == " << aOne.x << endl;

}

Екі класс бір-бірін достық ретінде хабарлай алады

class Two;

class One {

friend class Two;

. . . . . . . . .

};

class Two {

friend class One;

. . . . . . . . .

};

2.Достық функциялар

Достық функциялар достық кластарға ұқсас, бірақ тиімдірек. Достық функцияны хабарлау оған кластың жабық және қорғалған мүшелеріне қатынауға мүмкіндік береді.

// Программа 2 Достық функцияны хабарлау мысалы

#include <iostream.h>

class Two;

class One {

friend void Show(One& c1, Two& c2);//Дружественная функция

private: //двум классам

char *s1;

public:

One() { s1 = "Testing "; }

};

class Two {

friend void Show(One& c1, Two& c2);

private:

char *s2;

public:

Two() { s2 = "one, two, three"; }

};

void main()

{

One c1;

Two c2;

Show(c1,c2);

}

void Show(One& c1, Two& c2)

{

cout << c1.s1 << c2.s2 << endl;

}

Достық функция класс мүшесі де болуы мүмкін.

// Программа 3

#include <iostream.h>

class One;

class Two {

private:

char *s2;

public:

Two() { s2 = "one, two, three"; }

void Show(One& c1);

};

class One {

friend void Two::Show(One& c1);// Достық функция- мүше

private:

char *s1;

public:

One() { s1 = "Testing "; }

};

void main()

{

One c1;

Two c2;

c2.Show(c1);

}

void Two::Show(One& c1)

{

cout << c1.s1 << s2 << endl;

}