Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти науки молоді та спорту
Національний університет «Львівська політехніка»
Лабораторна робота № 4
З Основ об’єктно-орієнтованого програмування
На тему
Створення власних класів та об’єктів
Мета: засвоїти основні поняття об’єктно-орієнтованого програмування, навчитися створювати свої об’єкти і будувати програми, засновані на об’єктному підході.
Завдання: Описати клас для векторів, що задаються координатами кінців у тривимірному просторі. Забезпечити операції додавання та віднімання векторів з одержанням нового вектора (суми чи різниці), обчислення скалярного добутку двох векторів, довжини вектора, косинуса кута між векторами.
Код програми:
unit MyVec;
interface
uses classes, Sysutils, Math;
type
TVector = class (TObject)
private
public
Fx:Integer;
Fy:Integer;
Fz:Integer;
constructor Create;
function AbsVec():Extended;
procedure Sum(V1:TVector);
procedure Diff(V1:TVector);
function Scal(V1:TVector):Int64;
function Len(V1:TVector):Extended;
function Ang(V1:TVector):Extended;
end;
implementation
constructor TVector.Create;
begin
Fx:=0;
Fy:=0;
Fz:=0;
end;
function TVector.AbsVec():Extended;
begin
Result:=Sqrt(Fx*Fx+Fy*Fy+Fz*Fz);
end;
procedure TVector.Sum(V1:TVector);
begin
Fx:=V1.Fx+Fx;
Fy:=V1.Fy+Fy;
Fz:=V1.Fz+Fz;
end;
procedure TVector.Diff(V1:TVector);
begin
Fx:=Fx-V1.Fx;
Fy:=Fy-V1.Fy;
Fz:=Fz-V1.Fz;
end;
function TVector.Scal(V1:TVector):int64;
begin
Result:=(Fx*V1.Fx+Fy*V1.Fy+Fz*V1.Fz);
end;
function TVector.Len(V1:TVector):Extended;
begin
Result:=Sqrt(Sqr(Fx-V1.Fx)+Sqr(Fy-V1.Fy)+Sqr(Fz-V1.fz));
end;
function TVector.Ang(V1:TVector):Extended;
begin
Result:=(Fx*V1.Fx+Fy*V1.Fy+Fz*V1.Fz)/ (Sqrt(Sqr(Fx)+Sqr(Fy)+Sqr(Fz))* Sqrt(Sqr(V1.Fx)+Sqr(V1.Fy)+Sqr(V1.Fz)));
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MyVec;
type
TForm1 = class(TForm)
lbl1: TLabel;
lbl2: TLabel;
lbl3: TLabel;
edt1: TEdit;
edt2: TEdit;
lbl4: TLabel;
lbl5: TLabel;
lbl6: TLabel;
edt3: TEdit;
edt4: TEdit;
lbl7: TLabel;
lbl8: TLabel;
edt5: TEdit;
edt6: TEdit;
lbl9: TLabel;
edt7: TEdit;
btn1: TButton;
btn2: TButton;
btn3: TButton;
btn4: TButton;
btn5: TButton;
lbl10: TLabel;
lbl11: TLabel;
lbl12: TLabel;
lbl13: TLabel;
edt8: TEdit;
edt9: TEdit;
edt10: TEdit;
//procedure FormCreate(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
procedure btn5Click(Sender: TObject);
procedure btn4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{
procedure TForm1.btn1Click(Sender: TObject);
var V1,V2:TVector;
begin
V1:= TVector.Create;
V2:= TVector.Create;
V1.Fx:=StrToInt(edt1.Text);
V1.Fy:=StrToInt(edt2.Text);
V1.Fz:=StrToInt(edt5.Text);
V2.Fx:=StrToInt(edt3.Text);
V2.Fy:=StrToInt(edt4.Text);
V2.Fz:=StrToInt(edt6.Text);
edt7.Text:=IntToStr(0);
V1.Sum(V2);
edt8.Text:=IntToStr(V1.Fx);
edt9.Text:=IntToStr(V1.Fy);
edt10.Text:=IntToStr(V1.Fz);
end;
procedure TForm1.btn2Click(Sender: TObject);
var V1,V2:TVector;
begin
V1:= TVector.Create;
V2:= TVector.Create;
V1.Fx:=StrToInt(edt1.Text);
V1.Fy:=StrToInt(edt2.Text);
V1.Fz:=StrToInt(edt5.Text);
V2.Fx:=StrToInt(edt3.Text);
V2.Fy:=StrToInt(edt4.Text);
V2.Fz:=StrToInt(edt6.Text);
edt7.Text:=IntToStr(0);
V1.Diff(V2);
edt8.Text:=IntToStr(V1.Fx);
edt9.Text:=IntToStr(V1.Fy);
edt10.Text:=IntToStr(V1.Fz);
end;
procedure TForm1.btn3Click(Sender: TObject);
var V1,V2:TVector;
begin
V1:= TVector.Create;
V2:= TVector.Create;
V1.Fx:=StrToInt(edt1.Text);
V1.Fy:=StrToInt(edt2.Text);
V1.Fz:=StrToInt(edt5.Text);
V2.Fx:=StrToInt(edt3.Text);
V2.Fy:=StrToInt(edt4.Text);
V2.Fz:=StrToInt(edt6.Text);
edt8.Text:=IntToStr(0);
edt9.Text:=IntToStr(0);
edt10.Text:=IntToStr(0);
edt7.Text:=IntToStr(V1.Scal(V2));
end;
procedure TForm1.btn5Click(Sender: TObject);
var V1,V2:TVector;
begin
V1:= TVector.Create;
V2:= TVector.Create;
V1.Fx:=StrToInt(edt1.Text);
V1.Fy:=StrToInt(edt2.Text);
V1.Fz:=StrToInt(edt5.Text);
V2.Fx:=StrToInt(edt3.Text);
V2.Fy:=StrToInt(edt4.Text);
V2.Fz:=StrToInt(edt6.Text);
edt8.Text:=IntToStr(0);
edt9.Text:=IntToStr(0);
edt10.Text:=IntToStr(0);
edt7.Text:=FloatToStr(V1.Ang(V2));
end;
procedure TForm1.btn4Click(Sender: TObject);
var V1,V2:TVector;
begin
V1:= TVector.Create;
V2:= TVector.Create;
V1.Fx:=StrToInt(edt1.Text);
V1.Fy:=StrToInt(edt2.Text);
V1.Fz:=StrToInt(edt5.Text);
V2.Fx:=StrToInt(edt3.Text);
V2.Fy:=StrToInt(edt4.Text);
V2.Fz:=StrToInt(edt6.Text);
edt8.Text:=IntToStr(0);
edt9.Text:=IntToStr(0);
edt10.Text:=IntToStr(0);
edt7.Text:=FloatToStr(V1.Len(V2));
end;
end.
Результат Роботи:
Висновок: На даній лабораторній роботі я освоїв роботу з класами, та написав програму яка демонструє роботу з трьохвимірними векторами.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!