Вывод: сегодня я изучил работу сообщений и их вывод в программе.
Практическая работа №12
Тема практической работы: Полиморфизм. Виртуальные методы.
Цель практической работы: Изучить свойства полиморфизма и его виртуальные методы.
Ход работы :
Задание №1
Рис 43
Рис 41 Рис 42
Листинг:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
RadioGroup1: TRadioGroup;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TPerson=class
fName:string;
constructor Create(name:string);
function info:string; virtual;
end;
TStud=class(TPerson)
fGr:integer;
constructor Create(name:string;gr:integer);
function info:string;
override;
end;
TProf=class (TPerson)
fdep:string;
constructor Create(name:string; dep:string);
function info:string;
override;
end;
const SZL=10;
var
Form1: TForm1;
List:array[1..10] of TPerson;
n:integer;
implementation
{$R *.dfm}
constructor TPerson.Create(name:string);
begin
fName:=name; end;
constructor TStud.Create(name:string;gr:integer);
begin
inherited create(name);
fGr:=gr; end;
constructor TProf.Create(name:string;dep:string);
begin
inherited create(name);
fDep:=dep;end;
function TPerson.info:string;
begin
result:=fname;end;
function TStud.info:string;
begin
result:=fname+' гр. '+IntToStr(fGr);end;
function TProf.info:string;
begin
result:=fname+' каф. '+fDep;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if n
n:=n+1;
if RadioButton1.Checked
then
List[n]:=TStud.Create(Edit1.Text,StrToInt(Edit2.Text))
else
List[n]:=TProf.Create(Edit1.Text,Edit2.Text);
Edit1.Text:='';Edit2.Text:='';
Edit1.SetFocus;
end
else ShowMessage('Список заполнен!');
end;
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
st:string;
begin
for i:= 1 to SZL do
if list[i]<>NIL then st:=st + List[i].info + #13;
ShowMessage('Список '+#13+st);
end;
end.
Достарыңызбен бөлісу: |