Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laby_po_OOP.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
2.23 Mб
Скачать

Лабораторная работа №3

«Полиморфизм»

по дисциплине «Объектно-ориентированное программирование»

для групп П-21, П-22, П-23

специальность:

2-40 01 01 «Программное обеспечение информационных технологий»

специализация:

2-40 01 01 35 «Программное обеспечение обработки экономической и деловой информации»

2-40 01 01 33 «Компьютерная графика»

Разработала преподаватель

О.Л. Иткина

Гомель, 2012

Цель работы: изучить принцип полиморфизма

Теоретические сведения:

Полиморфизм

Слово полиморфизм греческого происхождения и означает приблизительно "много форм" (poly – много, morphos – форма). Причем слово morphos имеет отношение к греческому богу сна Морфею (Morphus), который мог являться спящим людям в любой форме, в какой только пожелает, и, следовательно, был воистину полиморфным.

В биологии полиморфные виды – это те (наподобие человека), которые характеризуются наличием различных форм или расцветок.

В химии полиморфные соединения могут кристаллизоваться, по крайней мере, в двух различных формах. Например, углерод имеет две кристаллические формы – графит и алмаз.

То есть полиморфизм – это способность объектов в одной цепочке иметь одно имя и разные реализации.

С точки зрения реализации на объектно-ориентированном языке программирования полиморфизм – это способность отличить тип одного объекта от типа другого на этапе выполнения программы, даже если объекты обрабатываются универсальным образом, и компилятор не знает истинного типа каждого из них.

Полиморфизм подразумевает наличие виртуальных функций. Следовательно, класс, который имеет хотя бы одну виртуальную функцию, является полиморфным, а программа, создающая и использующая объекты такого типа, является объектно-ориентированной.

Таким образом, термины "полиморфизм" и "объектно-ориентированное программирование" могут рассматриваться в некотором роде как синонимы.

Ход работы:

Задание 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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]