Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабраб_3.DOC
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
128 Кб
Скачать

2. Демонстрационные примеры

Пример 7.2.

program LAST_PROGRAM_BY_PASCAL;

{point - line -PerecrestLine }

uses crt,graph;

type

TCoord=object {координаты объекта}

X,y:integer;

constructor Init(ax,ay:integer); end;{специальный тип процедуры , которая выполняет некоторую установочную работу для механизма виртуальных методов. Более того, конструктор должен вызываться перед вызовом любого виртуального метода. Вызов виртуального метода без предварительного вызова конструктора может привести к блокированию системы, а у компилятора нет способа проверить порядок вызова методов.

Каждый экземпляр объекта должен инициализироваться отдельно вызовом конструктора. Недостаточно инициализировать один экземпляр объекта и затем присваивать этот экземпляр другим.}

constructor TCoord.Init;

begin

x:=ax;

y:=ay;

end;

type TPixel=object (TCoord) {дочерний объект , объекта TCoord }

color:integer; {новое свойство дочернего объекта}

constructor Init (ax,ay:integer;acolor:integer);

procedure Draw; {метод - рисование}

end;

constructor TPixel.Init; {реализационная часть нового объекта}

begin

inherited Init (ax,ay);{позволяет вызывать методы предка без указания имени типа предка и точки. Это очень пригодиться при использовании большой иерархии, когда запомнить все связи типа «предок-потомок» невозможно.}

color:=acolor;

end;

procedure TPixel.Draw;

begin

putpixel(x,y,color);{закрашивает пиксель с заданными координатами в цвет color}

end;

type TLine=object (TCoord)

l:integer;

constructor Init (ax,ay:integer;al:integer);

procedure Draw; virtual;

end;

constructor TLine.init;

begin

inherited init(ax,ay);

l:=al;

end;

procedure TLine.Draw;

begin

line (x,y,x+round(l/sqrt(2)),y+round(l/sqrt(2)));

end;

type TPline=object (TLine) {пересечение линий}

constructor Init(ax,ay,al:integer);

procedure Draw;virtual;

end;

constructor TPLine.Init;

begin

inherited init(ax,ay,al);

end;

procedure TPline.Draw;

begin

line (x,y,x+round(l/sqrt(2)),y+round(l/sqrt(2)));

line (x+round(l/sqrt(2)),y,x,y+round(l/sqrt(2)));

end;

var a:Tline;

b:TPLine;

c:TPixel;

gd,gm:integer;

begin

gd:=detect;

initgraph(gd,gm,'');

a.init(100,100,50);

a.Draw;

b.init(200,200,50);

b.draw;

c.init(300,300,5);

c.draw;

readln;

closegraph; end.

3. Задачи, для самостоятельного решения

Задача 1. Построить иерархию объектов. Последовательно отобразить объекты, сдвинуть, изменить размеры, спрятать:

Координаты - точка - горизонтальная линия - горизонтально-вертикальное перекрестье.

Задача 2. Построить иерархию объектов. Последовательно отобразить объекты, сдвинуть, изменить размеры, спрятать:

Координаты - точка - наклонная под углом 45 градусов линия - наклонное перекрестье.

Задача 3. Построить иерархию объектов. Последовательно отобразить объекты, сдвинуть, изменить размеры, спрятать:

Координаты - точка - окружность - дуга (процедура Arc).

Задача 4. Построить иерархию объектов. Последовательно отобразить объекты, сдвинуть, изменить размеры, спрятать:

Координаты - точка - эллипс (процедура FillEllipse) - эллиптическая дуга (процедура Ellipse).

Задача 5. Построить иерархию объектов. Последовательно отобразить объекты, сдвинуть, изменить размеры, спрятать:

Координаты - точка - окружность - сектор (процедура PieSlise).

Задача 6. Построить иерархию объектов. Последовательно отобразить объекты, сдвинуть, изменить размеры, спрятать:

Координаты - точка - сектор (процедура PieSlise) - эллиптическая дуга (процедура Ellipse).

Задача 7. Построить иерархию объектов. Последовательно отобразить объекты, сдвинуть, изменить размеры, спрятать:

Координаты - точка - прямоугольник (процедура Rectangle) - трехмерная полоса (процедура Bar3D).

Задача 8. Построить иерархию объектов. Последовательно отобразить объекты, сдвинуть, изменить размеры, спрятать:

Координаты - точка - заштрихованный эллипс (процедура FillEllipse) - заштрихованный сектор (процедура Sector).

Задача 9. Построить иерархию объектов. Последовательно отобразить объекты, сдвинуть, изменить размеры, спрятать:

Координаты - точка - окружность - заштрихованный сектор (процедура Sector).

Задача 10. Построить иерархию объектов. Последовательно отобразить объекты, сдвинуть, изменить размеры, спрятать:

Координаты - точка - окружность - эллиптическая дуга (процедура Ellipse).

Задача 11. Простые объекты.

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

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