Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ОписаниС языка PascalABC.NETΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 20

Автор W Cat

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ dll (dynamically linked libraries):

* содСрТат Π³Ρ€ΡƒΠΏΠΏΡƒ взаимосвязанных ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

* находятся Π² ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅

* ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для обращСния ΠΊ Π½ΠΈΠΌ ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

Они находятся Π² Ρ„Π°ΠΉΠ»Π΅ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .dll Π»ΠΈΠ±ΠΎ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ прилоТСния (Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅), Π»ΠΈΠ±ΠΎ Π² систСмном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ (Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ). Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ нСсколько ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

По своСму Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΈΠΌΠ΅ΡŽΡ‚ ряд Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ.

ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

* ΠŸΡ€ΠΈ создании ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ исполняСмого Ρ„Π°ΠΉΠ»Π° .exe ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-Π»ΠΈΠ½ΠΊΠΎΠ²Ρ‰ΠΈΠΊ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π² Π½Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ‚ΠΈΠΏΡ‹ ΠΈ константы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ (Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ) Π² основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠŸΡ€ΠΈ компиляции ΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² Π½Π΅Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ всС ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ нСизвСстно, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ.

* Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ .dll ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ.

* Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ .dll часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ нСсколькими ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ.

* Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° .dll ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написана ΠΈ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° ΠΎΠ΄Π½ΠΎΠΌ языкС, Π° ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках. НапримСр, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° PascalABC.NET ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, созданной Π½Π° языкС C# ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΠΎΡ‚. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΌΠ΅ΠΆΡŠΡΠ·Ρ‹ΠΊΠΎΠ²ΠΎΠ΅ взаимодСйствиС.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ


Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ практичСски Ρ‚Ρƒ ΠΆΠ΅ структуру, Ρ‡Ρ‚ΠΎ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ:

library имя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ;

interface

Ρ€Π°Π·Π΄Π΅Π» интСрфСйса

implementation

Ρ€Π°Π·Π΄Π΅Π» Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

end.

Имя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ pas-Ρ„Π°ΠΉΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° находится.

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ синтаксис Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ - Π±Π΅Π· Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² интСрфСйса ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ с ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΌ синтаксисом ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°).

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ компиляции Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ создаётся .dll-Ρ„Π°ΠΉΠ», содСрТащий ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΊ основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

Для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΊ основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° компилятора {$reference Π˜ΠΌΡΠ‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ}. НапримСр:

{$reference ABC.dll}

{$reference ABC1.dll}

begin

writeln(a.GetType);

end.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² любом мСстС исходного Ρ„Π°ΠΉΠ»Π°.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ABC ΠΈ ABC1 ΠΈΠΌΠ΅ΡŽΡ‚ соотвСтствСнно Π²ΠΈΠ΄:

library ABC;

var a: integer;

end.

ΠΈ

library ABC1;

var a: real;

end.

Алгоритм поиска ΠΈΠΌΠ΅Π½ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ имя ищСтся Π² исходном ΠΌΠΎΠ΄ΡƒΠ»Π΅, Π·Π°Ρ‚Π΅ΠΌ Π² модулях, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ uses Π² порядкС справа Π½Π°Π»Π΅Π²ΠΎ, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ - Π² ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… Π² порядкС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

Богласно этому ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° пСрСмСнная a Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ integer.

Π’ случаС ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ ΠΈΠΌΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ имя ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ:

{$reference ABC.dll}

{$reference ABC1.dll}

begin

writeln(ABC1.a.GetType);

end.

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

МоТно ΠΏΠΎΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΈΠΌΠ΅Π½Π° классов, Ρ‚ΠΈΠΏΠΎΠ², констант ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ коммСнтариями. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‚ Π² подсказках Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ курсора ΠΌΡ‹ΡˆΠΈ Π½Π° слово, ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ скобки послС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ поля ΠΈΠ· списка ΠΏΠΎΠ»Π΅ΠΉ, Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ послС ΠΈΠΌΠ΅Π½ΠΈ. БистСма Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… подсказок Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Intellisense.

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ располагаСтся Π½Π° строчкС, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅ΠΌΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, ΠΈ начинаСтся с символов ///. НапримСр:

const

/// ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° Pi

Pi = 3.14;

type

/// TTT - синоним Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°

TTT = integer;

/// Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ класса XXX

XXX = class

end;

/// Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ p

procedure p(a : integer);

begin

end;

var

/// Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ t1

t1: TTT;

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ нСсколько строк, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с /// . Для коммСнтирования ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ///-, Ρ‚ΠΎΠ³Π΄Π° Π΅Π³ΠΎ содСрТимоС мСняСт Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² подсказкС ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ курсора ΠΌΡ‹ΡˆΠΈ. НапримСр:

///- Exclude(var s : set of T; el : T)

///УдаляСт элСмСнт el ΠΈΠ· мноТСства s

procedure Exclude(var s: TypedSet; el: object);

Если пСрвая строка Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ коммСнтария ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄ ///--, Ρ‚ΠΎ подсказка Π½Π΅ всплываСт. Π­Ρ‚ΠΎ дСлаСтся для элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хочСтся ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΡ‚ систСмы Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… подсказок.

ΠšΠ»Π°ΡΡΡ‹

ΠžΠ±Π·ΠΎΡ€ классов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

ОписаниС классов

Класс прСдставляСт собой составной Ρ‚ΠΈΠΏ, состоящий ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…), ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ) ΠΈ свойств. ОписаниС класса ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

