Тема: Створення класів, робота з масивами об’єктів.
Мета: Засвоїти основні поняття об’єктно-орієнтованого програмування. Сформувати вміння та навички створювати свої об’єкти і будувати програми, основані на об’єктному підході.
Завдання:
Застосувати знання з програмування та додаткову літературу вивчити основні принципи створення класів.
Виконати індивідуальне завдання відносно до номеру варіанта, застосувавши мову С++. Розробити класи для описаних нижче об’єктів. Включити в клас методи Set, Get і Show.
Оформити звіт.
Зробити висновки
Варіант: Клас Student з даними:
ПІБ
Факультет
Адреса
Телефон
Дата народження
Теоретичні відомості
Клас являє собою абстрактний тип даних, що визначається користувачем і являє собою модель реального об’єкта у вигляді даних та функцій для роботи з ними.
Оголошення класу має таку форму:
class сім’я класу> : список класів-батьків>
{
public: // доступно всем
<дані, методи, властивості, події>
protected: // доступно только потомкам
<дані, методи, властивості, події>
private: // доступно только в классе
<дані, методи, властивості, події>
}
Об’єкт — це змінна типу клас. Дані класу називаються полями, а функції —методами, що призначені для обробки полів. Крім методів, тип клас може мати спеціальні функції — конструктори і деструктори.
Однією з найцікавіших властивостей об’єктно-орієнтованого програмування (ООП) є можливість успадкування даних і функцій. У випадку, коли один клас успадковує інший, базовий клас називають батьківським, а той, що успадковує, — похідним або нащадком.
Розміщення описів змінних і функції з їх обробки, тобто полів та методів в одному класі називається інкапсуляцією.
Класи в С++ мають три різних рівні доступу до своїх елементів, тобто даних (полів) і функцій (методів):
закриті елементи (private);
захищені елементи (protected);
відкриті елементи (public).
До даних у закритому розділі (private) мають доступ тільки функції-елементи свого класу. Класам-нащадкам забороняється доступ до закритих даних своїх базових (батьківських) класів. За замовчуванням усі дані-члени класу мають атрибут private(закритий).
До даних у захищеному розділі (protected) мають доступ функції свого класу і функції класів-нащадків.
У свою чергу до даних відкритого розділу (public) можуть звертатися будь-які функції.
Існують такі правила створення розділів класу:
розділи можуть з’являтися в будь-якому порядку і декілька разів;
якщо не оголошено жодного розділу, компілятор за замовчуванням оголошує усі елементи закритими;
розміщати дані-елементи класу у відкритому розділі можна тільки за необхідності. Дані-елементи класу звичайно розміщують у закритому, або захищеному розділі, щоб до них мали доступ функції-члени класу, а також функції класів-нащадків;
для зміни значень даних (полів) слід використовувати функції-члени класу;
клас може мати декілька конструкторів, але тільки один деструктор.
Код програми
#include "pch.h"
#include <iostream>
#include <string>
using namespace std;
class Student {
string a, b, c, d, e, f;
public:
Student(string PIB, string Fakultet, string Kurs, string Adress, string Phone, string DataNarodschennya)
{
a = PIB;
b = Fakultet;
c = Adress;
d = Phone;
e = DataNarodschennya;
f = Kurs;
}
Student()
{
a = b = c = d = e = f = "Empty";
}
void Show(int i)
{
if (i)
cout << "PIB\t\tFakultet\tAdress\t\t\tPhone number\tData nar.\tKurs\n";
cout << a << '\t';
if (a.length() < 8)
cout << '\t';
cout << b << '\t';
if (b.length() < 8)
cout << '\t';
cout << c << '\t';
if (c.length() < 8)
cout << '\t';
cout << d << '\t';
if (d.length() < 8)
cout << '\t';
cout << e << '\t';
if (d.length() < 8)
cout << '\t';
cout << f << '\t';
}
string Get(string z)
{
if (z == "PIB")
return a;
else if (z == "Fakultet")
return b;
else if (z == "Adress")
return c;
else if (z == "Phone")
return d;
else if (z == "Datanarodschennya")
return e;
else if (z == "Kurs")
return f;
else
return "NaN";
}
void Set(string PIB, string Fakultet, string Adress, string Phone, string Datanarodschennya, string Kurs)
{
a = PIB;
b = Fakultet;
c = Adress;
d = Phone;
e = Datanarodschennya;
f = Kurs;
}
};
int main()
{
Student a("a", "b", "c", "d", "e", "f");
cout << "Student a:\n\n";
a.Show(1);
cout << endl;
a.Set("[ім’я автора приховано]", "PM", "Rivne gurt 5 k24", "+380689678921", "26.01.1999", "4");
cout << "New student a:\n\n";
a.Show(1);
cout << "\nStudent b:\n\n";
Student b;
b.Show(1);
b.Set("[ім’я автора приховано]", "PM", "Rivne gurt 5 k24", "+380666895478", "30.01.1999", "4");
cout << "\nNew student b:\n\n";
b.Show(1);
cout << "\nstudent a's Fakultet i PIB: " << a.Get("Fakultet") + ' ' + a.Get("PIB") << endl;
}}
Рис.1 Результат роботи програми
Висновок: Виконуючи дану лабораторну роботу я засвоїв основні поняття об’єктно-орієнтованого програмування. Сформував вміння та навички створювати свої об’єкти і будувати програми, основані на об’єктному підході.