Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Звіт
Предмет:
Об’єктно-орієнтоване програмування
Група:
КН

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Національний університет «Львівська політехніка» Кафедра АСУ Звіт до лабораторної роботи №5 з курсу “Об'єктно орієнтоване програмування” Варіант 11 Бунь І.П. Тема Створення власних класів та об'єктів Мета роботи: Засвоїти основні поняття об'єктно-орієнтованого програмування, навчитися створювати свої об'єкти і будувати програми, засновані на об'єктному підході. Порядок роботи: Створити проект для виконання індивідуального завдання. Оформити звіт для захисту лабораторної роботи за зразком назва роботи мета роботи порядок роботи короткі теоретичні відомості алгоритм розв’язку задачі тексти відповідних модулів проекту аналіз отриманих результатів та висновки Завдання. Написати програму, яка демонструє роботу з класами та об'єктами. Програма повинна містити меню, яке дозволяє виконати перевірку всіх методів класу. 11. Описати клас для представлення раціональних дробів. Забезпечити виконання операцій додавання, віднімання множення та ділення таких чисел. Передбачите перевірку ділення на нуль. Тексти програм: //================================================================================// // Юніт 1 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,Unit2; type TForm1 = class(TForm) Ach: TEdit; Azn: TEdit; Bch: TEdit; Bzn: TEdit; Oper: TComboBox; ResCh: TEdit; ResZn: TEdit; procedure AchKeyPress(Sender: TObject; var Key: Char); procedure AznChange(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public A:TDrib; B:TDrib; procedure StartCalc; { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.AchKeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9','-',#13,#8]) then Key:=#0 else if (Key='-') and (Length((Sender as Tedit).Text)>0) then Key:=#0; end; procedure TForm1.AznChange(Sender: TObject); begin StartCalc; end; procedure TForm1.StartCalc; begin if (Length(Ach.Text)>0) and (Length(Azn.Text)>0) and (Length(Bch.Text)>0) and (Length(Bzn.Text)>0) and (Ach.Text<>'-' ) and (Azn.Text<>'-' ) and (Bch.Text<>'-' ) and (Bzn.Text<>'-' ) then begin A._SetCh(StrtoInt(Ach.Text)); A._SetZn(StrtoInt(Azn.Text)); A._Sprostutu; B._SetCh(StrtoInt(Bch.Text)); B._SetZn(StrtoInt(Bzn.Text)); B._Sprostutu; case Oper.ItemIndex of 0: Begin A._Add(B); A._Sprostutu; ResCh.Text:=InttoStr(A._GetCh()); ResZn.Text:=InttoStr(A._GetZn()); end; 1: begin A._Sub(B); A._Sprostutu; ResCh.Text:=InttoStr(A._GetCh()); ResZn.Text:=InttoStr(A._GetZn()); end; 2: begin A._Mul(B); A._Sprostutu; ResCh.Text:=InttoStr(A._GetCh()); ResZn.Text:=InttoStr(A._GetZn()); end; 3: begin A._Div(B); A._Sprostutu; ResCh.Text:=InttoStr(A._GetCh()); ResZn.Text:=InttoStr(A._GetZn()); end; end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin A:=TDrib.Create; B:=TDrib.Create; end; end. //==================================================================================== // Юніт 2 unit Unit2; interface type TDrib=class private Ch:integer; Zn:integer; public constructor Create; procedure _Sprostutu; procedure _Set(NewCh,NewZn:integer); procedure _SetCh(NewCh:integer); procedure _SetZn(NewZn:integer); procedure _Add(B:TDrib); procedure _Sub(B:TDrib); procedure _Mul(B:TDrib); procedure _Div(B:TDrib); function _GetCh():integer; function _GetZn():integer; function _Max(a:integer;b:integer):integer; end; implementation { TDrib } procedure TDrib._Add(B: TDrib); var c,a,buf:integer; begin if Self.Zn=B.Zn then Self.Ch:=Self.Ch+B.Ch else begin a:=Self.Zn; buf:=B.Zn; while buf <> 0 do begin c := a mod buf; a := buf; buf:= c; end; buf:=(Self.Zn*B.Zn)div a; Self.Ch:= (buf div Self.Zn)*Self.Ch; B.Ch:= (buf div B.Zn)*B.Ch; Self.Zn:=buf; B.Zn:=buf; Self._Add(B); end; end; procedure TDrib._Div(B: TDrib); var temp:integer; begin temp:=B.Zn; B.Zn:=B.Ch; B.Ch:=temp; Self._Mul(B); end; procedure TDrib._Mul(B: TDrib); begin Self.Ch:=Self.Ch*B.Ch; Self.Zn:=Self.Zn*B.Zn; end; procedure TDrib._Sprostutu; var c,a,b:integer; begin if Zn<0 then begin Zn:=Zn*-1; Ch:=Ch*-1; end; a:=abs(Ch); b:=abs(Zn); while b <> 0 do begin c := a mod b; a := b; b:=c; end; Ch:=Ch div a; Zn:=Zn div a; end; procedure TDrib._Sub(B: TDrib); var c,a,buf:integer; begin if Self.Zn=B.Zn then Self.Ch:=Self.Ch-B.Ch else begin a:=abs(Self.Zn); buf:=abs(B.Zn); while buf <> 0 do begin c := a mod buf; a := buf; buf:= c; end; buf:=(Self.Zn*B.Zn)div a; Self.Ch:= (buf div Self.Zn)*Self.Ch; B.Ch:= (buf div B.Zn)*B.Ch; Self.Zn:=buf; B.Zn:=buf; Self._Sub(B); end; end; constructor TDrib.Create; begin end; procedure TDrib._Set(NewCh,NewZn: integer); begin Self.Ch:=NewCh; Self.Zn:=NewZn; end; procedure TDrib._SetCh(NewCh: integer); begin Self.Ch:=NewCh; end; procedure TDrib._SetZn(NewZn: integer); begin Self.Zn:=NewZn; end; function TDrib._GetCh: integer; begin result:=Self.Ch; end; function TDrib._GetZn: integer; begin result:=Self.Zn; end; function TDrib._Max(a, b: integer): integer; begin if abs(a)>abs(b) then result:=abs(a) else result:=abs(b); end; end. Скріншоти роботи програми Висновок: На даній лабораторній роботі я практикував створення власних класів у середовищі візуального програмування Делфі . Освоїв синтаксис оголошення та ініціалізації обєктів типу створеного класу, оголошенню методів та полів класу.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!