Понятия класса и объекта
Объекный тип (класс) представляет собой объединение данных и правил их преобразования. Переменные объектного типа называются экземплярами класса или просто объектами. Класс – это тип объекта; объект – это конкретный экземпляр класса. Гради Буч: «Каждый объект является экземпляром какого-либо класса, а класс может порождать любое количество объектов».
Классом в языке Object Pascal называется особая структура, которая может иметь в своем составе поля, методы и свойства.
type
TMyObject = class(TObject)
MyField : integer;
function MyMethod : integer;
property MyProp : integer read GetMyField write SetMyField;
end;
Класс -родитель Полей Метод Свойство
type
CoordType = record
XCoord : integer;
YCoord : integer;
end;
TLocation = class(TObject)
XCoord, YCoord : integer;
procedure SetCoord(CoordRee : CoordType);
end;
…
procedure TLocation.SetCoord(CoordRee : CoordType);
begin
with CoordRee do
begin
Self.XCoord := XCoord;
Self.YCoord := YCoord;
end;
end;
Конструкторы и деструкторы
В Object Pascal экземпляры классов могут быть только динамическими.
Конструктор представляет собой метод класса, который облегчает программам инициализацию элементов данных класса. Деструктор – метод класса, освобождающий память после объекта.
Конструктор возвращает имя объекта, деструктор не имеет возвращаемого значения.
Пример:
type
TMyObject = class(TObject)
MyField : integer;
construcror Create;
destructor Destroy;
Function MyMethod : integer;
end;
Ключевое слово Inherited используется, чтобы использовать родительский конструктор или метод деструктора, как соответствующий для текущего класса. Оно вызывается в начале конструктора, и в конце деструктора. Это не является обязательным, но рекомендуется.
Без параметров Inherited вызывает так же названный метод родительского класса, с теми же самыми параметрами. § constructor TMyObject.Create; § begin § inherited Create; § … § end;
Деструкторы имеет смысл отдельно описывать, если в качестве полей используются динамические массивы, ДСД, файлы и т.д. Конструкторы и деструкторыl Пример: type TPerson = class Name: string; AgeMin, Age: word; procedure SetYear(Value: word); constructor Create(Name1: string, Age1: word); destructor Destroy; // указывать необязательно end; … constructor TРerson.Create (Name1: string, Age1: word); begin inherited; Age:=Age1; Name:=Name1; end;
Конструкторы и деструкторы Инициализация полей, выделение памяти под поля- массивы, ассоциирование и открытие файлов…Понятие объекта Объект обладает состоянием, поведением и идентичностью; структура и поведение схожих объектов определяет общий для них класс; термины "экземпляр класса" и "объект" взаимозаменяемы.Понятие объекта l Чтобы использовать новый тип в программе нужно как минимум объявить переменную этого типа. Переменная объектного типа называется экземпляром класса, или объектом: var AMyObject : TMyObject; Begin AMyObject := TMyObject.Create; {действия с созданным объектом:}AMyObject.MyField := 100; S := AMyObject.MyMethod; … AMyObject.Destroy; // или AMyObject.Free; …
30.