Альбом лабораторных работ по дисциплине «Объектно-ориентированное программирование и теории разработки программного обеспечения»
Оценка 4.9

Альбом лабораторных работ по дисциплине «Объектно-ориентированное программирование и теории разработки программного обеспечения»

Оценка 4.9
docx
09.04.2022
Альбом лабораторных работ по дисциплине «Объектно-ориентированное программирование и теории разработки программного обеспечения»
Альбом ООП.docx

Министерство образования и науки Луганской народной республики

ГОУ ВПО «Луганский государственный университет имени Владимира Даля»

Стахановский инженерно-педагогический институт менеджмента

 

Кафедра информационных систем

 

 

 

 

Альбом лабораторных работ

по дисциплине «Объектно-ориентированное программирование и теории разработки программного обеспечения»

 

 

 

 

 

 

 

 

 

 

 

Луганск, Стаханов 2020

Лабораторная работа №1

Тема: Средства создания диаграмм классов в ООП

 

Ход работы

Задание 1. Создание Диаграммы классов в Microsoft Visio.

Аналогично создайте второй класс, например «Телефоны». Чтобы соединить их, перетащите фигуру «Композиция» или «Двуместная ассоциация» на изображение класса «Компьютеры». Затем второй конец связи перетащите на изображение класса «Телефоны».

         Задание 2. Создать диаграмму классов Записная книжка.

Рисунок 1.1. – Результат выполнения задания 1

Рисунок 1.2. – Результат выполнения задания 2

 

 

 

Вывод: в ходе выполнения лабораторной работы изучено создание Диаграммы классов в Microsoft Visio.

 

 

 

 

 

 

Лабораторная работа № 2

 

Тема: Объектно-ориентированное программирование.

Определение класса.

Цель: Классы, объекты, методы, свойства.

Задание 1

Создать класс по образцу.

Рзультат

Рисунок 2.1. – Результат работы программы

Листинг программы

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;

type

  TForm1 = class(TForm)

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

TBook = class

PagesCount: integer;

Title, Author: string;

function CompareWithBook(OtherBook: TBook): integer;

procedure ShowTitle;

constructor Create(NewTitle, NewAuthor: string; NewPagesCount: integer);

destructor Destroy;

end;

 

var

MyBook1, MyBook2: TBook; a: integer;

  Form1: TForm1;

implementation

{$R *.dfm}

{ TBook }

function TBook.CompareWithBook(OtherBook: TBook): integer;

begin

Result := Abs(OtherBook.PagesCount-PagesCount);

end;

constructor TBook.Create(NewTitle, NewAuthor: string; NewPagesCount: integer);

begin

Title := NewTitle;

Author := NewAuthor;

PagesCount := NewPagesCount;

end;

destructor TBook.Destroy;

begin

ShowMessage('Уничтожается книга «' + Title + '»');

end;

procedure TBook.ShowTitle;

begin

 ShowMessage(Author + ' «' + Title + '»');

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

MyBook1 := TBook.Create('ООП на Delphi', 'Я автор книги', 1000);

MyBook2 := TBook.Create('ООП на Delphi 2', 'Мой сосед', 1300);

a := MyBook1.CompareWithBook(MyBook2);

ShowMessage(IntToStr(a));

MyBook1.ShowTitle;

MyBook2.ShowTitle;

   MyBook1.Destroy;

 MyBook2. Destroy;

end;

end.

 

Рисунок 2.2. – Диаграмма классов

 

Задание 2

Согласно своему варианту, создайте класс и заполните его свойства.

Вывести по своему усмотрению результат вычисления с выбором подходящего объекта.

Результат

 

 

Рисунок 2.3. – Результат работы программы

Листинг программы

unit Unit2;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, DateUtils, StdCtrls;

type

  TForm2 = class(TForm)

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

TNotebook = class

DateOfBirth: TDate;

Surname, PhonNumber, PlaceOfResidence: string;

function CompareWithNotebook(OtherNotebook: TNotebook): TDate;

procedure ShowDateOfBirth;

constructor Create(NewPhonNumber, NewSurname, NewPlaceOfResidence: string;

 NewDateOfBirth: TDate);

 destructor Destroy;

end;

var

  Form2: TForm2;

implementation

{$R *.dfm}

