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

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

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

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, абстрактныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ вопросами скрытия ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, хотя ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΡ… элСмСнтарныС излоТСния дальшС этого Π½Π΅ ΠΈΠ΄ΡƒΡ‚. БобствСнно АВД Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Лисков ΠΈ ЗиллСса [Liskov 1974]; Π±ΠΎΠ»Π΅Π΅ алгСбраичСскиС прСдставлСния Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² [M1976] ΠΈ [Guttag 1977]. Π’Π°ΠΊ называСмая Π³Ρ€ΡƒΠΏΠΏΠ° ADJ (Π“ΠΎΠ³Π΅Π½, ВэтчСр, Π’Π°Π³Π½Π΅Ρ€) исслСдовали алгСбраичСскиС основания абстрактных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π΅ΠΎΡ€ΠΈΡŽ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ. Π’ частности, см. ΠΈΡ… Π²Π°ΠΆΠ½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ [Goguen 1978], ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡƒΡŽ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΌΠΎΠ½ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ.

На основС абстрактных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… основано нСсколько языков спСцификаций. Двумя Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ ADJ ΡΠ²Π»ΡΡŽΡ‚ΡΡ CLEAR [Burstall 1977] [Burstall 1981] ΠΈ OBJ-2 [Futatsugi 1985]. Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ Larch, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π“ΡƒΡ‚Ρ‚Π°Π³ΠΎΠΌ, Π₯ΠΎΡ€Π½ΠΈΠ½Π³ΠΎΠΌ ΠΈ Π’ΠΈΠ½Π³ΠΎΠΌ [Guttag 1985].

ИдСи АВД повлияли Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ языки Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… спСцификаций ΠΊΠ°ΠΊ Z Π² рядС Π΅Π³ΠΎ Π²ΠΎΠΏΠ»ΠΎΡ‰Π΅Π½ΠΈΠΉ [Abrial 1980] [Abrial 1980a] [Spivey 1988] [Spivey 1992] ΠΈ VDM [Jones 1986]. НСдавниС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Z ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ Ρ‚Π΅ΡΠ½ΡƒΡŽ связь с ОО-идСями, см. Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Object Z [Duke 1991] ΠΈ дальнСйшиС ссылки Π² Π³Π». 11.

Π€Ρ€Π°Π·Π° "Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ интСрСсов" являСтся Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ДСйкстры, см. Π² частности, Π΅Π³ΠΎ "Дисциплину программирования" [Dijkstra 1976].

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ достаточной ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹ Π±Ρ‹Π»ΠΎ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ Π“ΡƒΡ‚Ρ‚Π°Π³ΠΎΠΌ ΠΈ Π₯ΠΎΡ€Π½ΠΈΠ½Π³ΠΎΠΌ [Guttag 1978] (ΠΎΠ½ΠΎ основано Π½Π° диссСртации Π“ΡƒΡ‚Ρ‚Π°Π³Π° 1975Π³.)

ИдСя ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ спСцификации ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ с нСявного Π½Π° явноС ΠΏΡƒΡ‚Π΅ΠΌ отоТдСствлСния АВД с Π΄Π΅ΠΊΠ°Ρ€Ρ‚ΠΎΠ²Ρ‹ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π΅Π³ΠΎ простых запросов, Π±Ρ‹Π»Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π² [M 1982] ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ описания структур Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… Ρ‚Ρ€Π΅Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ (физичСского, структурного, нСявного).

УпраТнСния

Π£6.1 Π’ΠΎΡ‡ΠΊΠΈ

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ, Π·Π°Π΄Π°ΡŽΡ‰ΡƒΡŽ абстрактный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ВОЧКА (POINT), ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° плоскости Π² ΠΏΠ»Π°Π½ΠΈΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ. Π­Ρ‚Π° спСцификация Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ аспСкты: Π΄Π΅ΠΊΠ°Ρ€Ρ‚ΠΎΠ²Ρ‹ ΠΈ полярныС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Ρ‹, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ пСрСносы, расстояниС ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, расстояниС Π΄ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ.

Π£6.2 БоксСры

