1. Приклад визначення класу STUDENT, який містить поля «ім'я», «вік», «рейтинг», конструктори трьох типів, деструктор, а також функції-методи класу.
const int LNAME=25;
class STUDENT{
char name[LNAME]; // ім'я
int age; // вік
float grade; // рейтинг
public:
STUDENT(); // конструктор без параметрів
STUDENT(char*,int,float); // конструктор з|із| параметрами
STUDENT(const STUDENT&); // конструктор копіювання
~STUDENT();
char * GetName() ;
int GetAge() const;
float GetGrade() const;
void SetName(char*);
void SetAge(int);
void SetGrade(float);
void Set(char*,int,float);
void Show(); };
Приклад|зразок| реалізації конструктора з|із| видачею повідомлення|сполучення|.
STUDENT::STUDENT(char*NAME,int AGE,float GRADE)
{
strcpy(name,NAME); age=AGE; grade=GRADE;
cout<< \nКонструктор з|із| параметрами викликаний|спричинений| для об'єкту
<<this<<endl;
}
2. Слід передбачити у програмі всі можливі способи виклику конструктора копіювання. Нагадуємо, що конструктор копіювання викликається|спричиняється|:
а) під час використання об'єкта для ініціалізації іншого об'єкта
Приклад
STUDENT а(“Иванов”,19,50) b=a;
б) коли об'єкт передається функції за значенням
Приклад
void View(STUDENT а){а.Show;}
в) під час побудови|шикуванні| тимчасового об'єкта як поверненого значення функції
Приклад|зразок|.
STUDENT NoName(STUDENT & student)
{STUDENT temp(student);
temp.SetName(“NoName”);
return temp;}
STUDENT c=NoName(a);
3. У програмі необхідно передбачити розміщення об'єктів як у статичній, так і у динамічній пам'яті, а також створення|створіння| масивів об'єктів.
Приклади
а) масив студентів розміщують в статичній пам'яті
STUDENT gruppa[3];
gruppa[0].Set(“Иванов”,19,50);
і т.д.
або
STUDENT gruppa[3]={STUDENT(“Иванов”,19,50),
STUDENT(“Петрова”,18,25.5)
STUDENT(“Сидоров”,18,45.5)};
б) масив студентів розміщують у динамічній пам'яті
STUDENT *p;
p=new STUDENT [3];
p-> Set(“Иванов”,19,50);
і т.д.
4. Приклад|зразок| використання покажчика на компонентну функцію
void (STUDENT::*pf)();
pf=&STUDENT::Show;
(p[1].*pf)();
5. Програма використовує три файли:
* заголовний h-файл з|із| визначенням класу
* cpp-файл з|із| реалізацією класу
* сpp-файл демонстраційної програми.
6. Для запобігання багатократному|багаторазовому| ввімкненню файла-заголовка використовують наступні директиви препроцесора
#ifndef STUDENTH
#define STUDENTH
// модуль STUDENT.H
...
#endif
Зміст|вміст,утримання| звіту
1. Титульна сторінка: назва дисципліни; номер і найменування роботи; прізвище, ім'я, по батькові студента; дата виконання.
2. Поставлення завдання|задачі|. Слід дати конкретне поставлення, тобто вказати, який клас має бути реалізований, які повинні бути у ньому конструктори, компоненти-функції і т.д.
3. Визначення призначеного для користувача класу з|із| коментарями.
4. Реалізація конструкторів і деструкторів.
5. Фрагмент програми, що свідчить про використання покажчика на об'єкт і покажчика на функцію з|із| поясненням.
6. Лістинг основної програми, де має бути вказано, у якому місці та який конструктор або деструктор викликають.
Варіанти завдань до лабораторної роботи № 6|задавань|
Описи членів - даних призначених для користувача класів
1. СТУДЕНТ
ім'я – char*
курс – int
підлога|стать| – int(bool)
| 2. СЛУЖБОВЕЦЬ
ім'я – char*
вік – int
робочий стаж – int
| 3. КАДРИ
ім'я – char*
номер цеху – int
розряд – int
|
4. ВИРІБ
ім'я – char*
шифр – char*
кількість – int
| 5. БІБЛІОТЕКА
ім'я – char*
автор – char*
вартість – float
| 6. ІСПИТ|екзамен|
ім'я студента – char*
дата – int
оцінка – int
|
7. АДРЕСА
ім'я – char*
вулиця – char*
номер дому|будинку,хати| – int
| 8. ТОВАР
ім'я – char*
кількість – int
вартість – float
| 9. КВИТАНЦІЯ
номер – int
дата – int
сума – float
|
10. ЦЕХ
ім'я – char*
начальник – char*
кількість людей,
що працюють – int
| 11. ПЕРСОНА
ім'я – char*
вік – int
стать|стать| – int(bool)
| 12. АВТОМОБІЛЬ
марка – char*
потужність – int
вартість| – float
|
13. КРАЇНА
ім'я – char*
форма
правління – char*
площа| – float
| 14. ТВАРИНА
ім'я – char*
клас – char*
середня вага – int
| 15. КОРАБЕЛЬ
назва – char*
водотоннажність – int
тип – char*
|
16. Хижак
ім'я – char*
ареал - char*
кількість споживаної за місяць їжі – float
| 17. Іграшка
назва – char*
тип – char* або enum
вартість - float
| 18. Фільм
назва – char*
режисер – char*
тривалість - float
|
19. Дисципліна
назва – char*
спеціальність – char*
обсяг лекц. годин – char*
| 20. Басейн
назва - char*
ширина, довжина – float
глибина біля вишки – float
| 21. Тест
назва дисципліни – char*
кількість питань – int
матриця вірних відповідей – int*
|
22. ІСПИТ|екзамен|
ім'я студента – char*
дата – int
оцінка – int
| 23. ВИРІБ
ім'я – char*
шифр – char*
кількість – int
| 24. СЛУЖБОВЕЦЬ
ім'я – char*
вік – int
робочий стаж – int
|
25. ПЕРСОНА
ім'я – char*
вік – int
стать|стать| – int(bool)
| 26. БІБЛІОТЕКА
ім'я – char*
автор – char*
вартість – float
| 27. КВИТАНЦІЯ
номер – int
дата – int
сума – float
|
28. ТОВАР
ім'я – char*
кількість – int
вартість – float
| 29. ЦЕХ
ім'я – char*
начальник – char*
кількість людей,
які працюють – int
| 30. ВОКЗАЛ
назва – char*; ередня кількість пасажирів за день – float
маршрути - сhar**
|
СПИСОК ЛІТЕРАТУРИ