{ TNotebook }

function TNotebook.CompareWithNotebook(OtherNotebook: TNotebook): TDate;

begin

Result := Abs(OtherNotebook.DateOfBirth-DateOfBirth);

end;

constructor TNotebook.Create(NewPhonNumber, NewSurname,

  NewPlaceOfResidence: string; NewDateOfBirth: TDate);

begin

 PhonNumber:= NewPhonNumber;

 Surname:= NewSurname;

 PlaceOfResidence:=  NewPlaceOfResidence;

 DateOfBirth:= NewDateOfBirth;

end;

destructor TNotebook.Destroy;

begin

 ShowMessage('Уничтожается запись «' + Surname + '»');

end;

procedure TNotebook.ShowDateOfBirth;

begin

ShowMessage(Surname + '' + ' ');

end;

procedure TForm2.Button1Click(Sender: TObject);

var MyNotebook1, MyNotebook2: TNotebook;

a: real;

begin

MyNotebook1 := TNotebook.Create('0', ' Иванов', 'Стаханов', strtodate('22.02.1988'));

MyNotebook2 := TNotebook.Create('0' , 'Сидоров', 'Кировск' , strtodate('22.02.1978'));

a := MyNotebook1.CompareWithNotebook(MyNotebook2);

ShowMessage(FloatToStr(a));

MyNotebook1.ShowDateOfBirth;

MyNotebook2.ShowDateOfBirth;

 MyNotebook1.Destroy;

MyNotebook2.Destroy;

end;

end.

 

Рисунок 2.4. – Диаграмма классов

Вывод: на лабораторной работе было выполнено вычисление данных и вывод вычисленной информации был показан в сообщении. Так же была создана диаграмма классов.

 

 

 

 

 

 

 

 

 

 

 

 

 

Лабораторная работа №3

 

Тема: Реализация собственного класса.

Цель: Выполнить вывод экземпляра класса (код программы) по нажатию на кнопку.

Задание 1

Задача: Есть дом. В нем живут жильцы. Сопоставить номер квартиры с фамилией жильца.

 

 

Рисунок 3.1. – Вывод результата в сообщение

 

Рисунок 3.2. – Вывод результата в компонент Memo и Striggrid

Листинг  программы

 

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, Grids;

type

  TForm1 = class(TForm)

    Button1: TButton;

    Edit1: TEdit;

    Edit2: TEdit;

    Memo1: TMemo;

    StringGrid1: TStringGrid;

    procedure Button1Click(Sender: TObject);

  type Resident = class

              apartament : Integer;

              Surrname : String;

              function Info (): String;

    end;

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1.Resident }

function TForm1.Resident.Info: String;

                               begin

                                               Result := 'resident: ' + Surrname +

                                               ' apartament №: ' + IntToStr(apartament) + '.';

                               end;

procedure TForm1.Button1Click(Sender: TObject);

Var

    Ivanov : Resident;

    Petrov : Resident;

    S: String;

    i: integer;

  begin

    Ivanov := Resident.Create();

    Ivanov.apartament:=20;

    Ivanov.Surrname:=Edit1.Text;

    Showmessage(Ivanov.Info());

    Memo1.Lines[0]:= (Edit1.text) + ' ' + 'Живёт в ' + IntTostr(Ivanov.apartament)+ ' квартире';

 S:=Memo1.Lines[0];

    Petrov := Resident.Create();

    Petrov.apartament:=30;

    Petrov.Surrname:=Edit2.Text;

    Showmessage(Petrov.Info());

    Memo1.Lines[1]:= (Edit2.text) + ' ' +'Живёт в ' + IntTostr(Petrov.apartament)+ ' квартире';

 S:=Memo1.Lines[1];

 StringGrid1.Cols[0].Add(Edit1.text);

  StringGrid1.Cols[1].Add(Edit2.text);

  end;

  end.

 

Задание 2

Запись в записной книжке. Создайте класс и заполните его свойства, вводя данные с формы.

  

Рисунок 3.3. – Вывод результата в сообщение

 

Рисунок 3.4. – Вывод результата в компонент Memo и Striggrid

 

Листинг  программы

 

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, Grids, StdCtrls, DateUtils;

 

