Иллюстрированный самоучитель по Delphi 7 для начинающих

Полиморфизм и виртуальные методы

const
SZL = 10; // размер списка
var
Forml: TForm1;
List: array [l..SZL] of TPerson; // список
n:integer =0; // кол-во людей в списке
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 + ' rp.' + IntToStr(fGr); end;
function TProf.Info:string;
begin
result: = fname + ' каф.' + fDep;
end;
// щелчок на кнопке Добавить
procedure TForml.ButtonlClick(Sender: TObject);
begin
if n < SZL then begin
// добавить объект в список
n: = n+l;
if Radiobuttonl.Checked
then // создадим объект TStud
List[n]: = TStud.Create(Edit1.Text,StrToInt(Edit2.Text))
else // создать объект TProf
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 + 113;
ShowMessage('Cпиcoк'+#13+st); end;
end.

Процедура TForml.Buttoniciick, которая запускается нажатием кнопки Добавить (Buttonl), создает объект iist[n] класса TStud или TProf. Класс создаваемого объекта определяется состоянием переключателя RadioButton. Установка переключателя в положение студент (RadioButtoni) определяет класс TStud, а в положение преподаватель (RadioButton2) – класс TProf.

Процедура TForm1.Button2Сlick, которая запускается нажатием кнопки Список (Button2), применяя метод info к каждому объекту списка (элементу массива), формирует строку, представляющую собой весь список.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.