lr09
.pdfЦя програма виводить на екран значення попередньо проініціалізованого масиву об'єктів obArr. Для того, щоб масив об’єктів можна було не тільки створювати, але і ініціалізувати при оголошенні, необхідно, щоб клас включав параметризований конструктор (а даному прикладі — AnyClass(int n)). Застосований в прикладі синтаксис ініціалізації масиву obArr є скороченою формою наступної конструкції:
AnyClass obArr[5] = { AnyClass(13) AnyClass(17)
AnyClass(21)
AnyClass(23) AnyClass(27) };
На жаль, нею можна скористатися тільки при ініціалізації масивів об'єктів, конструктор яких містить тільки один параметр. При ініціалізації масивів об'єктів з конструктором, що містить декілька параметрів, доводиться використати повну (чи "довгу") форму конструкції.
У наступному прикладі створюється двовимірний масив об'єктів, конструктор якого містить два параметри.
//Демонстрація створення масиву об’єктів,
//які мають конструктор з двома параметрами
#include "stdafx.h" #include <iostream>
using namespace std;
class Coord
{
int x, y; public:
Coord(int _x, int _y) {x = _x; y = _y;} int GetX() {return x;}
int GetY() {return y;}
};
int _tmain(int argc, _TCHAR* argv[])
{
Coord coordArr[4][2] = { Coord(3,4), Coord(5,6), Coord(7,8), Coord(9,10), Coord(11,12), Coord(13,14), Coord(15,16), Coord(17,18)
}; int i, j;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 2; j++)
{
cout << coordArr[i][j].GetX() << ' '; cout << coordArr[i][j].GetY() << ' '; cout << '\t';
}
cout << '\n';
}
cout << '\n';
return 0;
}
Використання покажчиків для доступу до об'єктів масиву абсолютно аналогічно їх використанню для звичайних змінних і структур. Арифметика покажчиків також аналогічна,
11
Інкрементування покажчика призводить до того, що він вказує на наступний об'єкт масиву, декрементування — до того, що він вказує на попередній об'єкт масиву. Розглянемо приклад:
// Демонстрація доступу до елементів масиву об’єктів через покажчик
//
#include "stdafx.h" #include <iostream>
using namespace std;
class Coord
{
int x, y; public:
Coord(int _x, int _y) {x = _x; y = _y;} int GetX() {return x;}
int GetY() {return y;}
};
int _tmain(int argc, _TCHAR* argv[])
{
Coord coordArr[4] = { Coord(3,4), Coord(5,6), Coord(7,8), Coord(9,10)
};
int i;
Coord* ptr; //Покажчик на об’єкт класу Coord
ptr = coordArr; //Ініціалізація покажчика // адресою масиву
for (i = 0; i < 4; i++)
{
cout << ptr->GetX() << ' ' ; cout << ptr->GetY() << '\n';
ptr++; //Перехід на наступний об'єкт
}
cout << '\n';
return 0;
}
Ця програма виводить на екран в кожному рядку значення змінних x та y поточного елементу масиву об'єктів.
12
Порядок виконання роботи
1.Створити проект Консольної програми Win32, в якому будуть реалізовані наступні пункти роботи.
2.Створити клас A, опис якого подано у варіантах до роботи (таблиця 1). Члени даних класу повинні бути закритими. В класі реалізувати конструктор за замовчуванням, конструктор копіювання, параметричний конструктор, деструктор класу.
3.Реалізувати функції члени класу A для запису та зчитування (типу Get<Ім’я_даних>/Set<Ім’я_даних>) членів даних, які містить клас A згідно варіанту (таблиця 1). Додати до класу A функцію-член Show(), яка виводить на екран в зрозуміло сформованому виді всі дані, що зберігаються в об’єкті класу.
4.Створити клас B опис якого подано у варіантах до роботи (таблиця 2).
5.В класі B реалізувати функції-члени:
повернення кількості заповнених комірок;
додавання даних в першу вільну комірку масиву даних класу B;
очищення даних в останній заповненій комірці масиву даних класу B;
очищення всіх комірок в масиві даних класу B;
виведення на екран інформації про об’єкт: власна назва об’єкту та список даних, які
зберігаються в кожному заповненому елементі масиву даних.
13
Варіанти до роботи
|
|
|
|
|
|
|
|
Таблиця 1. Опис класу A до пункту 2 |
|
|
|
|
|
|
|
|
|
|
|
|
Номер варіанту |
|
Назва |
|
Пояснення |
|
|||
|
|
класу A |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Картка іноземного слова для англо-українського |
|
|
|
|
|
|
|
|
|
словника. Рекомендовані поля класу: |
|
|
|
|
|
|
|
|
|
|
слово англійською мовою; |
|
1 |
6 |
11 |
16 |
21 |
26 |
Word |
|
переклад слова українською; |
|
|
|
|
|
|
|
|
|
частина мови; |
|
|
|
|
|
|
|
|
приклад речення, яке містить дане слово. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Опис купленого в магазині товару. |
|
|
|
|
|
|
|
|
|
Рекомендовані поля класу: |
|
|
|
|
|
|
|
|
|
|
код товару; |
|
2 |
7 |
12 |
17 |
22 |
27 |
Goods |
|
назва товару; |
|
|
|
|
|
|
|
|
|
ціна за одиницю; |
|
|
|
|
|
|
|
|
|
кількість одиниць. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Картка тестового завдання контрольної роботи. |
|
|
|
|
|
|
|
|
|
Рекомендовані поля класу: |
|
|
|
|
|
|
|
|
|
|
питання; |
|
3 |
8 |
13 |
18 |
23 |
28 |
Task |
|
перша відповідь; |
|
|
друга відповідь; |
|
|||||||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
третя відповідь; |
|
|
|
|
|
|
|
|
|
номер правильної відповіді. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Картка клієнта магазину. Рекомендовані поля |
|
|
|
|
|
|
|
|
|
класу: |
|
|
|
|
|
|
|
|
|
|
прізвище; |
|
4 |
9 |
14 |
19 |
24 |
29 |
Customer |
|
дата народження; |
|
|
|
|
|
|
|
|
|
назва останньої покупки; |
|
|
|
|
|
|
|
|
|
сума останньої покупки. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Книжка. Рекомендовані поля класу: |
|
|
|
|
|
|
|
|
|
|
назва книги; |
|
5 |
10 |
15 |
20 |
25 |
30 |
Book |
|
автор книги; |
|
|
видавництво; |
|
|||||||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
рік видання. |
|
|
|
|
|
|
|
|
|
|
|
14
|
|
|
|
|
|
|
|
Таблиця 2. Опис класу B до пункту 4 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Номер варіанту |
|
Назва |
|
|
Пояснення |
|
|
||||
|
|
класу B |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Англо-український словник. Поля класу: |
|
|
|||
|
|
|
|
|
|
|
|
назва словника; |
|
|
|
|
1 |
6 |
11 |
16 |
21 |
26 |
Dictionary |
масив 10 елементів типу класу Word, карток |
|
||||
|
іноземних слів; |
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
кількість заповнених елементів масиву слів. |
|
||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
Товарний чек. Поля класу: |
|
|
|
||
|
|
|
|
|
|
|
|
назва магазину; |
|
|
|
|
|
|
|
|
|
|
|
|
масив 10 елементів типу класу Goods, |
|
|||
2 |
7 |
12 |
17 |
22 |
27 |
Receipt |
|
товарів, куплених в магазині; |
|
|
||
|
|
|
|
|
|
|
кількість |
заповнених |
елементів |
масиву |
|
|
|
|
|
|
|
|
|
|
товарів. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
Набор тестових питань. Поля класу: |
|
|
|||
|
|
|
|
|
|
|
|
назва предмету; |
|
|
|
|
|
|
|
|
|
|
|
|
масив 10 елементів типу класу Task, |
|
|||
3 |
8 |
13 |
18 |
23 |
28 |
TestSet |
|
тестових завдань; |
|
|
|
|
|
|
|
|
|
|
|
|
кількість |
заповнених |
елементів |
масиву |
|
|
|
|
|
|
|
|
|
завдань. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
Список покупців магазину. Поля класу: |
|
|
|||
|
|
|
|
|
|
|
|
назва магазину; |
|
|
|
|
|
|
|
|
|
|
|
масив 10 елементів типу класу Customer, |
|
||||
4 |
9 |
14 |
19 |
24 |
29 |
CustomerList |
|
клієнтів магазину; |
|
|
|
|
|
|
|
|
|
|
|
|
кількість |
заповнених |
елементів |
масиву |
|
|
|
|
|
|
|
|
|
клієнтів. |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
Список книжок на руках в абонента бібліотеки. |
|
||||
|
|
|
|
|
|
|
Поля класу: |
|
|
|
|
|
|
|
|
|
|
|
|
|
прізвище абонента; |
|
|
|
|
5 |
10 |
15 |
20 |
25 |
30 |
Subscriber |
|
масив 10 |
елементів |
типу класу |
Book, |
|
|
книжок; |
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
кількість |
заповнених |
елементів |
масиву |
|
|
|
|
|
|
|
|
|
книжок. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15
Література
1.Глушаков С. В., Коваль А. В., Смирнов С. В. Язык программирования С++: Учебный курс.
—M.: OOO «Издательство АСТ», 2001. — 500 с.
2.Дейтел Харви, Дейтел Пол. Как программировать на С++.
3.Шилдт Герберт. С++: руководство для начинающих. 2-е издание. Пер. с англ. — М.: Издательский дом "Вильямс", 2005. — 672 с.
16