
- •1.2.Объект и инкапсуляция
- •1.3. Иерархия объектов и наследование
- •1.5. Виртуальные методы и полиморфизм
- •Interface
- •X,y : Integer;
- •Visible : Boolean;
- •Implementation
- •Var Temp : Word;
- •Var Temp : Word;
- •2. Демонстрационные примеры
- •X,y:integer;
- •3. Задачи, для самостоятельного решения
- •Задача 12. Простые объекты.
- •Задача 14. Простые объекты.
- •Задача 15. Простые объекты.
- •Задача 20. Простые объекты.
- •Задача 21. Простые объекты.
- •Задача 22. Простые объекты.
- •Задача 23. Простые объекты.
- •Задача 25. Простые объекты.
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. Простые объекты.
Описать объект, включающий заданные поля и методы. Написать программу, которая создает массив объектов и содержит процедуры, работающие с указанными структурами.
Объект - слово. Параметры: текст, длина. Методы: конструктор, определяющий поле текста и длину, и процедура, определяющая количество гласных букв. Определить процент гласных букв в предложении.