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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Національний університет «Львівська політехніка» Кафедра АСУ Звіт до лабораторної роботи №5 з курсу “Об'єктно орієнтоване програмування” Варіант 8 Бунь І.П. Тема Створення власних класів та об'єктів Мета роботи: Засвоїти основні поняття об'єктно-орієнтованого програмування, навчитися створювати свої об'єкти і будувати програми, засновані на об'єктному підході. Порядок роботи: Створити проект для виконання індивідуального завдання. Оформити звіт для захисту лабораторної роботи за зразком назва роботи мета роботи порядок роботи короткі теоретичні відомості алгоритм розв’язку задачі тексти відповідних модулів проекту аналіз отриманих результатів та висновки Завдання. Написати програму, яка демонструє роботу з класами та об'єктами. Програма повинна містити меню, яке дозволяє виконати перевірку всіх методів класу. Описати клас поліномів від однієї змінної, що задаються степенем полінома та масивом коефіцієнтів. Передбачити методи для обчислення значення полінома для заданого аргументу, операції додавання, віднімання та множення поліномів з одержанням нового об'єкта-полінома, вивід на екран опису полінома. Тексти програм: //================================================================================// // Юніт 1 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,Polynom, StdCtrls, ExtCtrls; type TTestClass = class(TForm) AStep: TEdit; Label1: TLabel; ACoef: TEdit; Label2: TLabel; ACreate: TButton; AResult: TLabel; Label4: TLabel; Label5: TLabel; BResult: TLabel; BStep: TEdit; BCoef: TEdit; BCreate: TButton; Operations: TComboBox; DoCulc: TButton; ResultofCulc: TLabel; Label3: TLabel; Shape1: TShape; Label6: TLabel; Shape2: TShape; Shape3: TShape; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; AXequal: TEdit; Label11: TLabel; Label12: TLabel; BXequal: TEdit; Label13: TLabel; ThenB: TLabel; ThenA: TLabel; procedure FormCreate(Sender: TObject); procedure StepKeyPress(Sender: TObject; var Key: Char); procedure CoefKeyPress(Sender: TObject; var Key: Char); procedure CreateClick(Sender: TObject); procedure DoCulcClick(Sender: TObject); procedure DataChange(Sender: TObject); procedure equalChange(Sender: TObject); procedure equalKeyPress(Sender: TObject; var Key: Char); procedure OperationsChange(Sender: TObject); private { Private declarations } public function GetCoef(Str:string;_from:word;_to:word):string; { Public declarations } end; var TestClass: TTestClass; A:TPolynom; B:Tpolynom; AandBisInit:byte; implementation {$R *.dfm} procedure TTestClass.FormCreate(Sender: TObject); begin AandBisInit:=0; DoCulc.Enabled:=false; Operations.Enabled:=false; AXequal.Enabled:=false; BXequal.Enabled:=false; A:=TPolynom.Create; B:=TPolynom.Create; AResult.Caption:='Ще ні'; BResult.Caption:='Ще ні'; end; procedure TTestClass.StepKeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['1'..'9',#8]) then key:=#0; end; procedure TTestClass.CoefKeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9',',','-',#8]) then key:=#0; case key of '-':begin if (Length((Sender as TEdit).Text)>0) then if not ((Sender as TEdit).Text[Length((Sender as TEdit).Text)]=',')then key:=#0; end; ',':begin if (Length ((Sender as TEdit).Text)=0) then Key:=#0 else if not((Sender as TEdit).Text[Length((Sender as TEdit).Text)] in ['0'..'9']) then key:=#0; end; end; end; procedure TTestClass.CreateClick(Sender: TObject); var i:integer; count:integer; cursor:integer; endofdigit:integer; pPolynom:^TPolynom; pCoefEdit:^TEdit; pResultEdit:^TLabel; pStepEdit:^TEdit; pXEdit:^TEdit; begin if(Sender as TButton).tag=0 then begin pPolynom:=@A; pStepEdit:=@AStep; pCoefEdit:=@ACoef; pResultEdit:=@AResult; pXEdit:=@AXequal; end else begin pPolynom:=@B; pStepEdit:=@BStep; pCoefEdit:=@BCoef; pResultEdit:=@BResult; pXEdit:=@BXequal; end; // if then Application.MessageBox('Ви не ввели ви не ввили коефыцыэнти поліному!!!','Помилка') if (Length(pStepEdit.Text)=0) or (Length(pCoefEdit.Text)=0) then Application.MessageBox('Ви не ввели всі параметри'+#13+'для створення поліному!!!','Помилка') else begin count:=0; for i:=1 to Length(pCoefEdit.Text) do if pCoefEdit.Text[i]=',' then count:=count+1; if pCoefEdit.Text[Length(pCoefEdit.Text)] in ['0'..'9'] then count:=count+1; if count=0 then Application.MessageBox('Ви не ввели коефіціэнти','Помилка') else if not (pCoefEdit.Text[Length(pCoefEdit.Text)] in['0'..'9']) then Application.MessageBox('Помилка у останньому коефіцієнті','Помилка') else if count>StrToInt(pStepEdit.Text) then Application.MessageBox('Ви ввели забагато коефіціэнтів','Помилка') else if count<StrToInt(pStepEdit.Text) then Application.MessageBox('Ви ввели недостатньо коефіціэнтів','Помилка') else begin pPolynom.SetStep(StrtoInt(pStepEdit.Text)); cursor:=1; endofdigit:=1; for i:=0 to pPolynom.GetStep-1 do begin while ((pCoefEdit.Text[endofdigit]<>',')and (pCoefEdit.Text[endofdigit]<>#0)) do endofdigit:=endofdigit+1; pPolynom^[i]:=Strtoint(GetCoef(pCoefEdit.Text,cursor,endofdigit)); cursor:=endofdigit+1; endofdigit:=cursor; end; pResultEdit.Caption:=' '+pPolynom.GetPolyStr; AandBisInit:=AandBisInit or((Sender as TButton).Tag+1); if(AandBisInit=3) then begin DoCulc.Enabled:=true; Operations.Enabled:=true; end; pXEdit.Enabled:=true; pXEdit.Text:=''; (Sender as TButton).Enabled:=false; end; end; end; function TTestClass.GetCoef(Str: string; _from, _to: word): string; var i:integer; begin SetLength(result,_to-_from); for i:=1 to _to-_from do result[i]:=Str[i+_from-1]; end; procedure TTestClass.DoCulcClick(Sender: TObject); begin if AandBisInit=3 then begin case Operations.ItemIndex of -1: Application.MessageBox('Ви не обрали операцію','Помилка'); 0: ResultofCulc.Caption:='A+B= '+(A.Add(B)).GetPolyStr; 1: ResultofCulc.Caption:='A-B= '+(A.Sub(B)).GetPolyStr; 2: ResultofCulc.Caption:='A*B= '+(A.Mul(B)).GetPolyStr; end; end end; procedure TTestClass.DataChange(Sender: TObject); begin DoCulc.Enabled:=false; AandBisInit:=AandBisInit and ((Sender as TEdit).Tag); if ((Sender as TEdit).Tag)=2 then begin ACreate.Enabled:=true; AXequal.Enabled:=false; AXequal.Text:='Lock'; ThenA.Caption:=''; AResult.Caption:='У процесі створення'; end else begin BCreate.Enabled:=true; BXequal.Enabled:=false; BXequal.Text:='Lock'; ThenB.Caption:=''; BResult.Caption:='У процесі створення'; end; end; procedure TTestClass.equalChange(Sender: TObject); begin if (Length((Sender as TEdit).Text)>0) and ((Sender as TEdit).Text<>'-')and(Sender as TEdit).Enabled then if (Sender as TEdit).Tag=0 then ThenA.Caption:=IntToStr(A.Culc(StrtoInt((Sender as TEdit).Text))) else ThenB.Caption:=IntToStr(B.Culc(StrtoInt((Sender as TEdit).Text))); end; procedure TTestClass.equalKeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9',#8,'-']) then key:=#0; if (Length((Sender as TEdit).Text)>0) and (Key='-') then key:=#0; end; procedure TTestClass.OperationsChange(Sender: TObject); begin ResultofCulc.Caption:=''; end; end. Скріншоти роботи програми   Висновок: На даній лабораторній роботі я практикував створення власних класів у середовищі візуального програмування Делфі . Освоїв синтаксис оголошення та ініціалізації обєктів типу створеного класу, оголошенню методів та полів класу.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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