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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 92

Автор Π‘Π΅Ρ€Ρ‚Ρ€Π°Π½ ΠœΠ΅ΠΉΠ΅Ρ€

Π ΠΎΠ΄ΠΎΠ²Ρ‹Π΅ классы

БогласованиС статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ с Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования для классов, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Π΅ структуры, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ стСка, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ:

[x]. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сущности, ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰Π΅ΠΉΡΡ Π² классС стСка, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ сущности, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ элСмСнты стСка.

[x]. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ класс Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π½Π΅ содСрТал Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π½Π°ΠΌΠ΅ΠΊΠΎΠ² Π½Π° Ρ‚ΠΈΠΏ элСмСнта стСка, ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠ³ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для построСния стСков с элСмСнтами ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд эти трСбования каТутся нСсовмСстимыми, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ это Π½Π΅ Ρ‚Π°ΠΊ. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ заставляСт нас ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ. Но вовсС Π½Π΅ трСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΈΠΏ Π² объявлСнии Π±Ρ‹Π» ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ! Назвав имя Ρ‚ΠΈΠΏΠ°, ΠΌΡ‹ ΡƒΠΌΠΈΡ€ΠΎΡ‚Π²ΠΎΡ€ΠΈΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. ("Назови свой страх - ΠΈ ΠΎΠ½ ΡƒΠΉΠ΄Π΅Ρ‚"). Π’ этом идСя унивСрсализации: ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ класс с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΌ Ρ‚ΠΈΠΏ, ΡΠ½Π°Π±Π΄ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½Π°Π·Π²Π°Π² Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ.

ОбъявлСниС Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ класса

По соглашСнию Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ имя G (ΠΎΡ‚ Generic). Π­Ρ‚ΠΎ Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ. Если Π½ΡƒΠΆΠ½Ρ‹ Π΅Ρ‰Π΅ Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Π·Π²Π°Π½Ρ‹ H, I ΠΈ Ρ‚.Π΄.

Богласно синтаксису, Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π° ΠΈΠΌΠ΅Π½Π΅ΠΌ класса, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ синтаксису ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ АВД Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ. НапримСр:


indexing

description: "Π‘Ρ‚Π΅ΠΊ элСмСнтов ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ класса G"

class STACK [G] feature

count: INTEGER

-- ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов Π² стСкС

empty: BOOLEAN is

-- Π•ΡΡ‚ΡŒ Π»ΠΈ элСмСнты?

do ... end

full: BOOLEAN is

-- Π‘Ρ‚Π΅ΠΊ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½?

do ... end

item: G is

-- Π’Π΅Ρ€ΡˆΠΈΠ½Π° стСка

do ... end

put (x: G) is

-- Π’Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ x Π² стСк.

do ... end

remove is

-- Π’Ρ‹Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ элСмСнт ΠΈΠ· стСка.

do ... end

end -- class STACK



Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ G ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡΡ… класса Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (ΠΊΠ°ΠΊ Π² item) ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (ΠΊΠ°ΠΊ Π² put), Π½ΠΎ ΠΈ для Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… сущностСй класса.

ИспользованиС Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ класса

ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ класс для объявлСния собствСнных сущностСй, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΡ… стСк. Π’ этом случаС Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ объявлСния слСдуСт Π·Π°Π΄Π°Ρ‚ΡŒ фактичСский Ρ‚ΠΈΠΏ элСмСнтов стСка - фактичСский Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


sp: STACK [POINT]



Если Ρƒ класса нСсколько Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ‚ΠΎ соотвСтствСнно ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΈ фактичСских ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ фактичСских Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΌΡƒ классу для создания Ρ‚ΠΈΠΏΠ° называСтся Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ (generic derivation), Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ класс, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ STACK [POINT], Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ парамСтричСски ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΌ классом.

Π ΠΎΠ΄ΠΎΠ²ΠΎΠΌΡƒ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ трСбуСтся Ρ‚ΠΈΠΏ, Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ создаСт Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ:

[x]. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ пороТдСния STACK [POINT] являСтся Ρ‚ΠΈΠΏΠΎΠΌ.

[x]. Для получСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² качСствС фактичСского ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° (POINT Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅).

ЀактичСский ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ. Ничто Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сам ΠΏΠΎ сСбС парамСтричСски ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ класс LIST [G], Ρ‚ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ стСк, элСмСнты ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ списками Ρ‚ΠΎΡ‡Π΅ΠΊ:


slp: STACK [LIST [POINT]]



ΠΈΠ»ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ STACK [POINT] ΠΊΠ°ΠΊ фактичСский Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, - стСк стСков Ρ‚ΠΎΡ‡Π΅ΠΊ:


ssp: STACK [STACK [POINT]]



НСт ΠΏΡ€Π΅Π΄Π΅Π»Π° Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ Ρ‚Π°ΠΊΠΈΡ… Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΡ€ΠΎΠΌΠ΅ СстСствСнной нСобходимости ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ простоту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ тСкста.

ВСрминология

ΠžΠ±ΡΡƒΠΆΠ΄Π°Ρ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹.

[x]. ΠŸΡ€ΠΎΡ†Π΅ΡΡ пороТдСния Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ STACK [POINT], ΠΈΠ· Ρ‚ΠΈΠΏΠΎΠ² POINT ΠΈ STACK, ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ созданиСм экзСмпляра Ρ‚ΠΈΠΏΠ° "generic instantiation". Но этот Ρ‚Π΅Ρ€ΠΌΠΈΠ½ ΠΌΠΎΠ³ Π±Ρ‹ ввСсти Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ нСявно прСдполагаСтся процСсс ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° выполнСния ПО. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ - статичСский ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π½Π° тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π½Π΅ Π½Π° Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

