русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Полиморфизм


Дата добавления: 2015-07-09; просмотров: 649; Нарушение авторских прав


Слово полиморфизм греческого происхождения и означает приблизительно "много форм" (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.



<== предыдущая лекция | следующая лекция ==>
Задание для самостоятельного решения | Гомель, 2010


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.558 сек.