МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Івано-Франківський національний технічний університет нафти і газу
Кафедра КСМ
ЛАБОРАТОРНА РОБОТА №6
КЛАСИ
Виконав:
студент групи ІСТ-20-1
Романюк А. М.
Перевірив:
Гарасимів Т. Г.
м. Івано-Франківськ
2024 рік
Мета роботи: навчитися створювати та працювати з класами.
Хід роботи
1 Завдання. 1. Загальне завдання. Визначити користувальницький клас в
відповідно до варіанта завдання. Додати в клас наступні конструктори: без
параметрів, з параметрами, копіювання. Визначити в класі деструктор,
компоненти-функції для перегляду і установки полів даних. Написати
демонстраційну програму, в якій створюються і руйнуються об'єкти
користувацького класу і кожен виклик конструктора і деструктора
супроводжується видачею відповідного повідомлення (який об'єкт який
конструктор або деструктор викликав). При роботі з класами користуватися
ClassWizard.
Індивідуальне завдання. Створити клас одновимірний масив цілих чисел
(вектор) з полями - кількість фактичних елементів, масив (динамічний).
Функції-члени: звернення до окремого елементу масиву, виведення масиву на
екран, поелементного додавання і віднімання зі скаляром, виведення елемента
за заданим індексом.
2. Загальне завдання. Визначте ієрархію класів (відповідно до варіанта-
виділити базовий і похідні). Реалізувати класи (самостійно задати члени-дані та
методи класу). Написати демонстраційну програму, в якій створюються об'єкти
різних класів. Визначення класів (* .h), їх реалізацію (* .cpp), демонстраційну
програму (* .cpp) помістити в окремі модулі. Нижче наведено перелік класів.
Індивідуальне завдання. Класи - республіка (вид, уряд), монархія (вид, ім'я
монарха), королівство (король), держава (назва, грошова одиниця, символіка).
1.1.1 Текст програми
using System;
public class Vector
{
private int[] array;
private int actualSize;
public Vector()
{
[Link]("Default constructor called");
[Link] = new int[10];
[Link] = 0;
}
public Vector(int size)
{
[Link]("Parameterized constructor called");
[Link] = new int[size];
[Link] = 0;
}
public Vector(Vector v)
{
[Link]("Copy constructor called");
[Link] = new int[[Link]];
[Link]([Link], [Link], [Link]);
[Link] = [Link];
}
~Vector()
{
[Link]("Destructor called");
}
public void AddElement(int element)
{
if (actualSize < [Link])
{
array[actualSize] = element;
actualSize++;
}
else
{
[Link]("Array is full");
}
}
public void DisplayArray()
{
for (int i = 0; i < actualSize; i++)
{
[Link](array[i] + " ");
}
[Link]();
}
public void AddScalar(int scalar)
{
for (int i = 0; i < actualSize; i++)
{
array[i] += scalar;
}
}
public void SubtractScalar(int scalar)
{
for (int i = 0; i < actualSize; i++)
{
array[i] -= scalar;
}
}
public int GetElement(int index)
{
if (index >= 0 && index < actualSize)
{
return array[index];
}
else
{
[Link]("Invalid index");
return -1;
}
}
}
class Program
{
static void Main(string[] args)
{
Vector v1 = new Vector();
[Link](5);
[Link](10);
[Link]();
Vector v2 = new Vector(5);
[Link](15);
[Link](20);
[Link]();
Vector v3 = new Vector(v2);
[Link]();
[Link](2);
[Link]();
[Link](2);
[Link]();
[Link]([Link](1));
}
}
1.1.2 Результат виконання.
Рисунок 1 – Результат виконання
1.2.1 Текст програми
using System;
public abstract class State
{
public string Name { get; set; }
public string Currency { get; set; }
public string Symbol { get; set; }
public State(string name, string currency, string symbol)
{
Name = name;
Currency = currency;
Symbol = symbol;
}
public abstract void DisplayState();
}
public class Republic : State
{
public string Type { get; set; }
public string Government { get; set; }
public Republic(string name, string currency, string
symbol, string type, string government)
: base(name, currency, symbol)
{
Type = type;
Government = government;
}
public override void DisplayState()
{
[Link]($"Republic: {Name}, Currency:
{Currency}, Symbol: {Symbol}, Type: {Type}, Government:
{Government}");
}
}
public class Monarchy : State
{
public string Type { get; set; }
public string Monarch { get; set; }
public Monarchy(string name, string currency, string
symbol, string type, string monarch)
: base(name, currency, symbol)
{
Type = type;
Monarch = monarch;
}
public override void DisplayState()
{
[Link]($"Monarchy: {Name}, Currency:
{Currency}, Symbol: {Symbol}, Type: {Type}, Monarch: {Monarch}");
}
}
public class Kingdom : Monarchy
{
public string King { get; set; }
public Kingdom(string name, string currency, string
symbol, string type, string monarch, string king)
: base(name, currency, symbol, type, monarch)
{
King = king;
}
public override void DisplayState()
{
[Link]($"Kingdom: {Name}, Currency:
{Currency}, Symbol: {Symbol}, Type: {Type}, Monarch: {Monarch},
King: {King}");
}
}
class Program
{
static void Main(string[] args)
{
Republic republic = new Republic("Ukraine", "UAH",
"🇺🇦", "Unitary", "Presidential");
[Link]();
Monarchy monarchy = new Monarchy("United Kingdom",
"GBP", "🇬🇧", "Unitary", "Queen Elizabeth II");
[Link]();
Kingdom kingdom = new Kingdom("Spain", "EUR", "🇪🇸",
"Unitary", "King Felipe VI", "King Felipe VI");
[Link]();
}}
1.2.2 Результат виконання.
Рисунок 2 – Результат виконання
Висновки. У ході виконання лабораторної роботи було розглянуто
поняття класів в мові програмування С#. Було створено дві програми:
1-ша: створює клас Vector, який представляє одновимірний масив цілих
чисел. Він має конструктори за замовчуванням, з параметрами та копіювання, а
також деструктор. Клас також має методи для додавання елементів до масиву,
відображення масиву, додавання та віднімання скаляра від кожного елемента
масиву, а також отримання елемента за заданим індексом. Кожен виклик
конструктора або деструктора супроводжується виведенням відповідного
повідомлення.
2-га: створює ієрархію класів для різних типів
держав: State, Republic, Monarchy, та Kingdom. Кожен клас має відповідні поля
даних та методи. В демонстраційній програмі створюються об’єкти кожного
класу та виводяться їх деталі.