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

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

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

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

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹Π΅ присоСдинСния Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ†Π΅Π»Π΅ΠΉ Ρ‚ΠΈΠΏΠ° ссылки, Π½ΠΎ, Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ случаС, для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ класса-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΅ΠΌΡƒ экзСмпляры ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ большС ΠΏΠΎΠ»Π΅ΠΉ. На рис. 14.3 Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса RECTANGLE большС, Ρ‡Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса POLYGON. Вакая Ρ€Π°Π·Π½ΠΈΡ†Π° Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ, Ссли всС, Ρ‡Ρ‚ΠΎ Π·Π°Π½ΠΎΠ²ΠΎ присоСдиняСтся, ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ ссылки. Но Ссли p - Π½Π΅ ссылка, Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ Ρ‚ΠΈΠΏ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, объявлСна ΠΊΠ°ΠΊ expanded POLYGON), Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ p являСтся нСпосрСдствСнно Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈ всякоС присваиваниС p Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒ содСрТимоС этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ этом случаС Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…

Рассмотрим массив ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ²:


poly_arr: ARRAY [POLYGON]



Когда Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x присваиваСтся элСмСнту этого массива, ΠΊΠ°ΠΊ Π² Π²Ρ‹Π·ΠΎΠ²Π΅


poly_arr.put (x, some_index)



(для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ допустимого значСния индСкса some_index), Ρ‚ΠΎ спСцификация класса ARRAY ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ присваиваСмого значСния Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ согласован с Ρ‚ΠΈΠΏΠΎΠΌ фактичСского Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°:


class ARRAY [G] creation

...

feature - ИзмСнСниС элСмСнта

put (v: G; i: INTEGER) is

-- ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ v элСмСнту с индСксом i

...

end



Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° v, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ x, Π² классС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ G, Π° фактичСский Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ G Π² Π²Ρ‹Π·ΠΎΠ²Π΅ poly_arr, - это POLYGON, Ρ‚ΠΎ Ρ‚ΠΈΠΏ x Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ согласован с Π½ΠΈΠΌ. Как ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, для этого x Π½Π΅ обязан ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ POLYGON, ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ любой ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ Ρ‚ΠΈΠΏΠ° POLYGON.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива Ρ€Π°Π²Π½Ρ‹ 1 ΠΈ 4, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сущности:


p: POLYGON; r: RECTANGLE; s: SQUARE; t: TRIANGLE



ΠΈ, создав ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ


poly_arr.put (p, 1)

poly_arr.put (r, 2)

poly_arr.put (s, 3)

poly_arr.put (t, 4)



ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ присвоят элСмСнтам массива ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

Рис. 14.4.  ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹ΠΉ массив

На этом рисункС графичСскиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ прСдставлСны ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ гСомСтричСскими Ρ„ΠΈΠ³ΡƒΡ€Π°ΠΌΠΈ, Π° Π½Π΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ.

Π’Π°ΠΊΠΈΠ΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…, содСрТащиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ°, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹ΠΌΠΈ структурами Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°Π»Π΅Π΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны многочислСнныС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ‚Π°ΠΊΠΈΡ… структур. ΠœΠ°ΡΡΠΈΠ²Ρ‹ - это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· возмоТностСй, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ структуры ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²: списки, стСки ΠΈ Ρ‚.ΠΏ.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Ρ†Π΅Π»ΡŒ, ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π² Π½Π°Ρ‡Π°Π»Π΅ Π»Π΅ΠΊΡ†ΠΈΠΈ: объСдинСниС пороТдСния ΠΈ наслСдования для достиТСния максимальной гибкости ΠΈ надСТности. Π˜ΠΌΠ΅Π΅Ρ‚ смысл Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ рис. 10.1, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ эту ΠΌΡ‹ΡΠ»ΡŒ:

Рис. 14.5.  Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΡ обобщСния

Π’ΠΈΠΏΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° рис. 10.1 Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π½Π°Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ SET_OF_BOOKS ΠΈ Ρ‚. ΠΏ., Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, - SET [BOOK].

Вакая комбинация ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ наслСдования являСтся вСсьма ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌ срСдством. Оно позволяСт ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ структуру ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с Π½ΡƒΠΆΠ½ΠΎΠΉ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒΡŽ общности. НапримСр,

LIST [RECTANGLE]: ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹, Π½ΠΎ Π½Π΅ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ.

LIST [POLYGON]: ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹, ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ, Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ, Π½ΠΎ Π½Π΅ ΠΊΡ€ΡƒΠ³ΠΈ.

LIST [FIGURE]: ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ экзСмпляры любого Ρ‚ΠΈΠΏΠ° ΠΈΠ· ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ FIGURE, Π½ΠΎ Π½Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈΠ»ΠΈ банковскиС счСта.

LIST [ANY]: ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ любого Ρ‚ΠΈΠΏΠ°.

Π’ послСднСм случаС использован класс ANY, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ условимся ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌ любого класса (ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ рассмотрСн Π΄Π°Π»Π΅Π΅).