type

  TForm1 = class(TForm)

    Edit1: TEdit;

    Edit2: TEdit;

    Memo1: TMemo;

    Button1: TButton;

    StringGrid1: TStringGrid;

    procedure Button1Click(Sender: TObject);

              type Resident = class

             nomer: integer;

          rod: TDate;

              apartament : Integer;

              Surrname : String;

              function Info (): String;

end;

 

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.Resident.Info: String;

                               begin

                                               Result := 'Фамилия: ' + Surrname + ' ' +

                                               ' номер телефона:' + ' ' + IntToStr(nomer) + ' ' + ' дата рождения: ' + DateToStr (rod)

      + ' ' +'место проживания: квартира' + ' ' + IntToStr(apartament);

                               end;

procedure TForm1.Button1Click(Sender: TObject);

var Ivanov : Resident;

    Petrov : Resident;

    S: String;

 

begin

 Ivanov := Resident.Create();

    Ivanov.apartament:=20;

    Ivanov.Surrname:='Ivanov';

   Ivanov.rod:= strtodate('22.02.1988');

    Ivanov.nomer:= 452698;

    Ivanov.Surrname:=Edit1.Text;

    Showmessage(Ivanov.Info());

      Memo1.Lines[0]:= (Edit1.text) + ' ' + 'номер телефона: ' + ' ' + IntToStr(Ivanov.nomer) + ' ' + ' дата рождения: '

      + DateToStr (Ivanov.rod) + ' ' + ' место проживания: квартира ' +  IntToStr(Ivanov.apartament);

 S:=Memo1.Lines[0];

   Petrov := Resident.Create();

    Petrov.apartament:=30;

    Petrov.Surrname:='Petrov';

    Petrov.rod:= strtodate ('24.07.1978');

    Petrov.nomer:= 852698;

    Petrov.Surrname:=Edit2.Text;

    Showmessage(Petrov.Info());

      Memo1.Lines[1]:= (Edit2.text) + ' ' + ' номер телефона: ' + ' ' + IntToStr(Petrov.nomer) + ' ' + ' дата рождения: ' + DateToStr (Petrov.rod) +

      ' ' + '   место проживания: квартира   ' + ' ' + IntToStr(Petrov.apartament);

 S:=Memo1.Lines[1];

 StringGrid1.Cols[0].Add(Edit1.text);

  StringGrid1.Cols[1].Add(Edit2.text);

end;

 

end.

Рисунок 3.5. – Диаграмма класса

 

Вывод: на лабораторной работе  было выполнено два задания. В ходе работы были созданы  программы для вывода информации в компоненты Memo, Striggrid и в Windows сообщение.

 

 

 

 

 

 

 

Лабораторная работа №4

Тема: Наследование классов

Задание общее

1.     По изученным выше структурам создать рабочую область – форму с четырьмя кнопками:  Students, Teachers, Marks and Exit.

2.      В конструктор constructor TStudent.CreateWithFirstMark дописать:

ShowMessage('Ученику '+NewFirstName+' '+NewLastName+' '+' оценка '+IntToStr(FirstMark));

end;

3.     Написать  функцию для подсчета количества лет студента. Для этого подвести курсор к function Age: byte; и нажать Ctrl+Shift+C

Обработка функции выглядит следующим образом:

  Result:=2018-YearOfBirth;

4.      Создаем конструктор для TTeacher constructor Create (Ctrl+Shift+C)

 

constructor TTeacher.Create(NewFirstName, NewLastName, NewSubject: string);

begin

 

    FirstName:=NewFirstName;

    LastName:=NewLastName;

    Subject:=NewSubject;

 

end;

5.      Создадим пользовательскую процедуру для вывода информации о преподаватели и читаемой им дисциплине

 

procedure TTeacher.ShowInfo;

begin

    ShowMessage( FirstName +' ' + LastName+ ' '+ Subject);

end;

 

Далее необходимо в классе TTeacher идентифицировать процедуру. Для этого в класс TTeacher необходимо написать:

 

Procedure ShowInfo;

 

6.      Все предварительные этапы описания функций выполнены. Теперь необходимо каждой созданной кнопке по событию OnClick задать функции и задаться объектами класса. Для этого:

1)       на кнопку Teachers поместить по событию OnClick

 

var

Teach1,Teach2: TTeacher;