type

имя класса = class

сСкция1

сСкция2

...

end;

КаТдая сСкция ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа

описания полСй

объявлСния ΠΈΠ»ΠΈ описания ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ описания свойств

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ сСкции ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΡ€ΠΈ этом подразумСваСтся ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ internal (Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π²ΡΡŽΠ΄Ρƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ сборки).

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ, Ρ‚Π°ΠΊ ΠΈ Π²Π½Π΅ класса. ΠŸΡ€ΠΈ описании ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ класса Π΅Π³ΠΎ имя прСдваряСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ класса с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. НапримСр:

type

Person = class

private

fName: string;

fAge: integer;

public

constructor Create(Name: string; Age: integer);

begin

fName := Name;

fAge := Age;

end;

procedure Print;

property Name: string read fName;

property Age: integer read fAge;

end;

procedure Person.Print;

begin

writelnFormat('Имя: {0} Возраст: {1}', Name, Age);

end;

ПослС слова class Π² скобках ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΎ имя класса-ΠΏΡ€Π΅Π΄ΠΊΠ° (см. НаслСдованиС), Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ список ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… интСрфСйсов.

ΠŸΠ΅Ρ€Π΅Π΄ словом class ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово final Π² этом случаС ΠΎΡ‚ класса Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ.

ВсС описания ΠΈ объявлСния Π²Π½ΡƒΡ‚Ρ€ΠΈ класса ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Ρ‚Π΅Π»ΠΎ класса. Поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ интСрфСйс класса. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΠ»Π΅ΠΉ описаны здСсь.

ΠšΠ»Π°ΡΡΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° глобальном ΡƒΡ€ΠΎΠ²Π½Π΅. Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ опрСдСлСния классов (Ρ‚.Π΅. опрСдСлСния Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ описания ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ) Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Ρ‹.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° класс

Π’ языкС PascalABC.NET классы ΡΠ²Π»ΡΡŽΡ‚ΡΡ ссылочными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ пСрСмСнная Ρ‚ΠΈΠΏΠ° класс Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° класс Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈΠ»ΠΈ экзСмплярами класса. Они ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ конструктора класса - ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ Π΅Π³ΠΎ поля:

var p: Person := new Person('Иванов',20);

ПослС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° класс ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ Ρ‡Π»Π΅Π½Π°ΠΌ класса (полям, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, свойствам), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΡƒΡŽ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ:

Print(p.Name,p.Age);

p.Print;

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° класс

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° write для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° класс Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ содСрТимоС Π΅Ρ‘ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ ΠΈ свойств Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ:

write(p); // Иванов 20

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π² классС слСдуСт ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ToString класса Object - Π² этом случаС ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

НапримСр:

type

Person = class

...

function ToString: string; override;

begin

Result := string.Format('Имя: {0} Возраст: {1}', Name, Age);

end;

end;

...

var p: Person := new Person('Иванов',20);

writeln(p); // Имя: Иванов Возраст: 20

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ‚ΠΈΠΏΠ° класс являСтся ссылкой ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, создаваСмый Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ конструктора.

Как ссылка пСрСмСнная Ρ‚ΠΈΠΏΠ° класс ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ nil:

p := nil;

...

if p = nil then ...

ΠŸΡ€ΠΈ присваивании ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° класс копируСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ссылка. ПослС присваивания ΠΎΠ±Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° класс Π±ΡƒΠ΄ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ совмСстно ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ:

var p1,p2: Person;

...

p1 := new Person('ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²',20);

p2 := p1;

p1.IncAge;

p2.Print; // Имя: ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² Возраст: 21

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° равСнство

ΠŸΡ€ΠΈ сравнСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° класс Π½Π° равСнство ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ссылки, Π° Π½Π΅ значСния.

var p1 := new Person('ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²',20);

var p2 := new Person('ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²',20);

writeln(p1=p2); // False

p2 := p1;

writeln(p1=p2); // True

Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ = для класса.

Π’ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‡Π»Π΅Π½ΠΎΠ² класса ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа

КаТдоС ΠΏΠΎΠ»Π΅, ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ свойство класса ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚) доступа, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π΅Π³ΠΎ видимости. Π’ PascalABC.NET ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π²ΠΈΠ΄Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² доступа: public (ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ), private (Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ), protected (Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ) ΠΈ internal (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ). К Ρ‡Π»Π΅Π½Ρƒ класса, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΌΡƒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ public, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΈΠ· любого мСста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Π»Π΅Π½Ρ‹ класса с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ private доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² этого класса, Ρ‡Π»Π΅Π½Ρ‹ класса с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ protected доступны Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² этого класса ΠΈ всСх Π΅Π³ΠΎ подклассов, Ρ‡Π»Π΅Π½Ρ‹ класса с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ internal доступны Π²Π½ΡƒΡ‚Ρ€ΠΈ сборки (Ρ‚Π΅Ρ€ΠΌΠΈΠ½ .NET, сборка Π² нашСм ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ - это мноТСство Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ .exe ΠΈΠ»ΠΈ .dll-Ρ„Π°ΠΉΠ»Π°). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, private ΠΈ protected Ρ‡Π»Π΅Π½Ρ‹ Π²ΠΈΠ΄Π½Ρ‹ ΠΎΡ‚ΠΎΠ²ΡΡŽΠ΄Ρƒ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… модуля, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ класс.