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

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

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

[x]. Π”ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ наслСдованиС - мощная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° - Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ мноТСствСнного наслСдования, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ΄ΠΈΠ½ класс становится ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ нСсколькими способами.

[x]. ΠŸΡ€ΠΈ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ наслСдовании ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ° становится ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ, Ссли ΠΎΠ½ наслСдуСтся ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΈ нСсколькими нСзависимыми ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС.

[x]. ΠšΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ вСрсии ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ° ΠΏΡ€ΠΈ динамичСском связывании Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ select.

[x]. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ наслСдовании Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

[x]. Π’ ОО-срСдС сСмантичСская ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ°, поддСрТиваСмая динамичСским связываниСм, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π°, Ρ‡Π΅ΠΌ синтаксичСская ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ°.

БиблиографичСскиС замСчания

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ пСрСимСнования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ наслСдования Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΏΡ€ΠΈ написании этой ΠΊΠ½ΠΈΠ³ΠΈ. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠœΠΈΡ…Π°ΡΠ»Π΅ΠΌ Π¨Π²Π°ΠΉΡ†Π΅Ρ€ΠΎΠΌ (Michael Schweitzer), ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²Ρ‹Π±ΠΎΡ€Π°- Π”ΠΆΠΎΠ½ΠΎΠΌ ΠŸΠΎΡ‚Ρ‚Π΅Ρ€ΠΎΠΌ (John Potter).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌ мСню взят ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ [M 1988c].

УпраТнСния

Π£15.1 Окна ΠΊΠ°ΠΊ Π΄Π΅Ρ€Π΅Π²ΡŒΡ

Класс WINDOW ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ ΠΎΡ‚ TREE [WINDOW]. ΠŸΠΎΡΡΠ½ΠΈΡ‚Π΅ ΡΡƒΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. ΠŸΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅, ΠΊΠ°ΠΊΠΎΠ΅ Π½ΠΎΠ²ΠΎΠ΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ появится Π² связи с этим Π² ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ класса.

Π£15.2 ЯвляСтся Π»ΠΈ ΠΎΠΊΠ½ΠΎ строкой?

Окно содСрТит ассоциированный с Π½ΠΈΠΌ тСкст, прСдставлСнный Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ text Ρ‚ΠΈΠΏΠ° STRING. Π‘Ρ‚ΠΎΠΈΡ‚ Π»ΠΈ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΈ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ WINDOW наслСдником класса STRING?

Π£15.3 Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°

Π—Π°Π²Π΅Ρ€ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ класса WINDOW, ΠΏΠΎΠΊΠ°Π·Π°Π² Ρ‚ΠΎΡ‡Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ Π»Π΅ΠΆΠ°Ρ‰Π΅Π³ΠΎ Π² основС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° управлСния Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ?

Π£15.4 Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ„ΠΈΠ³ΡƒΡ€

ΠŸΡ€ΠΈ обсуТдСнии COMPOSITE_FIGURE ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ составными Ρ„ΠΈΠ³ΡƒΡ€Π°ΠΌΠΈ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚Ρ‚ΡΠ²ΡƒΡŽΡ‰ΠΈΠ΅ классы ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². (Подсказка: Π² [M 1994a] ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ классы Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ послуТат основой вашСй Ρ€Π°Π±ΠΎΡ‚Ρ‹.)

Π£15.5 БвязанныС стСки

ΠžΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° классах STACK ΠΈ LINKED_LIST, постройтС класс LINKED_STACK, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ стСка ΠΊΠ°ΠΊ связного списка.

Π£15.6 ΠšΠΎΠ»ΡŒΡ†Π΅Π²Ρ‹Π΅ списки ΠΈ Ρ†Π΅ΠΏΠΈ

ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ LIST нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания ΠΊΠΎΠ»ΡŒΡ†Π΅Π²Ρ‹Ρ… списков. (Подсказка: Π² этом Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ, обсуТдСниС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π² Π½Π°Ρ‡Π°Π»Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ.) ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ класс CHAIN, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΊΠ°ΠΊ для LIST, Ρ‚Π°ΠΊ ΠΈ для Π½ΠΎΠ²ΠΎΠ³ΠΎ класса ΠΊΠΎΠ»ΡŒΡ†Π΅Π²Ρ‹Ρ… списков CIRCULAR. ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ класс LIST ΠΈ, Ссли Π½ΡƒΠΆΠ½ΠΎ, Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ². Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ структуру класса, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ»ΡŒΡ†Π΅Π²Ρ‹Ρ… списков.

