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

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

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

Π­Ρ‚ΠΎΡ‚ случай ΠΎΡ‚Π½ΡŽΠ΄ΡŒ Π½Π΅ являСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ. Π’ΠΎΡ‚ Π΅Ρ‰Π΅ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ€ΠΎΠ΄Π°.

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

[x]. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ‚Π°ΠΊΠΈΡ… базисных структур Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ словари Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ мСсто элСмСнта опрСдСляСтся ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, вычисляСмым ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ элСмСнта. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌΡ‹Π΅ Π² словарС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ классу, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта.

НС ОО-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, посмотрим, ΠΊΠ°ΠΊ с Ρ‚Π°ΠΊΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΡΠΏΡ€Π°Π²Π»ΡΠ»ΠΈΡΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Π½Π΅ ОО-языки.

Π’ языкС Ada Π½Π΅Ρ‚ классов, Π½ΠΎ Π·Π°Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ взаимосвязанных Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. ΠŸΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ, с Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΡ‹. ΠŸΡ€ΠΈ этом Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: ΠΏΠ°ΠΊΠ΅Ρ‚ VECTOR_PROCESSING ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ объявлСниС Ρ‚ΠΈΠΏΠ° VECTOR ΠΈ эквивалСнт нашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ infix "+".

РСшСниС Π² языкС Ada рассматриваСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ инфиксноС слоТСниС, ΠΊΠ°ΠΊ Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΈΠΏΡ‹, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅, Π½ΠΎ ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр:


generic

type G is private;

with function "+" (a, b: G) return G is <>;

with function "*" (a, b: G) return G is <>;

zero: G; unity: G;

package VECTOR_HANDLING is

... Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ...

end VECTOR_HANDLING



Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ наряду с Ρ‚ΠΈΠΏΠΎΠΌ G ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ слуТит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ zero - Π½ΡƒΠ»Π΅Π²ΠΎΠΉ элСмСнт слоТСния. Π’ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ использования ΠΏΠ°ΠΊΠ΅Ρ‚Π°:


package BOOLEAN_VECTOR_HANDLING is

new VECTOR_HANDLING (BOOLEAN, "or", "and", false, true);



Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ логичСская опСрация or ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ слоТСниС, and - ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ значСния для zero ΠΈ unity. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΌΡ‹ обсудим этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π»Π΅ΠΊΡ†ΠΈΠΉ курса.

Являясь Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для Ada, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ΅ΠΌ Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ срСдС. Основа ОО-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° - ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°Π΄ опСрациями ΠΏΡ€ΠΈ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ПО, Ρ‡ΡŒΠΈΠΌ слСдствиСм являСтся отсутствиС нСзависимых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Всякая опСрация ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ…, основанному Π½Π° классС. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, возникшая "Π½Π° пустом мСстС" функция, скаТСм, infix "+", Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ фактичСским Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, стоящим Π² ΠΎΠ΄Π½ΠΎΠΌ ряду с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ INTEGER ΠΈ BOOLEAN. Π’ΠΎ ΠΆΠ΅ касаСтся ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ zero ΠΈ unity, обязанных Π·Π½Π°Ρ‚ΡŒ своС мСсто - Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ класса - Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π΅ΡΠΏΠ΅ΠΊΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‡Π»Π΅Π½Π°ΠΌΠΈ ОО-сообщСства.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

Π­Ρ‚ΠΈ наблюдСния Π΄Π°ΡŽΡ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°ΠΌΠΈ классов ΠΈ Ρ‚ΠΈΠΏΠΎΠ².

ΠŸΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ любой фактичСский ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ классом VECTOR (Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ), Π±Ρ‹Π» Ρ‚ΠΈΠΏΠΎΠΌ, поставляСмым с мноТСством ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ: infix "+", zero для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ суммы ΠΈ Ρ‚.Π΄. ВладСя наслСдованиСм, ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΡΠ½Π°Π±Π΄ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ опСрациями, - Π½ΡƒΠΆΠ½ΠΎ просто ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ класса, ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ эффСктивного, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ этими опСрациями.

БинтаксичСски это выглядит Ρ‚Π°ΠΊ:


class C [G -> CONSTRAINING_TYPE] ... ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ...



Π³Π΄Π΅ CONSTRAINING_TYPE - ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ (generic constraint). Π‘ΠΈΠΌΠ²ΠΎΠ» -> ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ стрСлку Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ… наслСдования. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этого объявлСния Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ:

[x]. Π² Ρ€ΠΎΠ»ΠΈ фактичСских Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ лишь Ρ‚ΠΈΠΏΡ‹, совмСстимыС с CONSTRAINING_TYPE;

[x]. Π² классС C Π½Π°Π΄ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ Ρ‚ΠΈΠΏΠ° G Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π½Π°Π΄ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ CONSTRAINING_TYPE, Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ собой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса этого Ρ‚ΠΈΠΏΠ°.

