2015-12-28 14:25:15 +03:00
|
|
|
|
// Иллюстрация использования статических (классовых) конструкторов
|
2015-05-14 22:35:07 +03:00
|
|
|
|
type
|
|
|
|
|
|
Person = class
|
|
|
|
|
|
private
|
2015-12-28 14:25:15 +03:00
|
|
|
|
class arr: array of Person; // Классовое поле. Связано не с переменной класса, а с классом.
|
2015-05-14 22:35:07 +03:00
|
|
|
|
name: string;
|
|
|
|
|
|
age: integer;
|
|
|
|
|
|
public
|
2015-12-28 14:25:15 +03:00
|
|
|
|
class constructor; // Конструктор класса. Вызывается до создания первого объекта класса и до вызова любого классового метода
|
2015-05-14 22:35:07 +03:00
|
|
|
|
begin
|
2015-12-28 14:25:15 +03:00
|
|
|
|
writeln(' Вызван классовый конструктор');
|
2015-05-14 22:35:07 +03:00
|
|
|
|
SetLength(arr,3);
|
2015-12-28 14:25:15 +03:00
|
|
|
|
arr[0] := new Person('Иванов',20);
|
|
|
|
|
|
arr[1] := new Person('Петрова',19);
|
|
|
|
|
|
arr[2] := new Person('Попов',35);
|
2015-05-14 22:35:07 +03:00
|
|
|
|
end;
|
|
|
|
|
|
constructor (n: string; a: integer);
|
|
|
|
|
|
begin
|
|
|
|
|
|
name := n;
|
|
|
|
|
|
age := a;
|
|
|
|
|
|
end;
|
|
|
|
|
|
function ToString: string; override;
|
|
|
|
|
|
begin
|
2015-12-28 14:25:15 +03:00
|
|
|
|
Result := Format('Имя: {0} Возраст: {1}',name,age);
|
2015-05-14 22:35:07 +03:00
|
|
|
|
end;
|
2015-12-28 14:25:15 +03:00
|
|
|
|
class function RandomPerson: Person; // Классовый метод. Может обращаться только к классовым полям
|
2015-05-14 22:35:07 +03:00
|
|
|
|
begin
|
|
|
|
|
|
Result := arr[Random(3)];
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
begin
|
2015-12-28 14:25:15 +03:00
|
|
|
|
writeln('Случайные персоны');
|
2015-05-14 22:35:07 +03:00
|
|
|
|
for var i:=1 to 5 do
|
2015-12-28 14:25:15 +03:00
|
|
|
|
writeln(Person.RandomPerson); // Вызов классового метода
|
2015-05-14 22:35:07 +03:00
|
|
|
|
end.
|