- •Определение. История
- •Этапы разработки программы
- •Состав языка Pascal
- •Типы данных в Pascal
- •Операции над переменными целого типа
- •Операции кроме div и mod
- •16 Вопрос
- •17 Вопрос
- •18 Вопрос
- •19.Конструкторы и деструкторы классов. Синтаксис, пример применения.
- •Свойства
- •20.Зоны видимости полей и методов. Понятие «свойства» класса.
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 нужно использовать
