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

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

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

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

1. СТУДЕНТ класын құру. Өрістері: аты, курсы, жынысы. 1-курс студенттері туралы мәліметтерді экранға шығаратын әдіс құру.

2. АДРЕС класын құру. Өрістері: көше аты, үй номері, үй иесінің аты-жөні. Клавиатурадан енгізілген адресте орналасқан үй иесінің аты-жөнін экранға шығаратын әдіс құру.

3. ЦЕХ класын құру. Өрістері: аты, басшысы, жұмыскерлер саны. Клавиатурадан енгізілген цехтың басшысы және жұмыскерлер саны туралы ақпаратты экранға шығаратын әдіс құру.

4. МЕМЛЕКЕТ класын құру. Өрістері: аты, жер көлемі, халық саны. Халқының саны берілген аралықта жататын мемлекет туралы ақпаратты экранға шығаратын әдіс құру.

5. ҚЫЗМЕТКЕР класын құру. Өрістері: аты-жөні, жасы, жұмыс стажы. Қызметкерлер тізімінен клавиатурадан енгізілген қызметкер туралы ақпаратты экранға шығаратын әдіс құру.

6. ЖАНУАР класын сипаттау. Өрістері: аты, класы, орташа салмағы. Клавиатурадан енгізілген класқа жататын жануарлар тізімін экранға шығаратын әдіс құру.

7. ЕМТИХАН класын сипаттау. Өрістері: студент аты, күні, бағасы. Емтиханнан өтпей қалған студенттер тізімін экранға шығаратын әдіс құру.

8. АВТОМОБИЛЬ класын сипаттау. Өрістері: маркасы, қуаттылығы, бағасы. Автомобильдер тізімін маркасы бойынша топтап экранға шығаратын әдіс құру.

9. КВИТАНЦИЯ класын сипаттау. Өрістері: нөмірі, күні, суммасы. Квитанциялар бойынша жалпы сумманы есептеп, экранға шығаратын әдіс құру.

10. ТОВАР класын сипаттау. Өрістері: аты, саны, бір бірлігінің бағасы. Жалпы товарлардың бағасын есептеп, экранға шығаратын әдіс құру.

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

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

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

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

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

  1. Класс дегеніміз не? Си-дегі класс аналогін келтіріңіз. Класстар не үшін сипатталады?

  2. Структурадан класстың айырмашылығы неде?

  3. Не үшін класс мүшелері 3 ену облысына бөлінеді?

  4. Класс экземпляры деген не?

  5. Кластың мүше-мәліметтерін және мүше функцияларын қалай шақыруға болады?

ЛАБОРАТОРИЯЛЫҚ ЖҰМЫС3

КОНСТРУКТОРЛАР. ДЕСТРУКТОРЛАР. ІШТЕСТІРІЛГЕН КЛАСТАР.

Жұмыстың мақсаты: Конструктор көмегімен класс объектілерін құру және деструктор көмегімен жою мүмкіндіктерімен таныстыру.

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

Класс объектісін инициализациялауды қамтамасыз ету үшін set_date() (датаны тағайындау) сияқты функцияларды пайдалану қате болуы мүмкін. Өйткені ешқандай жерде объект инициализациялануы керек деп айтылмаған, сондықтан программист оны ұмытып кетуі немесе екі рет инициализациялап кетуі мүмкін. Бұдан да тиімді жолы бар: программистке объектілерді инициализациялау үшін арналған функцияны сипаттау мүмкіндігін беру. Бұндай функция берілген типті мәнді құрастыратын болғандықтан, ол конструктор деп аталады. Конструктор аты класс атымен сәйкес келеді. Мысалы:

class date {

// …

date(int, int, int);

};

Класта коснтруктор болса, осы кластың барлық объектілері инициализацияланады. Конструктор үшін параметрлер керек болса, олар берілуі тиіс:

date today = date(23,6,1983);

date xmas(25,12,0); // қысқартылғане формасы

date my_burthday; // мүмкін емес,

// инициализацияланбайды

