36 lines
1.1 KiB
ObjectPascal
36 lines
1.1 KiB
ObjectPascal
// Èëëþñòðàöèÿ èñïîëüçîâàíèÿ ñòàòè÷åñêèõ (êëàññîâûõ) êîíñòðóêòîðîâ
|
|
type
|
|
Person = class
|
|
private
|
|
class arr: array of Person; // Êëàññîâîå ïîëå. Ñâÿçàíî íå ñ ïåðåìåííîé êëàññà, à ñ êëàññîì.
|
|
name: string;
|
|
age: integer;
|
|
public
|
|
class constructor; // Êîíñòðóêòîð êëàññà. Âûçûâàåòñÿ äî ñîçäàíèÿ ïåðâîãî îáúåêòà êëàññà è äî âûçîâà ëþáîãî êëàññîâîãî ìåòîäà
|
|
begin
|
|
writeln(' Âûçâàí êëàññîâûé êîíñòðóêòîð');
|
|
SetLength(arr,3);
|
|
arr[0] := new Person('Èâàíîâ',20);
|
|
arr[1] := new Person('Ïåòðîâà',19);
|
|
arr[2] := new Person('Ïîïîâ',35);
|
|
end;
|
|
constructor (n: string; a: integer);
|
|
begin
|
|
name := n;
|
|
age := a;
|
|
end;
|
|
function ToString: string; override;
|
|
begin
|
|
Result := Format('Èìÿ: {0} Âîçðàñò: {1}',name,age);
|
|
end;
|
|
class function RandomPerson: Person; // Êëàññîâûé ìåòîä. Ìîæåò îáðàùàòüñÿ òîëüêî ê êëàññîâûì ïîëÿì
|
|
begin
|
|
Result := arr[Random(3)];
|
|
end;
|
|
end;
|
|
|
|
begin
|
|
writeln('Ñëó÷àéíûå ïåðñîíû');
|
|
for var i:=1 to 5 do
|
|
writeln(Person.RandomPerson); // Âûçîâ êëàññîâîãî ìåòîäà
|
|
end. |