Цель работы: изучить принцип полиморфизма
Ход работы:
Задание 1. Наберите и проанализируйте программу. Определите в данной программе принцип полиморфности созданных объектов. Объясните результаты выполнения программы.
program demojlist;
uses graph, crt, monsters;
const n = 30;
type
pnode = ^node;
node = record
pm: pmonstr; next : pnode; end; list = object
constructor tirit: procedure add(pm : pmonstr); procedure draw; destructor done; .private
beg : pnode; end;
{ list.init }
constructor list.init;
begin beg := nil
end;
{ list.add }
procedure list.add(pm : pmonstr); var p : pnode: begin new(p); p^.pm := pm; pA.next := beg; beg := p; end;
{ list.draw }
procedure list.draw; 'var p : pnode; begin
p := beg;
while p <> nil do begin
p*.pirT.draw;
р := pA.next; end; end; { list.done }
destructor list.done; var p : pnode; begin
while beg <> nil do begin
p := beg;
dispose(p*.pm, done);
beg := p'.next;
dispose(p); end end; { report }
procedure report(message: string);
var s ; string;
begin
str(MemAvail, s);
outtext(message + s);
moveto(0, GetY + 12); end; var
stado : list:
x. у : integer;
gd, grrt : integer;
p : pmonstr;
i : word; { главная программа ----- }
begin
gd :detect;
initgraph(gd. gm. '...');
if graphresult <> grOk then begin
write!n('ошибка инициализации графики'); exit end; randomize;
report (доступно в начале программы: '); stado.init;
for i := 1 to n do begin , case random(2) of
p := new(pmonstr, init(random(600), random(440), 10, 8));
p := new(pdaemon, init(random(600), random(440). 10, 8, 6)); end;
st;ado.add(p); {добавление объекта в список } end:
report ( доступно после выделения памяти: '); stado.draw;
stado.done;
report(' доступно после освобождения памяти: '); readln;
end.