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

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

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

ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ "являСтся" ΠΈΠ·ΡƒΡ‡Π°Π»ΠΎΡΡŒ, Π² основном, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ искусствСнного ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚Π° Π² [Brachman 1983].

Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ наслСдования ΠΈ Π΅Π³ΠΎ сСмантики ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ Π² [Cardelli 1984].

БоглашСниС ΠΎΠ± использовании для пСрСопрСдСлСния Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ плюса ΠΏΡ€ΠΈΡˆΠ»ΠΎ ΠΈΠ· систСмы ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Business Object Notation, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Nerson'ΠΎΠΌ ΠΈ Walden'ΠΎΠΌ (ссылки Π² Π»Π΅ΠΊΡ†ΠΈΠΈ 9 курса "ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования").

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ Precursor (аналогичная конструкции super Π² языкС Smalltalk, Π½ΠΎ с Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ, Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΌ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для пСрСопрСдСлСния ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€) являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π½Π΅ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠΉ совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Roger Browne, James McKim, Kim Walden ΠΈ Steve Tynor.

УпраТнСния

Π£14.1 ΠœΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ ΠΈ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ вСрсии классов POLYGON ΠΈ RECTANGLE, наброски ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Π½Π°Ρ‡Π°Π»Π΅ Π»Π΅ΠΊΡ†ΠΈΠΈ. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π² Π½ΠΈΡ… подходящиС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ создания.

Π£14.2 ΠœΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ с ΠΌΠ°Π»Ρ‹ΠΌ числом Π²Π΅Ρ€ΡˆΠΈΠ½

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ класса POLYGON Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π±Ρ‹Π»ΠΎ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Ρ‚Ρ€ΠΈ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹; ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ функция perimeter Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ для пустого ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ этого класса Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π» ΠΈ случаи Π²Ρ‹Ρ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ² с числом Π²Π΅Ρ€ΡˆΠΈΠ½ мСньшС Ρ‚Ρ€Π΅Ρ….

Π£14.3 ГСомСтричСскиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с двумя ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ

ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ класс TWO_COORD, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с двумя вСщСствСнными ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ, срСди наслСдников ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π»ΠΈ Π±Ρ‹ классы POINT (ВОЧКА), COMPLEX (ΠšΠžΠœΠŸΠ›Π•ΠšΠ‘ΠΠžΠ•_Π§Π˜Π‘Π›Πž) ΠΈ VECTOR (Π’Π•ΠšΠ’ΠžΠ ). Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π° подходящий для Π½Π΅Π³ΠΎ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ.

У14.4 НаслСдованиС бСз классов

Π’ этой Π»Π΅ΠΊΡ†ΠΈΠΈ Π±Ρ‹Π»ΠΈ прСдставлСны Π΄Π²Π° взгляда Π½Π° наслСдованиС: Π±ΡƒΠ΄ΡƒΡ‡ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ, класс-наслСдник ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ слуТбы своСго родитСля плюс Π΅Ρ‰Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ, ΠΎΠ½ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ "являСтся" (ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр наслСдника являСтся Ρ‚Π°ΠΊΠΆΠ΅ экзСмпляром ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ). "ΠŸΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ" ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ…, Π½ΠΎ Π½Π΅ ОО-языков (Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ада (Ada) ΠΈΠ»ΠΈ ΠœΠΎΠ΄ΡƒΠ»Π°-2 (Modula-2)) ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π½ΠΎ Π½Π΅ Ρ‚ΠΈΠΏΡ‹. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ наслСдованиС. ΠžΠ±ΡΡƒΠ΄ΠΈΡ‚Π΅, Π² ΠΊΠ°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ наслСдованиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π²Π΅Π΄Π΅Π½ΠΎ Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ языки. НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈ этом ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚-Π—Π°ΠΊΡ€Ρ‹Ρ‚.

Π£14.5 ΠšΠ»Π°ΡΡΡ‹ Π±Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

