unit polimor_; interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit;
GroupBoxl: TGroupBox; RadioButton1: TRadioButton; RadioButton2: TRadioButton; Label1: TLabel;
Label2: TLabel; Button1: TButton; Button2: TButton;
procedure ButtonlClick(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
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(Edit 1.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.Buttoniclick рәсімі TStud немесе TProf класының Тізімін [n]
жасайды. Жасалған нысанның класы RadioButton қосқышы күйімен анықталады. Switch to Student (RadioButton 1) параметрін TStud класын және Teacher (RadioButton2) позициясын, TProf класын анықтайды. Әрбір тізім объектісіне (массив элементі) ақпарат әдісін қолдана отырып, Button2 түймешігін басу арқылы басталған TForm1.Button2Click процедурасы бүкіл тізімді білдіретін жолды құрады.
Тапсырма
Жоғарыда келтірілген мысал үшін, бағдарламаны шығару тізімдері алфавиттік түрде сұрыпталатын етіп өзгертіңіз. Есепке тапсырма, бағдарламаның листингі және тест сұрақтарына жауап беру кіреді.
БАҚЫЛАУ СҰРАҚТАРЫ
Тұжырымдаманы анықтаңыз: сынып, объект, мұра, инкапсуляция, полиморфизм.
Негізгі және сабақтас сыныптарды қалай жариялауға болады?
Сыныпты қалыптастыру деп аталатын не?
Класс конструкторы қандай міндеттерді шешеді?
Бұл әдіс виртуалды деп қалай атала
Достарыңызбен бөлісу: |