Π’Π°Ρ€ΡŒΠΈΡ€ΡƒΡ мСсто класса, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΠΎΠ³ΠΎ Π² качСствС фактичСского Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², допустимых Π² опрСдСляСмом ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅.

Випизация ΠΏΡ€ΠΈ наслСдовании

Π—Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, обСспСчиваСмая наслСдованиСм, Π½Π΅ связана с ΠΏΠΎΡ‚Π΅Ρ€Π΅ΠΉ надСТности, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ статичСская ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ², Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ Π²ΠΎ врСмя компиляции отсутствиС Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ² Π²ΠΎ врСмя выполнСния.

Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ²

НаслСдованиС согласовано с систСмой Ρ‚ΠΈΠΏΠΎΠ². ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π»Π΅Π³ΠΊΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ объявлСния:


p: POLYGON


r: RECTANGLE



Π’Ρ‹Π΄Π΅Π»ΠΈΠΌ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ (рис. 14.6).

Π’ΠΎΠ³Π΄Π° Π·Π°ΠΊΠΎΠ½Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ выраТСния:

[x]. p.perimeter: Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ perimeter ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ для ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ²;

[x]. p.vertices, p.translate (...), p.rotate (...) с ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ;

[x]. r.diagonal, r.side1, r.side2: эти Ρ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ RECTANGLE ΠΈΠ»ΠΈ QUADRANGLE;

[x]. r.vertices, r.translate (...), r.rotate (...): эти ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ POLYGON ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ Π²Ρ‹ΡˆΠ΅ ΠΈ поэтому ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΊ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°ΠΌ, Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ²;

[x]. r.perimeter: Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ случаС. Но Ρƒ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ здСсь Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ имССтся Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² классС RECTANGLE, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° отличаСтся ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈΠ· класса POLYGON.

Рис. 14.6.  Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ гСомСтричСских Ρ„ΠΈΠ³ΡƒΡ€

А ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½Π΅Π·Π°ΠΊΠΎΠ½Π½Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ эти ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ нСдоступны Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°:


p.side1

p.side2

p.diagonal



Π­Ρ‚ΠΎ рассмотрСниС основано Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π΅ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ:

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Π’Ρ‹Π·ΠΎΠ²Π° ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²

Если Ρ‚ΠΈΠΏ сущности x основан Π½Π° классС Π‘, Ρ‚ΠΎ Π² Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° x.f сам ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ f Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² Π‘.

Напомним, Ρ‡Ρ‚ΠΎ класс Π‘ являСтся собствСнным ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌ. Π€Ρ€Π°Π·Π° "Ρ‚ΠΈΠΏ сущности x основан Π½Π° классС Π‘" Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для классов, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Ρ…, Ρ‚ΠΈΠΏ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя класса: LINKED_LIST [INTEGER]. Но Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс для Ρ‚ΠΈΠΏΠ° - это LINKED_LIST, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ участвуСт Π² нашСм ΠΏΡ€Π°Π²ΠΈΠ»Π΅.

Как ΠΈ всС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° коррСктности, рассматриваСмыС Π² этой ΠΊΠ½ΠΈΠ³Π΅, ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π’Ρ‹Π·ΠΎΠ²Π° ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² являСтся статичСским, - Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π° основС тСкста систСмы, Π° Π½Π΅ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ Π΅Π΅ выполнСния. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, выполняСт Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ) Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ€Π³Π°Ρ‚ΡŒ классы, содСрТащиС Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Если ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΡ€Π°Π²ΠΈΠ» Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚ΠΎ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ риск Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ скомпилированная систСма ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ нСподходящСго Ρ‚ΠΈΠΏΠ°.

БтатичСская типизация - это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… рСсурсов ОО-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ для достиТСния объявлСнной Π² 1-ΠΎΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ†Π΅Π»ΠΈ - надСТности ПО.

Π£ΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ всС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ ОО-ПО ΠΈΠΌΠ΅ΡŽΡ‚ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ. НаиболСС извСстным прСдставитСлСм языков с динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ являСтся Smalltalk, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅ дСйствуСт статичСскоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, Π½ΠΎ допускаСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вычислСниС Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π»ΠΎΡΡŒ Π² случаС возникновСния ошибки: "сообщСниС Π½Π΅ понятно". Π’ Π»Π΅ΠΊΡ†ΠΈΠΈ, посвящСнной Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ сравнСниС Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ².

ΠŸΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°

НСограничСнный ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π±Ρ‹Π» Π±Ρ‹ нСсовмСстим со статичСским понятиСм Ρ‚ΠΈΠΏΠ°. Π”ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ опрСдСляСтся Π½Π°ΡΠ»Π΅Π΄ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ.

ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹Ρ… присваиваний, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ p := r ΠΈ p := t, Π² качСствС Ρ‚ΠΈΠΏΠ° источника ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² класса-Ρ†Π΅Π»ΠΈ. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Ρ‚ΠΈΠΏ источника согласован с классом Ρ†Π΅Π»ΠΈ. НапримСр, SQUARE согласован с RECTANGLE ΠΈ с POLYGON, Π½ΠΎ Π½Π΅ с TRIANGLE. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ это понятиС, Π΄Π°Π΄ΠΈΠΌ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅: