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

17 Вопрос

Реализация объектной модели на языке Object Pascal

Классы и объекты

В объектном подходе программирование представляет собой совокупность взаимодействующих объектов, каждый из которых входит в классы – совокупность однотипных объектов, обладающих одинаковыми свойствами (полями) и поведением, кот. Реализуется с помощью методов.

Любой класс имеет тип, набор полей – свойств, приписанных каждому объекту множества, методы.

Пусть есть сущность – мат. точка, её нужно абстрагировать с помощью какого-то класса. Тогда абстракцией точки являются координаты х, у, цвет. Она должна 1.уметь саму себя рисовать, 2.находить, как далеко она лежит от начала координат; 1 и 2 – это методы.

Записью называется имя + поле + объект, обладающий некоторым набором свойств.

Program point;

Type TPoint = class – объявление типа данных «Класс»

X,Y : Real; CL: Tcolor – свойства объекта (поля)

Procedure Draw;

Function R( ):real;

End;

Begin

Procedure TPoint.Draw;

Begin

Pixels[TPoint.X, TPoint.Y]:=TPoint.Cl;

End;

Function TPoint.R:real;

Begin

Result:=sqrt(sqr(TPoint.X)+sqr(TPoint,Y));

End;

Нарисовать звёздное небо:

Var zv:array[1..1000] of TPoint; i:integer;

Begin

For i:1 to 1000 do begin

Zv[i].X:=random(800);

Zv[i].Y:=random(600);

Zv[i].Cl:=RGB(random(255), random(255), random(255));

Zv[i].draw;

End;

Минимальное расстояние от начала координат:

Min:=Zv[i].R; i_min:=1;

For i:=2 to 1000 do

Begin

If (min<zv[i].R) then begin

Min:=z[i]; i_min:=I;

End;

End;

18 Вопрос

Реализация принципа наследования

Полиморфизм

1.Из точки сделать отрезок:

У точки: x, y(координаты) и с(цвет)

Процедуры: draw;

У отрезка: : x, y(координаты) и с(цвет) + х1, у1

Процедуры: draw; ;L

Линия – наследник точки, она наследует структуру с некоторыми дополнениями и некоторые методы.

Program Line;

Type TPoint = class – объявление типа данных «Класс»

X,Y : Real; CL: Tcolor – свойства объекта (поля)

TLine= class (TPoint);

Procedure Draw; override;

Function L( ):real;

End;

Полиморфизм - это когда у разных объектов методы называются одинаково, но, за счёт ключевых слов, методы различны

Procedure TLine.Draw; override;

Begin

PenColor:=TLineCl;

MoveTo(TLine.X,TLine.Y);

LineTo(TLine.X1,TLineY1);

Function TLine.L:real;

Begin

Result:=sqrt(sqr(TLine.X-TLine.X1)+sqr(TLine.Y-TLine.Y1));

End;

19.Конструкторы и деструкторы классов. Синтаксис, пример применения.

Конструкторы создают объект данного класса и инициализируют его поля.

Деструкторы освобождают память из-под объекта данного класса и уничтожают его.

Для описания конструкторов и деструкторов созданы особые ключевые слова, так как требуется спецификатор работы с памятью/

Type Tpoint = class;

X,y:real;

C:Tcolor;

Constructor Create (xx,yy:real; cc:Tcolor);

Procedure Draw;

Destructor Destroy;

End;

Destructor Destroy является стандартным в objectPascal, его прописывать необязательно

Constructor TPoint.Create(xx,yy:real; cc:Tcolor);

Begin

TPoint.X:=xx;

TPoint.Y:=yy;

TPoint.C:=cc;

End;

Если полями класса являются динамические массивы, нужно выделять память

Используем конструктор, если перед началом работы класса требуется совершить какие-то действия

Var P:Tpoint;

Begin

P:=TPoint.create (100,500,RGB(0,0,0)); В памяти будет создан объект типа TPoint, чёрного цвета, с координатами х=100, у=500.

P.X:= …

P.Draw;

P.Destroy;

End;

Если в качестве поля класса используется файл, то Destroy нужно использовать