Π£15.7 Π”Π΅Ρ€Π΅Π²ΡŒΡ

Богласно ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΉ, Π΄Π΅Ρ€Π΅Π²ΠΎ - это рСкурсивная структура, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ собой список Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π². Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π² этой Π»Π΅ΠΊΡ†ΠΈΠΈ описаниС класса TREE ΠΊΠ°ΠΊ наслСдника LINKED_LIST ΠΈ LINKABLE Π½ΠΎΠ²Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ


class TREE [G] inherit

LIST [TREE [G]]

feature ...end



Π Π°ΡΡˆΠΈΡ€ΡŒΡ‚Π΅ это описаниС Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ класса. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ это Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ описано Π² тСкстС Π΄Π°Π½Π½ΠΎΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ.

Π£15.8 ΠšΠ°ΡΠΊΠ°Π΄Π½Ρ‹Π΅ ΠΈΠ»ΠΈ "ΡˆΠ°Π³Π°ΡŽΡ‰ΠΈΠ΅" (walking) мСню

ΠžΠΊΠΎΠ½Π½Ρ‹Π΅ систСмы вводят понятиС мСню, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΠΎΠ΅ классом MENU с запросом, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΌ список элСмСнтов, ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ отобраТСния, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ элСмСнту ΠΈ Ρ‚.Π΄. МСню составлСно ΠΈΠ· элСмСнтов, поэтому Π½Π°ΠΌ понадобится класс MENU_ENTRY с Ρ‚Π°ΠΊΠΈΠΌΠΈ запросами, ΠΊΠ°ΠΊ parent_menu ΠΈ operation (опСрация, выполняСмая ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ элСмСнта) ΠΈ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, ΠΊΠ°ΠΊ execute (выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ operation).

Π‘Ρ€Π΅Π΄ΠΈ мСню Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ каскадныС, ΠΈΠ»ΠΈ ΡˆΠ°Π³Π°ΡŽΡ‰ΠΈΠ΅ мСню (walking menu), Π³Π΄Π΅ Π²Ρ‹Π±ΠΎΡ€ элСмСнта ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ появлСнию подмСню (submenu). На рисункС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΡˆΠ°Π³Π°ΡŽΡ‰Π΅Π΅ мСню срСды Open Windows, созданной ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠ΅ΠΉ Sun:

Рис. 15.25.  Π’Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π΅ мСню

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚Π΅ описаниС класса SUBMENU. (Подсказка: подмСню ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ являСтся мСню ΠΈ элСмСнтом мСню, Ρ‡ΡŒΡ опСрация Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ подмСню.) МоТно Π»ΠΈ это понятиС с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π² языкС Π±Π΅Π· мноТСствСнного наслСдования?

Π£15.9 Плоский precursor (ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊ)

Π§Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ плоская Ρ„ΠΎΡ€ΠΌΠ° класса ΠΏΡ€ΠΈ встрСчС с инструкциСй, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ Precursor?

Π£15.10 Π”ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ наслСдованиС ΠΈ рСпликация

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ класс WINDOW_WITH_BORDER_AND_MENU Π±Π΅Π· обращСния ΠΊ Precursor. Для доступа ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ наслСдовании. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ прСдлоТСния select ΠΈ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ статус экспорта.

ЛСкция 16. Π’Π΅Ρ…Π½ΠΈΠΊΠ° наслСдования

НаслСдованиС - ΠΊΠ»ΡŽΡ‡Π΅Π²Π°Ρ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ ОО-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌΡƒ использованию ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ. Π’ этой Π»Π΅ΠΊΡ†ΠΈΠΈ Π½Π°ΠΌ прСдстоит ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ возмоТности, Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Π΅, Π½ΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ слСдствия красоты базисных ΠΈΠ΄Π΅ΠΉ.

НаслСдованиС ΠΈ утвСрТдСния