Π§Π»Π΅Π½Ρ‹ Ассоциации Π‘ΠΎΠ΅Π²Ρ‹Ρ… ΠŸΠ΅Ρ‚ΡƒΡ…ΠΎΠ² - боксСрской Π»ΠΈΠ³ΠΈ - рСгулярно Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π² ΠΏΠΎΠ΅Π΄ΠΈΠ½ΠΊΠ°Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ силу. Π’ ΠΏΠΎΠ΅Π΄ΠΈΠ½ΠΊΠ΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π΄Π²Π° боксСра, ΠΈ Π΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся ΠΏΠΎΠ±Π΅Π΄Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΡ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ боксСра ΠΈΠ»ΠΈ Π½ΠΈΡ‡ΡŒΡ. Если выявлСн ΠΏΠΎΠ±Π΅Π΄ΠΈΡ‚Π΅Π»ΡŒ, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠ΅Π΄ΠΈΠ½ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для измСнСния Ρ€Π°Π½Π³ΠΎΠ² боксСров Π»ΠΈΠ³ΠΈ: ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ±Π΅Π΄ΠΈΡ‚Π΅Π»ΡŒ прСвосходит ΠΏΠΎΠ±Π΅ΠΆΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ боксСра b, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎ ΠΏΠΎΠ΅Π΄ΠΈΠ½ΠΊΠ° прСвосходил ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Π²ΡˆΠΈΠΉ. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ абстрактных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…: АВД_Π›Π˜Π“Π, Π‘ΠžΠšΠ‘Π•Π , ΠŸΠžΠ•Π”Π˜ΠΠžΠš. (Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅: Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ явно понятиС "Ρ€Π°Π½Π³", Π° ΠΏΡ€ΠΎΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ "прСвосходит", Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅ΠΉ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ прСвосходства Π½Π° мноТСствС боксСров Π»ΠΈΠ³ΠΈ.)

Π£6.3 БанковскиС счСта

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ АВД "счСт Π² Π±Π°Π½ΠΊΠ΅" с Ρ‚Π°ΠΊΠΈΠΌΠΈ опСрациями ΠΊΠ°ΠΊ "ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° счСт", "ΡΠ½ΡΡ‚ΡŒ со счСта", "Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ баланс", "Π²Π»Π°Π΄Π΅Π»Π΅Ρ†", "смСна Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°".

Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ открытия ΠΈ закрытия счСта? (Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅: эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ функциями Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ АВД).

Π£6.4 БообщСния

РассмотритС Π·Π½Π°ΠΊΠΎΠΌΡƒΡŽ Π²Π°ΠΌ систСму элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Π² Π΄ΡƒΡ…Π΅ этой Π»Π΅ΠΊΡ†ΠΈΠΈ абстрактный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠŸΠžΠ§Π’ΠžΠ’ΠžΠ•_Π‘ΠžΠžΠ‘Π©Π•ΠΠ˜Π•. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π² Π½Π΅Π³ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-запросы, Π½ΠΎ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ конструкторы.

У6.5 ИмСна

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ абстрактный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ИМЯ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π»ΠΈΡΡŒ Π±Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°.

Π£6.6 ВСкст

РассмотритС понятиС тСкста, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ тСкстовым Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ. Π—Π°Π΄Π°ΠΉΡ‚Π΅ это понятиС Π² Π²ΠΈΠ΄Π΅ АВД. (Π­Ρ‚ΠΎ Π·Π°Π΄Π°Π½ΠΈΠ΅ оставляСт достаточно ΠΌΠ½ΠΎΠ³ΠΎ свободы спСцификатору, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ описаниС Ρ‚Π΅Ρ… свойств тСкста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΠ·Π±Ρ€Π°Π»ΠΈ для модСлирования Π² АВД).

Π£6.7 ΠŸΠΎΠΊΡƒΠΏΠΊΠ° Π΄ΠΎΠΌΠ°

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ абстрактного Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… для Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ Π΄ΠΎΠΌΠ°, описанной Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ. Π£Π΄Π΅Π»ΠΈΡ‚Π΅ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ логичСских ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ прСдусловий ΠΈ аксиом спСцификации АВД.

Π£6.8 Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для стСков

ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ АВД для стСков, Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ² Π² Π½Π΅Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ count (Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число элСмСнтов стСка), change_top (замСняСт Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ элСмСнт стСка Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ элСмСнтом) ΠΈ wipe_out (удаляСт всС элСмСнты). НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ аксиомы ΠΈ прСдусловия.

Π£6.9 ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ стСки

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π² этой Π»Π΅ΠΊΡ†ΠΈΠΈ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ стСков Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° описывала стСки ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ Смкости. (Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅: Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΡΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ-запрос ΠΈ сдСлайтС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ put частичной).

Π£6.10 ΠžΡ‡Π΅Ρ€Π΅Π΄ΠΈ

ΠžΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ АВД ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ (ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΡ€ΠΈΡˆΠ΅Π» - ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΡƒΡˆΠ΅Π») Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ стилС, Ρ‡Ρ‚ΠΎ ΠΈ стСки. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΈ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‡Π΅Ρ€Ρ‚Ρ‹ этих АВД. (Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅: аксиомы для item ΠΈ remove Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ, ΠΏΡ€ΠΈ описании put (s,x) рассмотритС случаи, ΠΊΠΎΠ³Π΄Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ s пуста ΠΈ нСпустая).

