- •Қазақстан республикасы білім және ғылым министрлігі қ. Жұбанов атындағы ақтөбе мемлекеттік университеті
- •050602 - «Информатика» мамандығы күндізгі бөлімінің
- •«Obp 4301 Объектіге бағытталған программалау» пәнінен
- •II кафедраның әдістемелік секциясы отырысында талқыланды
- •Пән мазмұны
- •Лабораториялық сабақтардың тақырыптарының үлгілі тізімі
- •Өзіндік жұмыстардың тақырыптарының үлгілі тізімі
- •Ұсынылған әдебиеттер тізімі
- •Оқу пәнінің жұмыс бағдарламасы
- •I жұмыс бағдарламасы дайындалып енгізілді
- •II кафедра отырысында талқыланды
- •IV факультеттің оқу-әдістемелік комиссиясына бекітуге ұсынылды
- •V алғашқы тексеру мерзімі 2011 ж. Тексеру мерзімділігі 1 жыл
- •Дәрістер
- •Практика сабақтары
- •Лаборатория сабақтары
- •Негізгі әдебиеттер
- •Оқу пәнінің жұмыс бағдарламасы
- •Пәннің тақырыптық жоспары
- •Өзіндік жұмыс тапсырмалары
- •1. Жұмыс түрлері:
- •2. Жұмыс түрлерін бағалау критериилері:
- •Курстық жұмыстың тақырыптары
- •Пән бойынша тапсырмаларды орындау және тапсыру графигі
- •Пәннің оқу-әдістемемен қамтамасыз ету картасы
- •Қр білім және ғылым министрлігі
- •2. Көпше түрдегі мұрагерлік
- •2. Операторларды қайта анықтаудың түрлері.
- •3. Унарлы операторларды қайта анықтау
- •4. Бинарлы операторларды қайта анықтау
- •5. Меншіктеу операторларын қайта анықтау
- •6. New және delete операторларын қайта анықтау
- •Жәй және күрделі полиморфизм
- •Виртуальді функциялар
- •Иерархия схемасы
- •Қр білім және ғылым министрлігі
- •2. Орындауға арналған тапсырмалар:
- •Практикалық жұмыс №2 конструкторларды және деструкторларды құру
- •2. Орындауға арналған тапсырмалар:
- •3. Өз бетімен орындауға арналған тапсырмалар (үй тапсырмасы):
- •Практикалық жұмыс №3-4 мұрагерлік. Жалғызданған және көпше түрдегі мұрагерлік
- •2. Орындауға арналған тапсырмалар:
- •3. Өз бетімен орындауға арналған тапсырмалар (үй тапсырмасы):
- •Практикалық жұмыс №5-6 полиморфизм. Амалдарды қайта анықтау
- •3. Өз бетімен орындауға арналған тапсырмалар (үй тапсырмасы):
- •5. Литерлік шамаларға қолданылатын функциялар қай кітапханада орналасқан?
- •Практикалық жұмыс №7-8 функциялардың және операторларды қайта жүктеудің бірге қолданылуы
- •3. Өз бетімен орындауға арналған тапсырмалар (үй тапсырмасы):
- •Практикалық жұмыс №9-10 енгізу-шығару ағындары
- •2. Өз бетімен орындауға арналған тапсырмалар (үй тапсырмасы):
- •Қр білім және ғылым министрлігі
- •Жұмысты орындау тәртібі
- •Өзіндік жұмыс тапсырмалары
- •Жұмыс есебі
- •Жұмысты орындау тіртібі
- •Өзіндік жұмыс тапсырмалары
- •Жұмыс есебі
- •Жұмысты орындау тіртібі
- •Өзіндік жұмыс тапсырмалары
- •Жұмыс есебі
- •Лабораторялық жұмыс бойынша сұрақтар
- •Лабораториялық жұмыс № 6-7 объектілер иерархиясы. Топтар. Итераторлар.
- •Қысқаша теориялық мәліметтер
- •Объектілер иерархиясы.
- •Мұндағы gr топ-объект.
- •Жұмысты орындау тәртібі
- •Өзіндік жұмыс тапсырмалары
- •Жұмыс есебі
- •2.Достық функциялар
- •Іі. Жұмыстың орындалу реті
- •Ііі. Өзіндік жұмыс тапсырмалар
- •Жұмыс есебі
- •Іі. Жұмыстың орындалу реті
- •Бүтін сандармен жұмыс жасайтын объект-калькулятор.
- •Жұмысты орындау реті.
- •Әдістемелік нұсқау.
- •Есеп берудің мазмұны.
- •Калькулятор
- •Қр білім және ғылым министрлігі
- •3. Практикалық және лабораториялық сабақтарды орындау
- •Қр білім және ғылым министрлігі
- •Тақырыбы: Конструкторлар және деструкторлар
- •Тақырыбы: Мұрагерлік
- •Тақырыбы: Операторларды қайта жүктеу
- •Тақырыбы: Ағындық кластар
- •Бақылау-өлшеу материалдары
- •21. Литерлік шамаларға қолданылатын функциялар қай кітапханада орналасқан?
- •Келісу парағы
Жұмысты орындау тәртібі
1. Теориялық мәліметпен танысыңыз.
2. Өзіндік жұмыс тапсырмасын орындаңыз.
Өзіндік жұмыс тапсырмалары
1. СТУДЕНТ класын құру. Өрістері: аты, курсы, жынысы. 1-курс студенттері туралы мәліметтерді экранға шығаратын әдіс құру.
2. АДРЕС класын құру. Өрістері: көше аты, үй номері, үй иесінің аты-жөні. Клавиатурадан енгізілген адресте орналасқан үй иесінің аты-жөнін экранға шығаратын әдіс құру.
3. ЦЕХ класын құру. Өрістері: аты, басшысы, жұмыскерлер саны. Клавиатурадан енгізілген цехтың басшысы және жұмыскерлер саны туралы ақпаратты экранға шығаратын әдіс құру.
4. МЕМЛЕКЕТ класын құру. Өрістері: аты, жер көлемі, халық саны. Халқының саны берілген аралықта жататын мемлекет туралы ақпаратты экранға шығаратын әдіс құру.
5. ҚЫЗМЕТКЕР класын құру. Өрістері: аты-жөні, жасы, жұмыс стажы. Қызметкерлер тізімінен клавиатурадан енгізілген қызметкер туралы ақпаратты экранға шығаратын әдіс құру.
6. ЖАНУАР класын сипаттау. Өрістері: аты, класы, орташа салмағы. Клавиатурадан енгізілген класқа жататын жануарлар тізімін экранға шығаратын әдіс құру.
7. ЕМТИХАН класын сипаттау. Өрістері: студент аты, күні, бағасы. Емтиханнан өтпей қалған студенттер тізімін экранға шығаратын әдіс құру.
8. АВТОМОБИЛЬ класын сипаттау. Өрістері: маркасы, қуаттылығы, бағасы. Автомобильдер тізімін маркасы бойынша топтап экранға шығаратын әдіс құру.
9. КВИТАНЦИЯ класын сипаттау. Өрістері: нөмірі, күні, суммасы. Квитанциялар бойынша жалпы сумманы есептеп, экранға шығаратын әдіс құру.
10. ТОВАР класын сипаттау. Өрістері: аты, саны, бір бірлігінің бағасы. Жалпы товарлардың бағасын есептеп, экранға шығаратын әдіс құру.
Жұмыс есебі
- Жұмыс тақырыбы мен мақсаты;
- Жұмыстың орындалуы кезінде қойылған сұрақтарға жауап беру;
- Өзіндік жұмыс программасының листингі.
Лабораторялық жұмыс бойынша сұрақтар
Класс дегеніміз не? Си-дегі класс аналогін келтіріңіз. Класстар не үшін сипатталады?
Структурадан класстың айырмашылығы неде?
Не үшін класс мүшелері 3 ену облысына бөлінеді?
Класс экземпляры деген не?
Кластың мүше-мәліметтерін және мүше функцияларын қалай шақыруға болады?
ЛАБОРАТОРИЯЛЫҚ ЖҰМЫС № 3
КОНСТРУКТОРЛАР. ДЕСТРУКТОРЛАР. ІШТЕСТІРІЛГЕН КЛАСТАР.
Жұмыстың мақсаты: Конструктор көмегімен класс объектілерін құру және деструктор көмегімен жою мүмкіндіктерімен таныстыру.
Қысқаша теориялық мәліметтер
Класс объектісін инициализациялауды қамтамасыз ету үшін 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";
}
}