![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Листинг 9.1. Демонстрация полиморфизма ⇐ ПредыдущаяСтр 2 из 2
(Программа Студенты и преподаватели) unit polimor; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; Button1: TButton; Button2: TButton; GroupBox1: TGroupBox; RadioButton1: TRadioButton; RadioButton2: TRadioButton; Label3: TLabel; 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..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 + ' ' +IntToStr(fGr); end; function TProf.Info: string; begin result: = fname + ' ' + fDep; end; // щелчок на кнопке Добавить procedure TForm1.Button1Click(Sender: TObject); begin if n < SZL then begin // добавить объект в список n: =n+1; if Radiobutton1.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; 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('Cпиcoк студентов и преподавателей'+#13+st); end; end.
Образцы форм, получаемых в ходе реализации задания:
III. Контрольные вопросы 1. Класс 2. Объект 3. Метод 4. Инкапсуляция и свойства объекта 5. Наследование 6. Директивы protected и private 7. Полиморфизм.
|