Отчёт по ООП. Воронеж 2019 Практическая работа 1 Тема практической работы Файл проекта. Структура и Назначение
Скачать 0.96 Mb.
|
Оборудование: компьютер, программное обеспечение Windows 7, текстовый редактор Microsoft Office Word, среда программирования DelphiХод работы: Задание 1: Рис.15 Листинг программы: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TPayment = class(TObject) // TPayment -имя класса наследуется от TObject {TObject является общим предком всех классов в Delphi, корнем иерархии Visual Component Library. Tobject представляет собой абстрактный класс, реализующий только наиболее общие механизмы, универсально разделяемые всеми объектами VCL. TObject автоматически используется как порождающий тип при создании нового класса Delphi. Следовательно, следующие фрагменты кода имеют одно и то же значение:} // это поля класса SurnameNameMiddleName : String; // ФИО Salary : Real; // Оклад YearOfEmployment : Integer; // Год поступления на работу PercentagePremium : Real; // Процент надбавки IncomeTax : Real; // Подоходный налог NumberOfDaysInMonthR : Word; // Количество отработанных дней в месяце NumberOfDaysInMonthN : Word; // Количество рабочих дней в месяце AssessedAmount : Real; // Начисленная и WithheldAmount : Real; // удержанная суммы // а это методы function FindAssessedAmount : Real; // Вычисление начисленной суммы // function FindWithheldAmount : Real; // Вычисление удержанной суммы // function FindGettedAmount : Real; // Вычисление выдаваемой на руки суммы // function FindExperience : Real; // Вычисление стажа end; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function TPayment.FindAssessedAmount : Real; begin Result := 1300; end; procedure TForm1.Button1Click(Sender: TObject); var MyZarplata:TPayment; // объявялем Myzarplata как наследуемый класс от TPayment begin MyZarplata:=TPayment.Create; // создаем экземпляр класса Myzarplata от предка TPayment Button1.Caption := Button1.ClassName; {Выводит в тексте на кнопке названия предка текущего класса от которой была наследована кнопка те TButton } Label1.Caption:= FloatToStr(MyZarplata.FindAssessedAmount()); end; end. Вывод: Я рассмотрел классы и пример создания программы используя их. Практическая работа №5, №6. Тема практической работы: Свойства класса. Пример описания свойства классов. Цель практической работы: рассмотреть свойства класса, на примере создать класс. Ход работы. Задание1. Рис.16 Листинг_программы'>Листинг программы: program Project5; type TUser = class private fLogin: string; fPassword: string; procedure setPassword(newpass: string); published property Login: string read fLogin write fLogin; property Password: string read fPassword write setPassword; function Connect: boolean; end; procedure TUser.setPassword(newpass: string); begin if Length(newpass)>3 then fPassword:=newpass else writeln('Error! Password is too short!'); end; function TUser.Connect:boolean; var s,p: string; begin writeln('Input username:'); readln(s); writeln('Input password:'); readln(p); result:= (s=fLogin) and (p=fPassword); end; var User: TUser; s,p: string; begin User:=TUser.Create; writeln('Create username'); readln(s); User.Login:=s; writeln('Create password'); readln(p); User.Password:=p; writeln('Username is: '+User.Login); writeln('Password is: '+User.Password); writeln('Try to login...'); while User.Password<>'' do begin if User.Connect then begin writeln('All Ok.'); break; end else writeln('Incorrect data. Try again!'); end; User.Destroy; readln; end. uses SysUtils; begin { TODO -oUser -cConsole Main : Insert code here } end. Вывод: Я рассмотрел свойства класса, на примере создать класс. Практическая работа №7 Тема практической работы: Виды методов. Характеристики методов. Цель практической работы: научится работать с классами. Ход работы: Задание1. Рис.17 Рис.18 Рис.19 Листинг программы. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type {Описание нового класса} TPerson = class(TObject) Name:string[15]; Address:string[35]; constructor create; procedure print; end; type TForm1 = class(TForm) Label1: TLabel; Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; student:TPerson; professor:TPerson; implementation {$R *.dfm} {Реализация конструктора} Constructor TPerson.create; begin name:=' '; address:=' '; end; Procedure TPerson.print; begin form1.Label1.Caption:='ФИО'+name+'Адрес'+address; end; procedure TForm1.FormCreate(Sender: TObject); begin Professor:=TPerson.Create; Student:=TPerson.Create; end; procedure TForm1.Button1Click(Sender: TObject); begin professor.Name:=' Петров '; professor.Address:=' Чита, Ленинградская,22'; professor.print; end; procedure TForm1.Button2Click(Sender: TObject); begin student.Name:=' Иванов '; student.Address:='Чита, Столярова,14'; student.print; end; end. Вывод: Я научится работать с классами. Практическая работа №8, №9 Тема: Конструкторы, деструкторы описание применение. Цель: научиться принципам разработки конструктора и деструктора. Ход работы: Задание. Разработать классы Рис.20 Рис.21 Рис.22 Листинг: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; Label1: TLabel; Label2: TLabel; procedure Label1Click(Sender: TObject); procedure Edit1Change(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation procedure TForm1.Label1Click(Sender: TObject); begin Label1.Caption:=Edit1.Text; end; procedure TForm1.Edit1Change(Sender: TObject); begin Label1.Caption := Edit1.Text; end; procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text:=''; end; procedure TForm1.FormCreate(Sender: TObject); begin end; end. Вывод: Я научился принципам разработки конструктора и деструктора. Практическая работа №10 Тема: События. Цель: Рассмотреть работу с событиями в программах, написать обработчик на событие. Ход работы: Задание 1. Рассмотреть пример процедуры обработки события OnClick для командной кнопки Вычислить. Рис.23 Рис.24 Рис.25 Листинг: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Edit2: TEdit; Label4: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var dist : integer; // дистанция, метров t: real; // время как дробное число min : integer; // время, минуты sek : integer; // время, секунды v: real; // скорость begin // получить исходные данные из полей ввода dist := StrToint(Edit1.Text); t := StrToFloat(Edit2.Text); // предварительные преобразования min := Trunc(t); // кол-во минут - это целая часть числа t sek := Trunc(t*100) mod 100; // кол-во секунд - это дробная часть // числа t // вычисление v := (dist/1000) / ((min*60 + sek)/3600); // вывод результата label4.Caption := 'Дистанция: '+ Edit1.Text + ' м' + #13 + 'Время: ' + IntToStr(min) + ' мин ' + IntToStr(sek) + ' сек ' + #13 + 'Скорость: ' + FloatToStrF(v,ffFixed,4,2) + ' км/час'; end; procedure TForm1.Button2Click(Sender: TObject); begin Form1.Close; // закрыть главное окно программы end; procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); Var result:Integer; begin Result:= MessageDlg('Завершить?',mtConfirmation,[mbYes,mbNo],0); If Result = mrYes then CanClose:=True else CanClose:=False end; end. Задание 2. Необходимо запретить "прямое" закрытие формы, а спрашивать, действительно ли пользователь хочет закрыть программу. Рис.26 Листинг: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var dist : integer; t: real; min : integer; sek : integer; v: real; begin dist := StrToint(Edit1.Text); t := StrToFloat(Edit2.Text); min := Trunc(t); sek := Trunc(t*100) mod 100; v := (dist/1000) / ((min*60 + sek)/3600); label1.Caption := 'Дистанция: '+ Edit1.Text + ' м' + #13 + 'Время: ' + IntToStr(min) + ' мин ' + IntToStr(sek) + ' сек ' + #13 + 'Скорость: ' + FloatToStrF(v,ffFixed,4,2) + ' км/час'; end; procedure TForm1.Button2Click(Sender: TObject); var CanClose: Boolean; begin if MessageDlg('Вы действительно хотите выйти?',mtWarning,[mbYes,mbNo],0) = mrNo then CanClose:=False; end; end. Вывод: Я рассмотрел работу с событиями в программах, написал обработчик на событие. Практическая работа №11 Тема практической работы: Сообщения. Цель практической работы:Изучить работу сообщений и их вывод в программе. Ход работы: Задание1. Рис.27 Рис.28 Рис.29 Рис.30 Рис.31 Листинг: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var A:string; B:integer; C:string; N:integer; procedure TForm1.Button1Click(Sender: TObject); begin A := InputBox('Регистрация', 'Введите ваше имя и фамилию:',''); B := MessageDlg('Уважаемый ' + A + ', Вы готовы к проверке знаний?', MtConfirmation, [mbYes,mbNo],0); If B = idNo Then Exit; C := InputBox('Первый вопрос', 'Чему равен 1 байт?:',''); If C = '8 бит' Then begin MessageDlg('Правильно!', MtWarning, [mbYes],0); end Else begin MessageDlg('Неправильно!', MtWarning, [mbYes],0); N := N + 1; end; C := InputBox('Второй вопрос', 'Переведите десятичное число 5 в двоичную систему счисления:',''); If C = '101' Then begin MessageDlg('Правильно!', MtWarning, [mbYes],0); end Else begin MessageDlg('Неправильно!', MtWarning, [mbYes],0); N := N + 1; end; C := InputBox('Третий вопрос', 'Что такое MSDOS:',''); If C = 'Дисковая операционная система' Then begin MessageDlg('Правильно!', MtWarning, [mbYes],0); end Else begin MessageDlg('Неправильно!', MtWarning, [mbYes],0); N := N + 1; end; C := InputBox('Четвертый вопрос', 'Сколько мегабайт в гигабайте:',''); If C = '1024' Then begin MessageDlg('Правильно!', MtWarning, [mbYes],0); end Else begin MessageDlg('Неправильно!', MtWarning, [mbYes],0); N := N + 1; end; C := InputBox('Пятый вопрос', 'Перевод программ с языка высокого уровня на язык более низкого уровня обеспечивает программа -',''); If C = 'Компилятор' Then begin MessageDlg('Правильно!', MtWarning, [mbYes],0); end Else begin MessageDlg('Неправильно!', MtWarning, [mbYes],0); N := N + 1; end; C := InputBox('Шестой вопрос', 'Раздел переменных определяется служебным словом:',''); If C = 'var' Then begin MessageDlg('Правильно!', MtWarning, [mbYes],0); end Else begin MessageDlg('Неправильно!', MtWarning, [mbYes],0); N := N + 1; end; MessageDlg('Уважаемый, ' + A + ', Вы сделали '+IntToStr(N)+' ошибок', MtInformation, [mbOK], 0); end; end. Вывод: Я изучил работу сообщений и их вывод в программе. Практическая работа №12 |