You are on page 1of 5

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ

ОДЕСЬКИЙ НАЦІОНАЛЬНИЙ ПОЛІТЕХНІЧНИЙ УНІВЕРСИТЕТ


ІНСТИТУТ КОМП’ЮТЕРНИХ СИСТЕМ
КАФЕДРА СИСТЕМНОГО ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

Лабораторна робота № 1
з дисципліни: “Об’єктно-орієнтоване програмування”
на тему:
«Класи у мові C++»

Виконав:
Студент групи АС-191:
Кльопа Микола

Викладач:
Писаренко К. О.

Одеса
2020
Завдання
Варіант 8
Створити клас у відповідності з завданням. Передбачити два конструктора ( перший приймає
значення даних в діалоговому режимі, другий - через параметри), методи зміни та отримання
даних, що представляють властивості приладу. Створити кілька об'єктів класу.
Продемонструвати роботу з об'єктами.

№ варіанта Характеристики прилада

8 1,10,11

1. Найменування приладу.
10.Замовник (організація купує продукцію заводу). Є декілька замовників. Кожен з
них характеризується:
- найменуванням;
- адресою;
- кількістю замовлених приладів.
11. Стан. Може приймати значення: увімкнено, вимкнено, справний, несправний.

Програма
#include <iostream>
#include <vector>
using namespace std;

//1, 10, 11

class zakazchik{
protected:
char *name;
char *adress;
int amount;
public:
zakazchik(){
cout << "Input zakazchik name : ";
name = new char[50];
cin >> name;
cout << "Input zakazchik adress : ";
adress = new char[50];
cin >> adress;
cout << "Input amount of devices for this zakazchik : ";
cin >> amount;
}
zakazchik(char* n, char* ad, int amount){
this->name = new char[strlen(n) + 1];
strcpy(this->name, n);
this->adress = new char[strlen(ad) + 1];
strcpy(this->adress, ad);
this->amount = amount;
}

void show(){
cout << "Name : " << this->name << "\nAdress : " << this->adress <<
"\nAmount of devices : " << this->amount << "\n";
}
};

class pribor{
protected:
char* name;
vector<zakazchik> arr;
bool work;
public :
pribor(){
cout << "Input device name : ";
name = new char[20];
cin >> name;
//constructor
int amount;
int i = 0;
cout << "Input amount of zakazchiks : ";
cin >> amount;
while(i < amount){
cout << i+1 << ")";
zakazchik zak = *new zakazchik();
this->arr.push_back(zak);
i++;
}
cout << "Is device working(1 or 0) : ";
cin >> work;
}

void changeZak(zakazchik newzak, int index){


//changes the zakazchik on that position
int ind = index - 1;
this->arr[ind] = newzak;
}

void changeWorks(bool works){


//changes whether the device is working
this->work = works;
}

void changeName(char* n){


//changes the name of the device
this->name = new char[strlen(n) + 1];
strcpy(this->name, n);
}

bool returnWorks(){
//receiving whether the device is working
return this->work;
}

char* returnName(){
//receiving the name of the device
return this->name;
}

zakazchik returnZakazchiks(int index){


//receiving all of the zakazchiks;
return this->arr[index];
}

void show(){
//show
cout << "Device : " << this->name << "\nZakazchiki : \n";
for(int i = 0; i < arr.size(); i++){
cout << i + 1 << ")\n";
arr[i].show();
}
if(this->work){
cout << "Device is working";
}
else{
cout << "Device doesnt work";
}
};

pribor(char* n, bool works, vector<zakazchik> arr){


this->name = new char[strlen(n) + 1];
strcpy(this->name, n);
this->work = works;
this->arr = arr;
//constructor
}

~pribor(){
cout << "\n\n(Destructor pribor)\n";
delete[] name;
}
};

int main() {
cout << "Default constructor\n";
pribor* dev = new pribor();

cout << "\nShowing the device\n\n";


dev->show();

cout << "Custom constructor\n";


pribor* dev1 = new pribor("Holodilnik", 0, {*new zakazchik("Serhiy", "North 2",
2)});

cout << "\nShowing the device\n\n";


dev1->show();

cout << "\nChanging and showing whether the device is working\n";


dev1->changeWorks(true);
cout << dev1->returnWorks();

cout << "\nChanging and showing device name\n";


dev1->changeName("Microvawe");
cout << dev1->returnName();

cout << "\nChanging and showing the first zakazchik of this device\n";
dev1->changeZak(*new zakazchik("Aleksiy", "West 2",5), 1);
zakazchik zak = dev1->returnZakazchiks(0);
zak.show();

delete dev;

delete dev1;
}
Вивід задачі

Висновок
У ході виконання лабораторної роботи я навчився писати код на мові
програмування С++ використовуючи об'єктно орієнтований підхід, а також
придбав навички практичної роботи з класами.

You might also like