Π£6.11 РаспрСдСлитСли

(Π­Ρ‚ΠΎ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅).

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΎΠ±Ρ‰ΠΈΠΉ АВД Π ΠΠ‘ΠŸΠ Π•Π”Π•Π›Π˜Π’Π•Π›Π¬, ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΈ стСки ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

РассмотритС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для задания Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… спСцификаций АВД (Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ стСки ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ссылок Π½Π° ΠΎΠ±Ρ‰ΠΈΠ΅ спСцификации Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ спСцификация распрСдСлитСлСй. (Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅: посмотритС Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ наслСдования, ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌΡ‹ΠΉ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… лСкциях).

Π£6.12 БулСвский -- BOOLEAN

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ абстрактный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… BOOLEAN Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² опрСдСлСниях Π΄Ρ€ΡƒΠ³ΠΈΡ… АВД ΠΈΠ· этой Π»Π΅ΠΊΡ†ΠΈΠΈ. МоТно ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ равСнства ΠΈ нСравСнства (= ΠΈ ) автоматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ АВД.

Π£6.13 Достаточная ΠΏΠΎΠ»Π½ΠΎΡ‚Π°

(Π­Ρ‚ΠΎ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΉ).

Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ АВД, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π²Π°ΠΌΠΈ Π² качСствС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΉ, ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° являСтся достаточно ΠΏΠΎΠ»Π½ΠΎΠΉ. Если ΠΎΠ½Π° Π½Π΅ достаточно полная, Ρ‚ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅, ΠΊΠ°ΠΊ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ достаточно ΠΏΠΎΠ»Π½ΠΎΠΉ.

Π£6.14 ΠΠ΅ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ

Π”ΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ привСдСнная Π² этой Π»Π΅ΠΊΡ†ΠΈΠΈ спСцификация стСков являСтся Π½Π΅ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²ΠΎΠΉ.

ЛСкция 7. БтатичСскиС структуры: классы

Анализируя основы ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ, ΠΌΡ‹ поняли ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° - ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°. ΠœΡ‹ осознали, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ исчСрпали сСбя, - цСнтрализованная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ. ΠœΡ‹ выявили Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ основу ОО-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° - абстрактныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ ΡƒΠ΄Π΅Π»Π΅Π½ΠΎ достаточно внимания, Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΊ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ! Π Π°Π·Π΄Π΅Π» содСрТит Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ОО-Π°Π½Π°Π»ΠΈΠ·Π°, проСктирования ΠΈ программирования. НСобходимыС обозначСния (элСмСнты описания) Π±ΡƒΠ΄ΡƒΡ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости. Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ - классы.

ΠšΠ»Π°ΡΡΡ‹, Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ - ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ обсуТдСния

Какова Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Π°Ρ концСпция ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ? НСобходимо Π΄Π²Π°ΠΆΠ΄Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ "ΠΎΠ±ΡŠΠ΅ΠΊΡ‚". ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, Π½ΠΎ Π² Π½ΠΈΡ… Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ.

Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΊΠ°ΠΊ структуры ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Cobol, с Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΊΠ°ΠΊ Π² Pascal ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ записи, с Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΊΠ°ΠΊ программист написал Π½Π° C ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ структуры, чСловСчСство располагаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

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

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ класса

Класс - это абстрактный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, поставляСмый с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ частичной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.

АбстрактныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… (АВД) ΡΠ²Π»ΡΡŽΡ‚ΡΡ матСматичСским понятиСм, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΌ Π½Π° этапС ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ спСцификации - Π² процСссС Π°Π½Π°Π»ΠΈΠ·Π°. ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ класса, прСдусматривая Ρ‡Π°ΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, обСспСчиваСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ связь с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ПО Π½Π° этапах проСктирования ΠΈ программирования. Напомним, класс называСтся эффСктивным, Ссли Π΅Π³ΠΎ рСализация ΠΏΠΎΠ»Π½Π°, ΠΈ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ - ΠΏΡ€ΠΈ частичной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Аналогично АВД, класс - это Ρ‚ΠΈΠΏ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ мноТСство Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… экзСмплярами (instances) класса. ЭкзСмпляры АВД ΡΠ²Π»ΡΡŽΡ‚ΡΡ абстракциями - элСмСнтами матСматичСского мноТСства. ЭкзСмпляр класса ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ - это структура Π΄Π°Π½Π½Ρ‹Ρ…, размСщаСмая Π² памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈ обрабатываСмая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ.