русс | укр

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

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

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

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


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

Гомель, 2010


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



Цель работы: научиться разрабатывать программы с использованием компонентов библиотеки VCL

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

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

Альтернативой наследованию при проектировании объектов служит вложение, когда один объект включает в себя поля, являющиеся объектами или указателями на объекты. Например, если есть объект «двигатель», а требуется описать объект «самолет», логично сделать двигатель полем этого объекта, а не его предком.

Вид вложения, когда в классе описано поле объектного типа, называют компози­цией. Если в классе описан указатель на поле объектного типа, это обычно назы­вают агрегацией. При композиции время жизни всех объектов — и объемлющего, и его полей — одинаково. Агрегация представляет собой более слабую связь ме­жду объектами, потому что объекты, на которые ссылаются поля-указатели, мо­гут появляться и исчезать в течение жизни содержащего их объекта; кроме того, один и тот же указатель может ссылаться на объекты разных классов в пределах одной иерархии. Поле-указатель может также ссылаться не на один объект, а на неопределенное количество объектов, например, быть указателем на начало линейного списка. Если объект предназначается для хранения друтих объектов, он называется кон­тейнером. Объекты в контейнере могут храниться в виде массива, списка, стека или другой динамической структуры. Методы контейнера обычно включают его создание, дополнение, просмотр, а также поиск и удаление элементов.



В качестве примера контейнера рассмотрим объект list, предназначенный для работы со связным списком объектов класса monstr и его потомков.

type

list = object

constructor init;

procedure add(pm : pmonstr);

procedure draw;

destructor done; private

beg : pnode; end;

В объекте одно поле beg — указатель на начало списка элементов типа node:

type

pnode = ^node;

node = record

pm : pmonstr; { указатель на объект pmonstr }

next : pnode; { указатель на следующий элемент списка }

end;

Ход работы:

Задание 1. Наберите и проанализируйте программу. Определите в данной программе все объекты, методы, а также принципы наследования и полиморфизма, применяемые к этим объектам с использованием библиотеки VCL. Объясните результаты выполнения программы.

program demojlist;

uses graph, crt, monsters;

const n = 30;

type

pnode = ^node;

node = record f

pm : pmonstr; next : pnode; end; list = object

constructor tirit: procedure add(pm : pmonstr); procedure draw; destructor done; .private

beg : pnode; end;

constructor list.init;

begin beg := nil ,

end;

procedure list.add(pm : pmonstr); var p : pnode: begin new(p);

p^.pm := pm; pA.next := beg; beg := p; , end;

procedure list.draw; 'var p : pnode; begin

p := beg;

while p <> nil do begin

p*.pirT.draw;

р := pA.next;
end;
end;
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;
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:

reportC доступно после выделения памяти: ');
stado.draw;

stado.done;

report(' доступно после освобождения памяти: ');

readln;

end.



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


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


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

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

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


 


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

 
 

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

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