ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΠΎΠ»Π΅, ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ (Π°ΡΡΠΈΠ±ΡΡ) Π΄ΠΎΡΡΡΠΏΠ°, Π·Π°Π΄Π°ΡΡΠΈΠΉ ΠΏΡΠ°Π²ΠΈΠ»Π° Π΅Π³ΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ. Π PascalABC.NET ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ΅ΡΡΡΠ΅ Π²ΠΈΠ΄Π° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ°: public (ΠΎΡΠΊΡΡΡΡΠΉ), private (Π·Π°ΠΊΡΡΡΡΠΉ), protected (Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠΉ) ΠΈ internal (Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ). Π ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ°, ΠΈΠΌΠ΅ΡΡΠ΅ΠΌΡ Π°ΡΡΠΈΠ±ΡΡ public, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΈΠ· Π»ΡΠ±ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ private Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ protected Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²Π½ΡΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ internal Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²Π½ΡΡΡΠΈ ΡΠ±ΠΎΡΠΊΠΈ (ΡΠ΅ΡΠΌΠΈΠ½ .NET, ΡΠ±ΠΎΡΠΊΠ° Π² Π½Π°ΡΠ΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ - ΡΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ .exe ΠΈΠ»ΠΈ .dll-ΡΠ°ΠΉΠ»Π°). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, private ΠΈ protected ΡΠ»Π΅Π½Ρ Π²ΠΈΠ΄Π½Ρ ΠΎΡΠΎΠ²ΡΡΠ΄Ρ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΌΠΎΠ΄ΡΠ»Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠ»Π°ΡΡ.
Π’Π΅Π»ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΄Π΅Π»ΠΈΡΡΡ Π½Π° ΡΠ΅ΠΊΡΠΈΠΈ. Π Π½Π°ΡΠ°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄ΠΎΡΡΡΠΏΠ°, ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ΄ΡΡ ΠΏΠΎΠ»Ρ, Π° Π·Π°ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° Ρ Π΄ΠΎΡΡΡΠΏΠΎΠΌ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠΌ ΡΡΠΈΠΌ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ. Π ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ, Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ internal. Π ΠΊΠ»Π°ΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΊΡΠΈΠΉ, ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΠΈΡ ΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΡΡΡ Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅:
type
A = class
private
x: integer;
protected
a: integer;
public
constructor Create(xx: integer)
begin
x := xx; // Π²Π΅ΡΠ½ΠΎ, Ρ.ΠΊ. Π²Π½ΡΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π΅Π³ΠΎ Π·Π°ΠΊΡΡΡΠΎΠΌΡ ΠΏΠΎΠ»Ρ x
a := 0; // Π²Π΅ΡΠ½ΠΎ
end;
;
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΆΠ΅ ΠΊΠΎΠ΄ ΠΏΡΡΡΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅: type
B = class(A)
public
procedure print;
begin
writeln(a); // Π²Π΅ΡΠ½ΠΎ, Ρ.ΠΊ. a - Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅
writeln(x); // Π½Π΅Π²Π΅ΡΠ½ΠΎ, Ρ.ΠΊ. Ρ - Π·Π°ΠΊΡΡΡΠΎΠ΅ ΠΏΠΎΠ»Π΅
end;
end;
...
var b1: B := new B(5);
...
writeln(b1.x); // Π½Π΅Π²Π΅ΡΠ½ΠΎ, Ρ.ΠΊ. Ρ - Π·Π°ΠΊΡΡΡΠΎΠ΅ ΠΏΠΎΠ»Π΅
writeln(b1.a); // Π½Π΅Π²Π΅ΡΠ½ΠΎ, Ρ.ΠΊ. a - Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅
b1.print; // Π²Π΅ΡΠ½ΠΎ, Ρ.ΠΊ. print - ΠΎΡΠΊΡΡΡΡΠΉ ΠΌΠ΅ΡΠΎΠ΄
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠ΅ΠΊΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π²Π΅ΡΠ½ΠΎΠ΅ ΠΈ Π½Π΅Π²Π΅ΡΠ½ΠΎΠ΅ Π² ΡΠΌΡΡΠ»Π΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΏΠΎΠ»ΡΠΌ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ.
ΠΠ΅ΡΠΎΠ΄Ρ
ΠΠ΅ΡΠΎΠ΄Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠΈ. ΠΡΠΎΠ±ΡΠΌΠΈ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ, Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Π²Π°ΡΡ ΠΊΠ°ΠΊ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° (ΡΡΠΈΠ»Ρ Java, C#, C++), ΡΠ°ΠΊ ΠΈ Π²Π½Π΅ ΠΊΠ»Π°ΡΡΠ° (ΡΡΠΈΠ»Ρ Delphi, C++). ΠΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Π²Π½Π΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠ»Π°ΡΡΠ° Π΅Π³ΠΎ ΠΈΠΌΡ ΠΏΡΠ΅Π΄Π²Π°ΡΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
type
Rectangle = class
x1,y1,x2,y2: integer;
constructor Create(xx1,yy1,xx2,yy2: integer);
begin
x1 := xx1; x2 := xx2;
y1 := yy1; y2 := yy2;
end;
function Square: integer;
end;
function Rectangle.Square: integer;
begin
Result := abs(x2-x1) * abs(y2-y1);
end;
ΠΠ±ΡΡΠ½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΊΠ»Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠΎ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ Π»ΠΈΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠ° Π΄Π°ΡΡ Π² ΡΠ΅ΠΊΡΠΈΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ.
ΠΠ΅ΡΠΎΠ΄Ρ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΠΊΠ»Π°ΡΡΠΎΠ²ΡΠ΅ ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ½ΡΠ΅. ΠΠ»Π°ΡΡΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π² .NET Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° class. ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ-ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ°. ΠΠ»Π°ΡΡΠΎΠ²ΡΠ΅ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ°; ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ Π² Π²ΠΈΠ΄Π΅:
ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ°.ΠΈΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Π°(ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ)
ΠΠ½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΏΠΎΠ»ΡΠΌ ΠΊΠ»Π°ΡΡΠ°, Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠ»Π°ΡΡΠΎΠ²ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ. ΠΠ°ΠΏΡΠΎΡΠΈΠ², ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²ΡΠΉ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
type
Rectangle = class
...
class procedure Move(var r: Rectangle; dx,dy: integer);
begin
r.x1 += dx; r.x2 += dx;
r.y1 += dy; r.y2 += dy;
end;
end;
...
var r := new Rectangle(10,10,100,100);
Rectangle.Move(r,5,5);
ΠΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ, ΠΊΠ»Π°ΡΡΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π½ΠΎ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ°, ΡΡΠΎ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ ΡΡΠΈΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ. ΠΠ»Π°ΡΡ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΡΡΡΠΏΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠ»ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½.
ΠΠ΅ΡΠ΅Π΄ΠΊΠΎ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΊΠ»Π°ΡΡΡ, ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΡΠΎΡΡΠΎΡΡΠΈΠ΅ ΠΈΠ· ΠΊΠ»Π°ΡΡΠΎΠ²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². Π’Π°ΠΊΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ»Π°ΡΡ System.Math, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΠΏΠΎΠ»Π΅ΠΉ
ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΅Π³ΠΎ ΠΏΠΎΠ»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½ΡΠ»Π΅Π²ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΡΠ²Π½ΠΎ. ΠΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡΡ ΠΊΠ°ΠΊ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅, ΡΠ°ΠΊ ΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ»Ρ ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΊΠΎΠ΄ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² Π½Π°ΡΠ°Π»ΠΎ ΠΠ‘ΠΠ₯ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
type
A = class
private
x: integer := 1;
y: integer;
l := new List<integer>;
public
constructor Create(xx,yy: integer);
begin
x := xx;
y := yy;
end;
constructor Create;
begin
end;
end;
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠ΄ x:=1; l := new List<integer> Π²ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² Π½Π°ΡΠ°Π»ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ
ΠΠ±ΡΠ΅ΠΊΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌΠΈ.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ»Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΡΠΎΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠ°Π·Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΈΠΏΠ° ΠΊΠ»Π°ΡΡ. ΠΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π²ΠΌΠ΅ΡΡΠΎ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° function ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ constructor. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
type
Person = class
private
nm: string;
ag: integer;
public
constructor Create(name: string; age: integer);
end;
...
constructor Person.Create(name: string; age: integer);
begin
nm := name;
ag := age;
end;
Π PascalABC.NET ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΠΈΠΌΡ Create. ΠΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΡΠΊΠ°ΡΡ Π΅Π³ΠΎ ΠΈΠΌΡ:
type
Person = class
constructor (name: string; age: integer);
begin
nm := name;
ag := age;
end;
end;
Π ΡΠΈΠ»Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ² Π² .NET Π² PascalABC.NET Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ). ΠΡΠΎΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΠΏΠΎΠ»Ρ Π½ΡΠ»Π΅Π²ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ (ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ - ΠΏΡΡΡΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ - Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ False).
ΠΠ»Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π°.
1 ΡΠΏΠΎΡΠΎΠ±. Π ΡΡΠΈΠ»Π΅ Object Pascal.
ΠΠ»Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ°, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΡΠΊΠ°-ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ, ΠΈΠΌΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
var p: Person;
p := Person.Create('ΠΠ²Π°Π½ΠΎΠ²',20);
2 ΡΠΏΠΎΡΠΎΠ±. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ new - Π² ΡΡΠΈΠ»Π΅ C# (ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ).
var p: Person;
p := new Person('ΠΠ²Π°Π½ΠΎΠ²',20);
ΠΠ΅ΡΡΡΡΠΊΡΠΎΡ Π² Object Pascal - ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°, ΡΠ½ΠΈΡΡΠΎΠΆΠ°ΡΡΠ°Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡΠ°Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠ°ΠΌΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π·Π°Π½ΠΈΠΌΠ°Π». ΠΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ° Π²ΠΌΠ΅ΡΡΠΎ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° procedure ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ destructor.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
destructor Destroy;
begin
...
end;
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² PascalABC.NET ΠΏΠ°ΠΌΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ°, Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ Π² PascalABC.NET Π½Π΅ ΠΈΠ³ΡΠ°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠΎΠ»ΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΡΡΠ½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ-ΠΌΠ΅ΡΠΎΠ΄.
ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ²
ΠΠ²Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΡΡΠ³ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ»Π°ΡΡΠΈΠ΅ΡΡ Π΄ΡΡΠ³ Π½Π° Π΄ΡΡΠ³Π°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
type
AAA = class
b: BBB;
end;
BBB = class
a: AAA;
end;
ΠΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΈΠΏ BBB Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠΎΠ»Ρ b Π΅ΡΠ΅ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½. Π ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ° Π² Π²ΠΈΠ΄Π΅
ΠΠΌΡΠΠ»Π°ΡΡΠ° = class;
ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ Π² ΡΠΎΠΉ ΠΆΠ΅ ΡΠ΅ΠΊΡΠΈΠΈ type:
type
BBB = class;
AAA = class
b: BBB;
end;
BBB = class
a: AAA;
end;
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Self
ΠΠ½ΡΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π΅ΡΠ²Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Self, ΡΡΡΠ»Π°ΡΡΠ°ΡΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ, Π²ΡΠ·Π²Π°Π²ΡΠΈΠΉ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
type
A = class
i: integer;
constructor Create(i: integer);
begin