pascalabcnet/TestSuite/CompilationSamples/ClassConstructor.pas
Бондарев Иван e6e67c193c initial commit
2015-05-14 21:35:07 +02:00

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.