[x]. Π’ этой ΠΊΠ½ΠΈΠ³Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ "ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€" ΠΈ "Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚" ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ для ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… классов, Π²Ρ‚ΠΎΡ€ΠΎΠΉ - для ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ программистской Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ‡Π°Ρ‰Π΅ всСго синонимы.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ²

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΌΠΎΠΆΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ структура Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ элСмСнты ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Допустим, класс содСрТит объявлСния:


sc: STACK [CIRCLE]; sa: STACK [ACCOUNT]; c: CIRCLE; a: ACCOUNT.



Π’ΠΎΠ³Π΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… этого класса допустимы ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ инструкции:


sc.put (c) -- Π’Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ ΠΊΡ€ΡƒΠ³ Π² стСк ΠΊΡ€ΡƒΠ³ΠΎΠ²

sa.put (a) -- Π’Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ счСт Π² стСк счСтов

c := sc.item -- Бущности ΠΊΡ€ΡƒΠ³ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ стСка ΠΊΡ€ΡƒΠ³ΠΎΠ².



Но каТдая ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… инструкций нСдопустима ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ€Π³Π½ΡƒΡ‚Π°:


sc.put (a); -- ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°: Π’Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ счСт Π² стСк ΠΊΡ€ΡƒΠ³ΠΎΠ².

sa.put (c); -- ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°: Π’Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ ΠΊΡ€ΡƒΠ³ Π² стСк счСтов.

c:= sa.item -- ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°: Π”Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΠ³Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСта.



Π­Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ вычитания Π΄Π΅Π½Π΅Π³ ΠΈΠ· ΠΊΡ€ΡƒΠ³Π°.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ, Π΄Π΅Π»Π°ΡŽΡ‰Π΅Π΅ допустимым ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΈ нСдопустимым Π²Ρ‚ΠΎΡ€ΠΎΠΉ, ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятно, Π½ΠΎ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ.

Π’Π½Π°Ρ‡Π°Π»Π΅ рассмотрим ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅, Π½Π΅ Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Π΅ классы. ΠŸΡƒΡΡ‚ΡŒ C Ρ‚Π°ΠΊΠΎΠΉ класс. Рассмотрим объявлСниС Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅, СстСствСнно, Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:


f(a:T):U is ...



Π’ΠΎΠ³Π΄Π° Π²Ρ‹Π·ΠΎΠ² Π²ΠΈΠ΄Π° x.f(d), ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ классС B, Π³Π΄Π΅ x Ρ‚ΠΈΠΏΠ° C, Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ, Ρ‚ΠΎΠ³Π΄Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π°:

[x]. f доступСн классу B, - экспортирован всСм классам ΠΈΠ»ΠΈ мноТСству классов, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… B;

[x]. d ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ‚ΠΈΠΏΡƒ T. Если ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ наслСдования, Ρ‚ΠΎ d ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌ T.

[x]. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ U. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдполагаСтся, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ f являСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ C Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ класс с Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ G ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚:


h (a: G): G is...



Π’Ρ‹Π·ΠΎΠ² h ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄ y.h(e), Π³Π΄Π΅ y ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, объявлСнная ΠΊΠ°ΠΊ


y: C [V]



Π’ΠΈΠΏ V - Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ - Π΄Π²ΠΎΠΉΠ½ΠΈΠΊ Π½Π΅Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° - Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ e ΠΈΠΌΠ΅Π»ΠΎ Ρ‚ΠΈΠΏ V ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ наслСдовании Π±Ρ‹Π»ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ V. АналогичноС Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ h.

ВрСбования ΠΏΡ€Π°Π²ΠΈΠ»Π° понятны: V - фактичСский ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ G ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ класса C, поэтому ΠΎΠ½ замСняСт всС вхоТдСния G ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ класса. ВсС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ слСдовали этой ΠΌΠΎΠ΄Π΅Π»ΠΈ: Π²Ρ‹Π·ΠΎΠ² s.put(z) Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° z Ρ‚ΠΈΠΏΠ° POINT, Ссли s Ρ‚ΠΈΠΏΠ° STACK [POINT]; INTEGER Ссли s Ρ‚ΠΈΠΏΠ° STACK [INTEGER]; ΠΈ s.item Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚ΠΈΠΏΠ° POINT Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС ΠΈ Ρ‚ΠΈΠΏΠ° INTEGER Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ сущностями Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°

Π’ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΌ классС C [G, H, ...] рассмотрим ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, Ρ‡Π΅ΠΉ Ρ‚ΠΈΠΏ - ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ x Ρ‚ΠΈΠΏΠ° G. Когда класс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ для объявлСния сущностСй, G, разумССтся, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ любой Ρ‚ΠΈΠΏ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ любая опСрация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ C Π½Π°Π΄ x, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΊΠΎ всСм Ρ‚ΠΈΠΏΠ°ΠΌ. Π­Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡΡ‚ΡŒ Π²ΠΈΠ΄ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

ИспользованиС сущностСй Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°

ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ x, Ρ‡Π΅ΠΉ Ρ‚ΠΈΠΏ Π·Π°Π΄Π°Π½ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ G, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

1 Π‘Π»Π΅Π²Π° ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания x := y, Π³Π΄Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ y Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ G.