Класс объектілерін инициализациялаудың бірнеше әдісін қамтамасыз еткен дұрыс болады. Оны бірнеше конструктордың көмегімен жүзеге асыруға болады. Мысалы:

class date {

int month, day, year;

public:

// …

date(int, int, int); // күні айы жылы

date(char); // жолдық түрде берілген дата

date(int); // бүгінгі күн, ай және жыл

date(); // үнсіз жағдайдағы дата: бүгін

};

Конструкторлар параметрлер типіне қатысты қайта анықталатын функциялар сияқты ережелерге бағынады.

date today(4);

date july4("Июль 4, 1983");

date guy("5 Ноя");

date now; // үнсіз жағдайда инициализацияланады

Туыс функциялар санын қысқартудың бір әдісі – үнсіз жағдайдағы мәндері бар параметрлерді қолдану.

class date {

int month, day, year;

public:

// …

date(int d =0, int m =0, int y =0);

date(char); // жолдық түрде берілген дата

};

date::date(int d, int m, int y)

{

day = d ? d : today.day;

month = m ? m : today.month;

year = y ? y : today.year;

// мүмкін болатын дата екендігін тексеру

// …

}

Қолданушы анықтайтын типте инициализацияны жүзеге асыратын конструктор жиі болады. Көптеген типтер үшін кері әрекетті, яғни объектілерді жою үшін деструкторлар қажет болады. X класының деструктор аты ~X() («конструктор толықтауышы»). Көптеген типтер конструктормен бөлінетін және деструктормен босатылатын бос жадының қандай бір бөлігін қолданады.

// First класымен жұмыс жасайтын 1 программа

// Файл FIRST.H

#include <stdio.h>

#include <iostream.h>

class First

{

private:

int field1; // First класына енуді есептейді

float field2, field3;

void setField1( int anInt ) { field1 = anInt; }

public:

// Конструкторлар мен деструкторлар

First( void )

{

cout << "\nIn void constructor for First";

setField1( 0 );

field2 = 0.0;

field3 = 0.0;

}

First( float aField2, float aField3 = 0.0 )

{

cout << "\nIn 2-parameter constructor for First";

setField1( 0 );

field2 = aField2;

field3 = aField3;

}

~First( void ) { cout << "\nIn destructor for First"; }

// Ену әдістері

int getField1( void ) { return ++field1; }

float getField2( void ) { field1++; return field2; }

float getField3( void ) { field1++; return field3; }

void setField2( float aFloat ) { field1++; field2 = aFloat; }

void setField3( float aFloat ) { field1++; field3 = aFloat; }

void resetField1( void ) { setField1( 0 ); }

// Өрістерге қолданылатын амалдар

int compareFields( void ) { field1++; return field2 == field3; }

// Баспа әдістері

void print( void )

{

char buffer[40];

field1++; // Баспа да ену болып табылады

cout << "\n Number of accesses to this object = " << field1;

sprintf( buffer , "\n Value of field2 = %.2f" , field2 );

cout << buffer;

sprintf( buffer , "\n Value of field3 = %.2f" , field3 );

cout << buffer;

}

};

// Файл FIRST.CPP

// First класы үшін тесттік программа

#include "first.h"

void main()

{

char buffer[40];

First first1 , first2( 10.25 ) , first3( 12.6, -5.6 );

cout << "\n\nTest program results for class First\n";

cout << "\nPrint details of first1";

first1.print();

cout << "\nPrint details of first2";

first2.print();

cout << "\nPrint details of first3";

first3.print();

cout << "\n\nModify fields of first2 and verify";

first2.setField2( 15.8 );

first2.setField3( -8.0 );

first2.print();

cout << "\n\nAccess field2 and field3 of first1";

sprintf( buffer , "\n field2 = %.2f" , first1.getField2() );

cout << buffer;

sprintf( buffer , "\n field3 = %.2f" , first1.getField3() );

cout << buffer;

cout << "\n\nReset and print first3";

first3.resetField1();

first3.print();

cout << "\n\nCompare field2 and field3 of first1";

if( first1.compareFields() )

{

cout << "\n field2 = field3\n";

}

else

{

cout << "\n field2 != field3\n";

}

}