НС Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… классов. Π’ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π»Π΅ΠΊΡ†ΠΈΠΉ Π±Ρ‹Π» ΡƒΠΊΠ°Π·Π°Π½ Π΄Ρ€ΡƒΠ³ΠΎΠΉ способ создания класса Π±Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ ΠΏΡƒΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ создания. Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½Ρ‹ Π»ΠΈ эти Π΄Π²Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°? МоТно Π»ΠΈ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ случаи, ΠΊΠΎΠ³Π΄Π° использованиС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅, Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ? (Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅: Π² ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ классС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ…ΠΎΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.)

Π£14.6 ΠžΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ

ΠžΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы нСльзя ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсии класса Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΎΡΡ‚Π°Π²Π°Π»ΠΈΡΡŒ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ "Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ" Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚: ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ПО ΠΈΠ½ΠΎΠ³Π΄Π° хочСтся Π²ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ Π² ΠΈΠ³Ρ€Ρƒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅, ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ практичСский ΠΎΠΏΡ‹Ρ‚ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ аспСкты систСмы Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… аспСктах. ΠžΠ±ΡΡƒΠ΄ΠΈΡ‚Π΅ Π΄ΠΎΠ²ΠΎΠ΄Ρ‹ Π·Π° ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ² Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² компиляторС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ "ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ", ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (ΠΊΠ°ΠΊ ΠΏΡƒΡΡ‚ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ). ΠžΠ±ΡΡƒΠ΄ΠΈΡ‚Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ.

Π£14.7 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° поиска Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… (сСмСстровый ΠΏΡ€ΠΎΠ΅ΠΊΡ‚)

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

Π£14.8 Π’ΠΈΠ΄Ρ‹ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ?

Π£14.9 ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½Ρ‹Π΅ числа

(Π­Ρ‚ΠΎ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ знакомство со всСми лСкциями Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ 5-ΠΉ курса "ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования".) Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, рассмотрСнном ΠΏΡ€ΠΈ обсуТдСнии интСрфСйса ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, использовались комплСксныС числа с двумя Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ прСдставлСниями, ΠΏΡ€ΠΈ этом ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ измСнСния Π² прСдставлСниях ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ "Π·Π° ΠΊΠ°Π΄Ρ€ΠΎΠΌ". ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ эквивалСнтный Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ наслСдования, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс COMPLEX (ΠšΠžΠœΠŸΠ›Π•ΠšΠ‘ΠΠ«Π•) ΠΈ Π΅Π³ΠΎ наслСдников CARTESIAN_COMPLEX (ΠšΠžΠœΠŸΠ›Π•ΠšΠ‘ΠΠ«Π•_Π’_Π”Π•ΠšΠΠ Π’ΠžΠ’Π«Π₯_ΠšΠžΠžΠ Π”Π˜ΠΠΠ’ΠΠ₯) ΠΈ POLAR_COMPLEX (ΠšΠžΠœΠŸΠ›Π•ΠšΠ‘ΠΠ«Π•_Π’_ΠŸΠžΠ›Π―Π ΠΠ«Π₯_ΠšΠžΠžΠ Π”Π˜ΠΠΠ’ΠΠ₯).

ЛСкция 15. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС

ΠŸΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ наслСдования Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°. Π˜Π·ΡƒΡ‡Π°Ρ Π΅Π³ΠΎ основы, ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ классы ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… классов-Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ. Π­Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, извСстная ΠΊΠ°ΠΊ мноТСствСнноС (multiple) наслСдованиС (ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΠΎΠ΅ Ρ‚Π°ΠΊ Π² противовСс Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠΌΡƒ (single) наслСдованию), Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½Π° для построСния Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… ОО-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ мноТСствСнного наслСдования

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС это, ΠΏΠΎ сути, прямоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠΆΠ΅ рассмотрСнных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² наслСдования, - класс Π²ΠΏΡ€Π°Π²Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ число Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ. Однако, изучая этот вопрос Π±ΠΎΠ»Π΅Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Π΄Π²Π΅ интСрСсныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

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

[x]. Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ (repeated) наслСдованиС, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄Π²Π° класса связаны ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΠΎΠΊ-ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΈΠΌ способом.