КакоС Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для класса VECTOR? ΠžΠ±ΡΡƒΠΆΠ΄Π°Ρ мноТСствСнноС наслСдованиС, ΠΌΡ‹ Π²Π²Π΅Π»ΠΈ Π² рассмотрСниС NUMERIC - класс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΡ… базисныС арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: слоТСниС ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ с Π½ΡƒΠ»Π΅ΠΌ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ (лСТащая Π² Π΅Π³ΠΎ основС матСматичСская структура называСтся ΠΊΠΎΠ»ΡŒΡ†ΠΎΠΌ). Π­Ρ‚Π° модСль каТСтся Π²ΠΏΠΎΠ»Π½Π΅ умСстной, хотя Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ слоТСниС. БоотвСтствСнно, класс Π±ΡƒΠ΄Π΅Ρ‚ описан Ρ‚Π°ΠΊ:


indexing

description: "Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠ΅ слоТСниС"

class

VECTOR [G -> NUMERIC]

... ΠžΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ - ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅ (Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ!) ...



ПослС Ρ‡Π΅Π³ΠΎ Ρ€Π°Π½Π΅Π΅ нСкоррСктная конструкция Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π°


Result.put(item (i) + other.item (i), i)



становится допустимой, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ item (i) ΠΈ other.item (i) ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏ G, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΊ Π½ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ NUMERIC, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ, инфиксный "+".

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Π΅ пороТдСния ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹, Ссли ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС классы, прСдставлСнныС ΠΊΠ°ΠΊ фактичСскиС Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ NUMERIC:


VECTOR [NUMERIC]

VECTOR [REAL]

VECTOR [COMPLEX]



Класс EMPLOYEE Π½Π΅ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ ΠΎΡ‚ NUMERIC, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ VECTOR [EMPLOYEE] ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции.

Абстрактный Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ NUMERIC Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. ЀактичСский ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΡ€ΠΈ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ эффСктивным (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Ρ‹ΡˆΠ΅), Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ (VECTOR [NUMERIC_COMPARABLE]), Ссли ΠΎΠ½ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ ΠΎΡ‚ NUMERIC.

Аналогично ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ класс словаря ΠΈ класс, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ сортировку:


class DICTIONARY [G, H -> HASHABLE] ...

class SORTABLE [G -> COMPARABLE] ...



Π˜Π³Ρ€Π° Π² Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ

Π’ΠΎΡ‚ Π½Π΅ΠΊΠΈΠΉ Ρ‚Ρ€ΡŽΠΊ с нашим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ: спросим сСбя, Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π»ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²? Допустим Π»ΠΈ Ρ‚ΠΈΠΏ VECTOR [VECTOR [INTEGER]]?

ΠžΡ‚Π²Π΅Ρ‚ слСдуСт ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»: Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли фактичСский Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ совмСстим с NUMERIC. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это просто - ΠΏΠΎΡ€ΠΎΠ΄ΠΈΡ‚ΡŒ класс VECTOR ΠΎΡ‚ класса NUMERIC (см. ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 16.2):


indexing

description: "Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠ΅ слоТСниС"

class

VECTOR [G -> NUMERIC]

inherit

NUMERIC

... ΠžΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ - ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅...



Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ этому, ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π²ΠΏΡ€ΡΠΌΡŒ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ "числовыми". ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ слоТСниС ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°ΡŽΡ‚ структуру ΠΊΠΎΠ»ΡŒΡ†Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€ΠΎΠ»ΡŒ нуля (zero) ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ· G-Π½ΡƒΠ»Π΅ΠΉ, ΠΈ Ρ€ΠΎΠ»ΡŒ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ (unity) - Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ· G-Π΅Π΄ΠΈΠ½ΠΈΡ†. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ слоТСния Π² этом ΠΊΠΎΠ»ΡŒΡ†Π΅ - это, строго говоря, Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ infix "+", Ρ€Π΅Ρ‡ΡŒ ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ шла Π²Ρ‹ΡˆΠ΅.

МоТно ΠΏΠΎΠΉΡ‚ΠΈ дальшС ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ VECTOR [VECTOR [VECTOR [INTEGER]]] ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ - приятноС рСкурсивноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

И снова нСограничСнная ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π½Π΅ всС случаи ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹. Π€ΠΎΡ€ΠΌΠ° - STACK [G] ΠΈΠ»ΠΈ ARRAY [G] - ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ сущСствуСт ΠΈ называСтся Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ DICTIONARY [G, H -> HASHABLE] ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ класс ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Π°Π΅Ρ‚ шанс Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ случай. Π’Ρ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π²Ρ‹Π²Π΅Π»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ class C [G] слСдуСт ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ class C [G -> ANY]. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли G - Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, класса STACK), Π° x - ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ Ρ‚ΠΈΠΏ G, Ρ‚ΠΎ ΠΌΡ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ с ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ x: Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ значСния, ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ (=, /=), ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… опСрациях clone, equal ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅.

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° присваивания

Наша ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° адрСсуСтся ΠΊ Ρ‚Π΅ΠΌ областям ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ страны, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· страха тираничСского повСдСния ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ простым ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π΅ встрСчая Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ сопротивлСния.

Когда ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ‚ΠΈΠΏΠΎΠ² становятся нСсносными

ЦСль ΠΏΡ€Π°Π²ΠΈΠ» Ρ‚ΠΈΠΏΠΎΠ², Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… вмСстС с наслСдованиСм, Π² достиТСнии статичСски провСряСмого динамичСского повСдСния, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ систСма, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ°Ρ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΡ€ΠΈ компиляции, Π½Π΅ выполняла Π½Π΅Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π²ΠΎ врСмя выполнСния.