Ім'я файлу: Ткач В.Лаб 4.docx
Розширення: docx
Розмір: 6кб.
Дата: 14.05.2022
скачати

Міністерство освіти і науки України

Львівський національний університет імені Івана Франка

Факультет електроніки та комп’ютерних технологій

Кафедра радіофізики та комп’ютерних технологій

ЛАБОРАТОРНА РОБОТА 4

з курсу “Об’єктно орієнтоване програмування”

1-й проект ООП: Sphere”

Виконав:

Cт. ФеІ-11

Ткач В.М
Перевірив:

ас. Шевчук В.Д.

Львів 2021



Звіт

Мета: Вивчити послідовність оголошення класу Sphere у консольному режимі роботи Delphi, оголошення

двох об’єктів MySphere і nSphere цього класу в описовому розділі головної програми, яка містить цей клас, створення цих

об’єктів у виконуваному розділі головної програми і використання методів цих об’єктів для обчислення характеристик

геометричної сфери заданого радіуса R.

ХІД РОБОТИ

1. Створюємо папку My_Sphere, запускаємо Delphi у консольному режимі його роботи File / New / Other:

2. Отримаємо вікно, у якому обираємо Console Application > OK:

3. Отримаємо наступне вікно:

4. Стираємо виділену частину тексту, який згенерувало нам середовище, і записуємо цей порожній проект у папку

My_Sphere: File / Save Project As… Одержимо таке вікно:

5. Створюємо у папці My_Sphere для класу Sphere командою File / New / Unit - Delphi окремий модуль – текстовий файл,

який, наприклад, називаємо SphereU.pas.

6. Вмістом цього текстового файлу буде модуль Unit SphereU;, який має два стандартних розділи: Interface та

Implementation.

7. У розділі Interface оголошуємо елементи класу Sphere (його поле R зі специфікатором доступу Private і

заголовки методів зі специфікатором доступу Public).

У розділі Implementation програмуємо реалізацію (оператори) усіх методів класу Sphere. Оскільки в одному модулі

можна описати декілька різних класів, то заголовки методів у розділі Implementation, спільному для усіх класів,

повинні мати складене ім’я: <Ім’я_Класу>.<Ім’я_Методу>.

Увага! При наявності в одному модулі декількох класів, необхідно використовувати посилені (Strict) специфікатори

доступу, наприклад Strict Private або Strict Protected.

8. Приєднуємо новостворений модуль до нашого проекту. Для цього, у спадному меню проекту обираємо:

9. У вікні, що відкрилося, обираємо ім’я файлу нашого модуля і натискаємо кнопку Open.

10. В описовій частині Var головної програми оголошуємо три змінні: 2 об’єкти класу Sphere і одну робочу змінну.

11. У виконуваному розділі програми створюємо два об’єкти різного радіусу, використовуючи, в одному випадку,

стандартний конструктор Create, а в іншому – власний конструктор Creat.

ПРОКОМЕНТОВАНИЙ ТЕКСТ ПРОГРАМИ

Unit SphereU;

Іnterface // описовий розділ модуля SphereU

Uses SysUtils;

Const Pi = 3.14159;

Type

Sphere = class(TObject) // початок оголошення класу Sphere

Private // специфікатор доступу

R : Real; // поле класу Sphere – її радіус

Public

// Методи класу Sphere

Constructor Create; // явно оголошений стандартний конструктор Create

Constructor Creat(x: Real); // власний конструктор із параметром x

Procedure SetRadius(newRadius : Real);

Function GetRadius : Real;

Function GetDiameter : Real;

Function GetLKola : Real;

Function GetArea : Real;

Function GetVolume : Real;

Procedure DisplayStatistics;

End; // завершення розділу оголошення класу Sphere

Implementation // реалізаційний розділ модуля SphereU

Constructor Sphere.Create; // реалізація стандартного конструктора Create

Begin

R := 1.0;

End;

Constructor Sphere.Creat (x:Real); // реалізація власного конструктора Creat

Begin

R := x;

End;

// Реалізація методів класу Sphere

Procedure Sphere.SetRadius (newRadius: Real);

Begin

if R > 0 then R := newRadius

else R := 1.0;

End;

Function Sphere.GetRadius:Real;

Begin

GetRadius := R;

End;

Function Sphere.GetDiameter:Real;

Begin

GetDiameter := 2.0 * R;

End;

Function Sphere.GetLKola: Real;

Begin

GetLKola := PI * GetDiameter;

End;

Function Sphere.GetArea: Real;

Begin

GetArea := 4.0 * PI * R * R;

End;

Function Sphere.GetVolume : Real;

Var radiusCubed: Real;

Begin

radiusCubed := R * R * R;

GetVolume := (4.0 * PI * radiusCubed) / 3.0;

End;

Procedure Sphere.DisplayStatistics;

Begin

Writeln ('Radius = ', GetRadius);

Writeln ('Diameter = ',GetDiameter);

Writeln ('LKola = ' ,GetLKola:10:5);

Writeln ('Area = ' ,GetArea:10:5);

Writeln ('Volume = ', GetVolume:10:5);

End;

End. // завершення тексту модуля SphereU

Begin

MySphere := Sphere.Create; // створюємо об’єкт MySphere, використовуючи стандартний конструктор

MySphere.DisplayStatistics; // виводимо на екран статистику

Writeln('=========='); // друкуємо розділювач

nSphere := Sphere.Creat(15.1); // створюємо об’єкт nSphere використовуючи власний конструктор

nSphere.DisplayStatistics; // виводимо на екран статистику

Writeln('**********'); // друкуємо розділювач

newRadius := 5.1; // робочій змінній присвоюємо значення радіусу кулі

MySphere.SetRadius(newRadius); // записуємо нове значення радіусу кулі у поле R класу Sphere

Writeln('N_LKola = ', 2.0 * Pi * MySphere.GetRadius);

MySphere.DisplayStatistics; // виводимо на екран статистику

Writeln;

Readln; // затримка показу результатів на екрані

end.

ТЕСТУВАННЯ ПРОГРАМИ
скачати

© Усі права захищені
написати до нас