Выясним, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго, Π² ΠΊΠ°ΠΊΠΈΡ… ситуациях мноТСствСнноС наслСдованиС ΠΈ Π² самом Π΄Π΅Π»Π΅ умСстно. Для этого рассмотрим ряд Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², заимствованных ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½Ρ‹Ρ… областСй.

Π’Π°ΠΊΠΎΠΉ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ экскурс Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ нСсмотря Π½Π° ΡΠ»Π΅Π³Π°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ, простоту мноТСствСнного наслСдования ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² Π½Π΅ΠΌ, дСмонстрация этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° подчас создаСт Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ слоТного ΠΈ таинствСнного. И хотя эту Ρ‚ΠΎΡ‡ΠΊΡƒ зрСния Π½Π΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ Π½ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, Π½ΠΈ тСория, ΠΎΠ½Π° Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΠΈΠ»Π°ΡΡŒ достаточно ΡˆΠΈΡ€ΠΎΠΊΠΎ, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ просто обязаны ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ случаСв, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… мноТСствСнноС наслСдованиС Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€, нСподходящий для ввСдСния

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

Π’ стандартной Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ€Π΅Ρ‡ΡŒ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎ классах TEACHER ΠΈ STUDENT, ΠΈ Π²Π°ΠΌ Ρ‚ΡƒΡ‚ ΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ студСнты Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°ΡŽΡ‚, ΠΈ ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽΡ‚ ввСсти класс TEACHING_ASSISTANT, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚ TEACHER ΠΈ STUDENT.

Рис. 15.1.  ΠŸΡ€ΠΈΠΌΠ΅Ρ€ мноТСствСнного наслСдования

Π’Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚, Π² этой схСмС Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ? НС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Но ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ½ вСсьма Π½Π΅ΡƒΠ΄Π°Ρ‡Π΅Π½. ВсС Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ STUDENT ΠΈ TEACHER - Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ абстрактныС понятия, Π° Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ Π½Π° ΠΎΠ΄Π½Ρƒ Ρ‚Π΅ΠΌΡƒ UNIVERSITY_PERSON. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΡƒΠ²ΠΈΠ΄Π΅Π² ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ Π² Ρ†Π΅Π»ΠΎΠΌ, ΠΌΡ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ просто мноТСствСнного, Π½ΠΎ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ (repeated) наслСдования - схСмы, ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌΠΎΠΉ ΠΏΠΎΠ·ΠΆΠ΅ Π² этой Π»Π΅ΠΊΡ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ класс являСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ наслСдником Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса двумя ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ путями:

Рис. 15.2.  Π это ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ наслСдования

Π”ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ наслСдованиС - это особый случай. Π•Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большого ΠΎΠΏΡ‹Ρ‚Π° Π² использовании Π±ΠΎΠ»Π΅Π΅ простых Ρ„ΠΎΡ€ΠΌ пороТдСния классов. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ нСльзя ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ с Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌΠΈ просто ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ создаСт Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, наслСдуСмых ΠΎΡ‚ ΠΎΠ±ΠΎΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ свойствС, приходящСм ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ°. ΠŸΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π½Π΅ составит Ρ‚Ρ€ΡƒΠ΄Π°. Но Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ ошибкой Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ с Ρ‚Π°ΠΊΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ нСпростых случаСв, дСлая Π²ΠΈΠ΄, Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ для всСго мноТСствСнного наслСдования.

По-настоящСму распространСнныС случаи мноТСствСнного наслСдования Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ ΠΈΡ… основС - Π½Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΎΠ΄Π½ΠΎΠΉ, Π° сочСтаниС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… абстракций. ИмСнно это Ρ‡Π°Ρ‰Π΅ всСго ΠΈ трСбуСтся ΠΏΡ€ΠΈ построСнии структур наслСдования, ΠΈΠΌΠ΅Π½Π½ΠΎ это ΠΈ слСдуСт ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ знакомствС с ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠΌ. Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ - ΠΈΠ· этой сСрии.