БлСдствия красоты базисных ΠΈΠ΄Π΅ΠΉ:

[x]. Бвязь наслСдования с утвСрТдСниями ΠΈ ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΠšΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρƒ.

[x]. Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ структура наслСдования, Π³Π΄Π΅ всС классы согласованы.

[x]. Π—Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚-Π—Π°ΠΊΡ€Ρ‹Ρ‚.

[x]. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Π°Ρ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠΊΠ°ΠΊ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ трСбования Π½Π° Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

[x]. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° присваивания: ΠΊΠ°ΠΊ бСзопасно ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Ρ‚ΠΈΠΏΡƒ.

[x]. Как ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ свойства Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡΡ….

[x]. Π—Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Π΅ объявлСния, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π»Π°Π²ΠΈΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠΉ.

[x]. НСпростыС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ наслСдованиСм ΠΈ скрытиСм ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Вопросам наслСдования Π±ΡƒΠ΄ΡƒΡ‚ посвящСны Π΅Ρ‰Π΅ Π΄Π²Π΅ Π»Π΅ΠΊΡ†ΠΈΠΈ: ΠΎΠ±Π·ΠΎΡ€ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ прСдставлСн Π² Π»Π΅ΠΊΡ†ΠΈΠΈ 17, Π° ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ обсуТдСниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ наслСдования - Π² Π»Π΅ΠΊΡ†ΠΈΠΈ 6 курса "ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования".

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² этой Π»Π΅ΠΊΡ†ΠΈΠΈ строится ΠΏΠΎ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ: ΡΠΊΠ·Π°ΠΌΠ΅Π½ΡƒΡŽΡ‚ΡΡ слСдствия ΠΈΠ΄Π΅ΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π΄Π²ΡƒΡ… Π»Π΅ΠΊΡ†ΠΈΠΉ, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, прСдлагаСтся обоснованноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ являСтся шаг Π°Π½Π°Π»ΠΈΠ·Π° - ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° становится ясной, Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΅Π΅ находится сразу ΠΆΠ΅.

Обладая изрядной ΠΌΠΎΡ‰ΡŒΡŽ, наслСдованиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ опасным. НС Π±ΡƒΠ΄ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ, создатСли классов ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ вСсьма "Π²Π΅Ρ€ΠΎΠ»ΠΎΠΌΠ½ΠΎ" ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌΠΈ объявлСниями ΠΈ динамичСским связываниСм для измСнСния сСмантики ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π±Π΅Π· возмоТности контроля со стороны ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. УтвСрТдСния способны Π½Π° большСС: ΠΎΠ½ΠΈ Π΄Π°ΡŽΡ‚ Π½Π°ΠΌ Π±ΠΎΠ»Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ наслСдования. НС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ лишь ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠšΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρƒ позволяСт Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ ΠΏΠΎΡΡ‚ΠΈΡ‡ΡŒ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ наслСдования.

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

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹

Π‘ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ ΠΎΠ± ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… класса ΠΌΡ‹ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΈΡΡŒ ΠΈ ΠΏΡ€Π΅ΠΆΠ΄Π΅:

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ всСх Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΈ ΠΊ самому классу.

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊ классу. Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ логичСской ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ and then. (Если Ρƒ класса Π½Π΅Ρ‚ явного ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°, Ρ‚ΠΎ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ True ΠΈΠ³Ρ€Π°Π΅Ρ‚ эту Ρ€ΠΎΠ»ΡŒ.) По ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ Π² классС Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ всСх Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠΎΠ², ΠΊΠ°ΠΊ прямых, Ρ‚Π°ΠΊ ΠΈ косвСнных.

Как слСдствиС, Π²Ρ‹ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ Π² ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° Π΅Ρ‰Π΅ Ρ€Π°Π· Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ (хотя сСмантичСски такая ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π½Π΅ Π²Ρ€Π΅Π΄ΠΈΡ‚: a and then a Π΅ΡΡ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ a).

ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ восстановлСнный ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ класса ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² плоской ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΉ плоской Ρ„ΠΎΡ€ΠΌΠ΅ послСднСго (см. Π»Π΅ΠΊΡ†ΠΈΡŽ 15).