begin

 

  Teach1:=TTeacher.Create('Ivanova','Alla','Math');

    Teach2:=TTeacher.Create('Petrova','Maya','Informatics');

 

    Teach1.ShowInfo;

    Teach2.ShowInfo; end;

2)     на кнопку Students поместить по событию OnClick

var Student1,student2:TStudent;

begin

 

    Student1:=TStudent.Create('Adelina','Studentkina',74);

   Student2:=TStudent.Create('Timur','Studentkin',44);

 

 

end;

3)     на кнопку Marks поместить по событию OnClick

var studentsmarks1,studentsmarks2:TStudent;

begin

 

      studentsmarks1:=TStudent.CreateWithFirstMark('Fedor','Smith',15,5);

end;

4)     на кнопку Exit поместить по событию OnClick:

 

Form1.Close;

 

В случае некорректной работы программы закомментируйте:

 

Create(NewFirstName, NewLastName, NewClassNumber); // Вызываем сначала базовый конструктор

 

Задание индивидуальное

Согласно номеру своего варианта добавить каждому классу ровно столько объектов, каков номер вашего варианта.

Например, вариант 15:

2 – по условию teachers + 15 = 17

2 – по условию students + 15 = 17

2 – по условию marks + 15 = 17

Дополнительное задание

Выводить все объекты в Edit

(например, в цикле с помощью  FindComponent('Edit'+IntToStr(i)) as TEdit) или в другие компоненты.

 

Ход работы

Листинг программы:

 

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;

 

type

  TForm1 = class(TForm)

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    Button4: TButton;

    Memo1: TMemo;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 THuman = class

public

FirstName, LastName: string;

YearOfBirth: integer;

Height: integer;

function Age: byte;

constructor Create(NewFirstName, NewLastName: string);

end;

TTeacher = class(THuman) // В скобках после ключевого слова class

// указывается родительский класс, методы и поля которого

// будут также доступны из этого класса TTeacher

public

Subject: string;

Procedure ShowInfo;

constructor Create(NewFirstName, NewLastName, NewSubject: string);

end;

TStudent = class(THuman) // В скобках после ключевого слова class

// указывается родительский класс, методы и поля которого

// будут также доступны из этого класса TStudent

constructor CreateWithFirstMark(NewFirstName, NewLastName: string;

 NewClassNumber: byte; FirstMark: byte);

public

ClassNumber: byte;

Marks: array [0..10] of byte;

Teachers: array [0..10] of TTeacher;

constructor Create(NewFirstName, NewLastName: string; NewClassNumber: byte);

end;

var

  Form1: TForm1;

 

implementation

 

{$R *.dfm}

constructor TStudent.Create(NewFirstName, NewLastName: string;

  NewClassNumber: byte);

begin

inherited Create(NewFirstName, NewLastName);

ClassNumber := NewClassNumber;

YearOfBirth := 1996; // Обращение к полю родительского класса

ShowMessage('Ученику '+NewFirstName+' '+NewLastName+' '+IntToStr(Age)+' years'); // Обращение к методу Age родительского класса

end;

constructor TStudent.CreateWithFirstMark(NewFirstName, NewLastName: string;

  NewClassNumber, FirstMark: byte);

begin

Create(NewFirstName, NewLastName, NewClassNumber);

ShowMessage('Ученику '+NewFirstName+' '+NewLastName+' '+' оценка '+IntToStr(FirstMark));

end;

function THuman.Age: byte;

begin

  Result:=2020-YearOfBirth

end;

constructor THuman.Create(NewFirstName, NewLastName: string);

begin

end;

constructor TTeacher.Create(NewFirstName, NewLastName, NewSubject: string);

begin

FirstName:=NewFirstName;

    LastName:=NewLastName;

    Subject:=NewSubject;

end;

   procedure TTeacher.ShowInfo;

begin

    ShowMessage( FirstName +' ' + LastName+ ' '+ Subject);

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var Student1,student2, student3, student4, student5:TStudent;   i: integer;    z:TComponent;

begin

     Student1:=TStudent.Create('Anastasia','Dorofeeva',74);

   Student2:=TStudent.Create('Alina','Shevchenko',74);

    student3:= TStudent.Create('Anna','Kaplan',74);

    student4:= TStudent.Create('Fedor','Komarov',74);

    student5:= TStudent.Create('Viktoria','Karlova',74);

   for i:=0 to Screen.CustomFormCount-1 do

 (FindComponent('Memo1') as TMemo).Lines.Append ('Anastasia Dorofeeva 24 ears, Alina Shevchenko 24 ears, Anna Kaplan 24 ears, Fedor Komarov 24 ears, Viktoria Karlova 24 ears');

end;

 

procedure TForm1.Button2Click(Sender: TObject);

var

Teach1,Teach2, Teach3, Teach4, Teach5: TTeacher;

i: integer;    z:TComponent;

begin

  Teach1:=TTeacher.Create('Volkov','Aleksandr','Math');

    Teach2:=TTeacher.Create('Trufanova','Margarita','Informatics');

    Teach3:=TTeacher.Create('Ivanova','Anna','Rus. lit');

    Teach4:=TTeacher.Create('Petrova','Alisa','Sociologia');

    Teach5:=TTeacher.Create('Avershina','Marina','PO');

    Teach1.ShowInfo;

    Teach2.ShowInfo;

    Teach3.ShowInfo;

    Teach4.ShowInfo;

    Teach5.ShowInfo;

       for i:=0 to Screen.CustomFormCount-1 do

 (FindComponent('Memo1') as TMemo).Lines.Append ('Volkov Aleksandr Math, Trufanova Margarita Informatics, Ivanova Anna Rus. lit, Petrova Alisa Sociologia, Avershina Marina PO. ');

    end;

 

procedure TForm1.Button3Click(Sender: TObject);

var i: integer;    z:TComponent; studentsmarks1, studentsmarks2, studentsmarks3, studentsmarks4, studentsmarks5:TStudent;

begin

studentsmarks1:=TStudent.CreateWithFirstMark('Maria','Smith',15,5);

studentsmarks2:=TStudent.CreateWithFirstMark('Olga','Biver',15,4);

studentsmarks3:=TStudent.CreateWithFirstMark('Mira','Svil',15,3);

studentsmarks4:=TStudent.CreateWithFirstMark('Vika','Smile',15,5);

studentsmarks5:=TStudent.CreateWithFirstMark('Oleg','Voronov',15,3);

for i:=0 to Screen.CustomFormCount-1 do

 (FindComponent('Memo1') as TMemo).Lines.Append ('Maria Smith 5, Olga Biver 4, Mira Svil 3, Vika Smile 5, Oleg Voronov 3');

    end;

 

procedure TForm1.Button4Click(Sender: TObject);

begin

  Form1.Close;

end;

 

end.

 

Рисунок 4.1.- Результат работы программы

Рисунок 4.2. – Вывод информации в компоненту Memo

 

Рисунок 4.3. – Диаграмма классов

 

 

Вывод: получен опыт выполнения работы по наследованию классов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Лабораторная работа 5

Тема: Свойства объектов. Сеттеры. Геттеры.

 

Листинг программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs;

type

  TForm1 = class(TForm)

    procedure FormCreate(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

type

TTriangle = class

public

a, b, c: double;

function Square: double;

//function Perimeter: double;

function GetPerimeter: double;

procedure SetPerimeter(Value: double);

property Perimeter: double read GetPerimeter write SetPerimeter;

constructor Create(NewA, NewB, NewC: double);

end;

var

  Form1: TForm1;

 

implementation

{$R *.dfm}

{ TTriangle }

constructor TTriangle.Create(NewA, NewB, NewC: double);

begin

a := NewA;

b := NewB;

c := NewC;

end;

{

function TTriangle.Perimeter: double;

begin

result := a + b + c;

end;                }

function TTriangle.GetPerimeter: double;

begin

result := a + b + c;

end;

procedure TTriangle.SetPerimeter(Value: double);

begin

a := Value / 3;

b := Value / 3;

c := Value / 3;

end;

function TTriangle.Square: double;

var

p: double; // Полупериметр, пригодится в вычислениях

begin

// Находим площадь треугольника по формуле Герона

p := (a + b + c) / 2;

result := sqrt(p*(p-a)*(p-b)*(p-c));

end;

procedure TForm1.FormCreate(Sender: TObject);

var

t: TTriangle;

begin

t := TTriangle.Create(10, 11, 12);

t.Perimeter := 40; // Присваиваем периметр посредством property.

// Соответственно будет выполнен Setter (SetPerimeter) и присвоено значение сторонам треугольника

ShowMessage('Стороны треугольника: '+FloatToStrF(t.a, ffFixed, 6,2)+'; '+FloatToStrF(t.b, ffFixed, 6,2)+'; '+FloatToStrF(t.c, ffFixed, 6,2)+' Периметр : '+FloatToStr(t.Perimeter));

// Здесь мы опять обращаемся к property Perimeter, это свойство вызывает Getter GetPerimeter, которое и возвращает нам значение

end;

end.

Рисунок 5.1. – Окно результата выполненной программы

 

Рисунок 5.2. – Диаграмма класса TTriangle

Вывод: На данной лабораторной работе была выполнена работа по подсчету сторон треугольника по заданному периметру. В листинге программы были реализованы: метод Getter и метод-процедура Setter.

 

Лабораторная работа 6

Тема: Свойства объектов. Сеттеры. Геттеры.

Задание к лабораторной работе

1.     Выполните пример, приведенный в лабораторной работе.

2.     Согласно своему варианту, создайте класс и заполните его свойства.

3.     Выполнить проверку работы программы.

4.     Продемонстрировать преподавателю работу ваших программ. 

5.     Оформить отчёт.

 

Ход работы

Вариант 3

         В классе Треугольник добавить поля Углы треугольника и вычислить внешний угол от заданного.

Листинг программы

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs;

 

type

  TForm1 = class(TForm)

    procedure FormCreate(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

type

TTriangle = class

public

a, b, c: double;

procedure ShowTitle;

procedure SetPerimeter(Value: double);

constructor Create(NewA, NewB, NewC: double);

destructor Destroy;

end;

 

var

  Form1: TForm1;

implementation

{$R *.dfm}

 

procedure TForm1.FormCreate(Sender: TObject);

var

t: TTriangle; A, B, C: integer; Aa, Bb, Cc: integer;

begin

 t := TTriangle.Create(10, 11, 12);

A:= 40;

B:= 60;

C:= 70;

Aa:= 180-A;

Bb:= 180-B;

Cc:= 180-C;

ShowMessage ('Угол А =' + ' ' + IntToStr (A) + ', ' + ' ' + 'внешний угол Аа' + ' ' + intToStr(Aa) + #13 + Угол B =' + ' ' + IntToStr (B) + ', ' +  'Внешний угол Вв =' + ' ' + IntToStr (Bb) + '#13 + 'Угол  C =' + ' ' + IntToStr (C) + ', ' + 'Внешний угол Сс =' + ' ' + IntToStr (Cc));

t.ShowTitle;

 t.Destroy;

end;

 

{ TTriangle }

 

constructor TTriangle.Create(NewA, NewB, NewC: double);

begin

a := NewA;

b := NewB;

c := NewC;

 

end;

 

destructor TTriangle.Destroy;

var A, B, C, Aa, Bb, Cc: integer;

begin

ShowMessage ('Уничтожается запись:’ +#13+ 'Угол А =' + ' ' + IntToStr (A) + ', ' + ' ' + 'внешний угол Аа' + ' ' + intToStr(Aa) + #13 + Угол B =' + ' ' + IntToStr (B) + ', ' +  'Внешний угол Вв =' + ' ' + IntToStr (Bb) + '#13 + 'Угол  C =' + ' ' + IntToStr (C) + ', ' + 'Внешний угол Сс =' + ' ' + IntToStr (Cc));

end;

 

 

procedure TTriangle.SetPerimeter(Value: double);

begin

a := Value / 3;

b := Value / 3;

c := Value / 3;

 

end;

 

procedure TTriangle.ShowTitle;

var A, B, C, Aa, Bb, Cc: integer;

begin

ShowMessage ('Угол А =' + ' ' + IntToStr (A) + ', ' + ' ' + 'внешний угол Аа' + ' ' + intToStr(Aa) + #13 + Угол B =' + ' ' + IntToStr (B) + ', ' +  'Внешний угол Вв =' + ' ' + IntToStr (Bb) + '#13 + 'Угол  C =' + ' ' + IntToStr (C) + ', ' + 'Внешний угол Сс =' + ' ' + IntToStr (Cc));

end;

 

end.

Рисунок 6.1. – Окно приложения

 

Рисунок 6.2. – Окно результата выполнения индивидуального задания

Рисунок 6.3. – Окно результата работы деструктора

Рисунок 6.4. – Диаграмма класса TTriangle

 

Вывод: на лабораторной работе была выполнена работа по определению внешнего угла от заданного.

 

 

 

 

 

Лабораторная работа 7

Тема: Разработка приложения с использованием класса.

Цель: Получение практических навыков работы с пользовательскими классами в DELPHI.

Задание

1. Выполнить пример по образцу: написать приложение, которое

создает массив объектов и выполняет его обработку.

2. Написать приложение ПО ВАРИАНТУ, которое создает массив

объектов и выполняет его обработку.

3. Поля и методы класса выбрать в зависимости от свойств самого

объекта и тех действий, которые необходимо выполнить.

4. Обязательные методы:

конструктор, предназначенный для инициализации элементов массива

об объектов;

метод вывода списка объектов.

5. Выполнить проверку работы программы.

6. Оформить отчёт. 

7. Продемонстрировать преподавателю работу ваших программ. 

 

Задание 1

 

Листинг программы


unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

Type

TForm1 = class(TForm)

GroupBox1: TGroupBox;

Edit1: TEdit;

Label1: TLabel;

Label2: TLabel;

Edit2: TEdit;

Edit3: TEdit;

Label3: TLabel;

Button1: TButton;

Button2: TButton;

GroupBox2: TGroupBox;

Label4: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private{ Private declarations }

public

{ Public declarations }

end;

Type

Tklient=class

fFio: String;

fVklad: Integer;

fSumma: Real;

constructor create (Fio: String; Vklad: Integer; Summa: real);

Function MinVklad : String;

end;

const

s=4;

var

Form1: TForm1;

MasivKlient: array [1..s] of Tklient; //список

k: Integer=0;

implementation

{$R *.dfm}

constructor Tklient.create (Fio: String; Vklad: Integer; Summa: real);

begin

fFio:=Fio;

fVklad:=Vklad;

fSumma:=Summa;

end;

Function Tklient.MinVklad: String;

begin

result:=fFio+' '+IntToStr(fVklad)+' '+FloatToStr(fSumma);

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

if k<s then begin

k:=k+1;

MasivKlient[k]:=Tklient.create(Edit1.Text, strtoint(Edit2.Text),strtofloat(Edit3.Text));

Edit1.Text:='';

Edit2.Text:='';

Edit3.Text:='';

Edit1.SetFocus;

end else ShowMessage('Список заполнен!');

end;

procedure TForm1.Button2Click(Sender: TObject);

var

i: integer;

sr: Real;

begin

sr:=0;

for i:=1 to k do sr:=sr+MasivKlient[i].fSumma;

sr:=sr/k;

for i:=1 to k do if MasivKlient[i].fSumma<sr then

Label4.Caption:=Label4.Caption+masivKlient[i].fFio+' №'+Inttostr(masivKlient[i].fVklad)

+'   ' +FloatTostr(masivKlient[i].fSumma)+' руб.'+#13;

end; end.


Рисунок 7.1. – Окно результата выполненной программы

Рисунок 7.2. – Диаграмма класса TKlient

Вариант задания

3.Объект: журнал. Создать массив объектов и определить журналы,

которые выходят чаще всего.

 

Задание 2

 

Листинг программы

 

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;

 

type

  TForm1 = class(TForm)

    GroupBox1: TGroupBox;

    Edit1: TEdit;

    Label1: TLabel;

    Label2: TLabel;

    Edit2: TEdit;

    Edit3: TEdit;

    Label3: TLabel;

    Button1: TButton;

    Button2: TButton;

    GroupBox2: TGroupBox;

    Label5: TLabel;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

 

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

 

Type

{--------------------------------------------}

    TGornal=class

        fIzdat: String;

        fName: string;

        fKol: Real;

        constructor create (Izdat: String; Name: string; Kol: real);

        Function MaxKol : String;

    end;

{--------------------------------------------}

const

        s=4;

var

  Form1: TForm1;

  MasivGornal: array [1..s] of TGornal; //список

  k: Integer=0;

implementation

 

{$R *.dfm}

 

 constructor TGornal.create (Izdat: String; Name: string; Kol: real);

 begin

        fIzdat:=Izdat;

        fName:=Name;

        fKol:=Kol;

 end;

 Function TGornal.MaxKol: String;

 

 begin

    result:=fIzdat+' '+fName+' '+FloatToStr(fKol);

 end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

     if k<s then begin

     k:=k+1;

MasivGornal[k]:=TGornal.create(Edit1.Text, Edit2.Text,strtofloat(Edit3.Text));

     Edit1.Text:='';

     Edit2.Text:='';

     Edit3.Text:='';

     Edit1.SetFocus;

                end else ShowMessage('Список заполнен!');

end;

 

procedure TForm1.Button2Click(Sender: TObject);

var

        i: integer;

        sr: Real;

 

begin

sr:=0;

for i:=1 to k do sr:=sr+MasivGornal[i].fKol;

sr:=sr/k;

for i:=1 to k do if MasivGornal[i].fKol>sr then

Label5.Caption:='Издательство'+' '+ Label5.Caption+masivGornal[i].fIzdat +' ' +' журнал' + ' '

+masivGornal[i].fName + ' '

+' выходит'+ ' ' +FloatTostr(masivGornal[i].fKol)+' ' +' раза месяц'+#13;

 

end;

 

end.


 

Рисунок 7.3. – Окно результата выполненной программы

Рисунок 7.4. – Диаграмма класса TGornal

 

Вывод: на лабораторной работе были выполнены работы по созданию записи клиентов банка с максимальным вкладом и вычисление журнала, выходящего чаще остальных.

 


 

Министерство образования и науки

Министерство образования и науки

Лабораторная работа №1 Тема:

Лабораторная работа №1 Тема:

Лабораторная работа № 2 Тема:

Лабораторная работа № 2 Тема:

MyBook1, MyBook2: TBook; a: integer;

MyBook1, MyBook2: TBook; a: integer;

Результат Рисунок 2.3. –

Результат Рисунок 2.3. –

DateOfBirth:= NewDateOfBirth; end; destructor

DateOfBirth:= NewDateOfBirth; end; destructor

Лабораторная работа №3 Тема:

Лабораторная работа №3 Тема:

Private declarations } public {

Private declarations } public {

Рисунок 3.4. – Вывод результата в компонент

Рисунок 3.4. – Вывод результата в компонент

TForm1.Button1Click(Sender: TObject); var

TForm1.Button1Click(Sender: TObject); var

Лабораторная работа №4 Тема:

Лабораторная работа №4 Тема:

Teach1.ShowInfo; Teach2

Teach1.ShowInfo; Teach2

TForm1 = class(TForm) Button1:

TForm1 = class(TForm) Button1:

YearOfBirth := 1996; // Обращение к полю родительского класса

YearOfBirth := 1996; // Обращение к полю родительского класса

Teach5:=TTeacher.Create('Avershina','Marina','PO');

Teach5:=TTeacher.Create('Avershina','Marina','PO');

Рисунок 4.2. – Вывод информации в компоненту

Рисунок 4.2. – Вывод информации в компоненту

Лабораторная работа 5 Тема:

Лабораторная работа 5 Тема:

Value / 3; b := Value / 3; c :=

Value / 3; b := Value / 3; c :=

Лабораторная работа 6 Тема:

Лабораторная работа 6 Тема:

Form1: TForm1; implementation {$R *

Form1: TForm1; implementation {$R *

TTriangle.SetPerimeter(Value: double); begin a :=

TTriangle.SetPerimeter(Value: double); begin a :=

Рисунок 6.2. – Окно результата выполнения индивидуального задания

Рисунок 6.2. – Окно результата выполнения индивидуального задания

Лабораторная работа 7 Тема:

Лабораторная работа 7 Тема:

Vklad:=Vklad; fSumma:=Summa; end;

Vklad:=Vklad; fSumma:=Summa; end;

Задание 2 Листинг программы unit

Задание 2 Листинг программы unit

R *.dfm} constructor TGornal

R *.dfm} constructor TGornal

Рисунок 7.3. – Окно результата выполненной программы

Рисунок 7.3. – Окно результата выполненной программы
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
09.04.2022