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

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

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

...



ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅

Π₯Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся созданиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΎΠ΄Π½ΠΎΠΉ абстракции.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ сСбС GENERAL_ACCOUNT - класс, содСрТащий всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с банковскими счСтами: ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ open, withdraw, deposit, code (для снятия Π΄Π΅Π½Π΅Π³ Ρ‡Π΅Ρ€Π΅Π· Π±Π°Π½ΠΊΠΎΠΌΠ°Ρ‚), change_code ΠΈ Ρ‚.Π΄.,- Π½ΠΎ Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для использования ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π° ΠΏΠΎΡ‚ΠΎΠΌΡƒ Π½Π΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π•Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΊΠ°ΠΊ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΎΠ±Π»ΠΈΠΊΠΈ родитСля: ΠΎΠ½ΠΈ Π½Π΅ содСрТат Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ лишь прСдлоТСниями экспорта. Один экспортируСт open ΠΈ deposit, Π²Ρ‚ΠΎΡ€ΠΎΠΉ, наряду с Π½ΠΈΠΌΠΈ, - withdraw ΠΈ code, ΠΈ Ρ‚. Π΄.

Рис. 16.12.  Π Π°Π·Π½Ρ‹Π΅ ΠΎΠ±Π»ΠΈΠΊΠΈ ΠΎΠ΄Π½ΠΎΠΉ абстракции

Π­Ρ‚Π° схСма Π² обсуТдСнии ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ наслСдования (см. Π»Π΅ΠΊΡ†ΠΈΡŽ 6 курса "ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования") носит Π½Π°Π·Π²Π°Π½ΠΈΠ΅ наслСдования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй (facility inheritance).

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ ΠΎΠ±Π»ΠΈΠΊΠ° (view) являСтся классичСским Π² области Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Π³Π΄Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, прСдоставляя ΠΈΠΌ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΡ€Π°Π²Π°.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ касаСтся классов, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ шла ΠΎ мноТСствСнном наслСдовании. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ right класса CELL скрыт Π² Π½Π΅ΠΌ ΠΈΠ»ΠΈ, Ρ‚ΠΎΡ‡Π½Π΅Π΅ говоря, экспортируСтся лишь классу LIST. ЀактичСски Ρ‚Π°ΠΊ обстоят Π΄Π΅Π»Π° со всСми ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ CELL, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ этот класс Π±Ρ‹Π» ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ со списками. Однако Π² Π΄Π΅Ρ€Π΅Π²Π΅ (классС TREE), ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ΅ ΠΊΠ°ΠΊ CELL, Ρ‚Π°ΠΊ ΠΈ LIST, right Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ доступ ΠΊ ΠΏΡ€Π°Π²ΠΎΠΌΡƒ Π±Ρ€Π°Ρ‚Ρƒ ΠΈ являСтся Ρ€Π΅ΡΠΏΠ΅ΠΊΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ‡Π»Π΅Π½ΠΎΠΌ общСства экспортируСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Π° такая Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ?

БтратСгия экспорта, согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ класса ΠΈΠΌΠ΅Π΅Ρ‚ свою ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ, хотя ΠΈ услоТняСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠΎΠ², Π½ΠΎ ΠΏΡ€ΠΈΠ΄Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ дСйствиям Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡŒ ΠΈ ΠΈΠ½Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ. Π’Π°ΠΊ, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ языки ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ экспортирован ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ класса, Π½ΠΎ ΠΈ Ρ‚ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ доступСн Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌ. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹. Π’ частности:

[x]. ΠΌΠ½Π΅ Π½Π΅ извСстно ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΏΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ этой возмоТности, нСясно, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌ, Π° ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Ρ‚ΡŒ скрытым. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ языка, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π½Π΅Ρ‚ Π½ΠΈ малСйшСй Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, ΠΈΠΌΠ΅ΡŽΡ‚ вСсьма ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ. (Для сравнСния: ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, посвящСнноС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ скрытия ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ: Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ АВД, ΠΈ Π½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ; ΠΏΡ€ΠΎΡ‡Π΅Π΅ слСдуСт ΡΠΊΡ€Ρ‹Ρ‚ΡŒ.)

[x]. ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ограничСния ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹Ρ… классов, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² языкС Simula ΠΈ Π΄Ρ€., Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ.

ΠŸΡ€ΠΈ Π±Π»ΠΈΠ·ΠΊΠΎΠΌ рассмотрСнии отсутствиС ясных мСтодологичСских установок Π½Π΅ удивляСт. НаслСдованиС являСтся Π²ΠΎΠΏΠ»ΠΎΡ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚-Π—Π°ΠΊΡ€Ρ‹Ρ‚: позволяя Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ класс, написанный Π²Π°ΠΌΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ программистом Π²Ρ‡Π΅Ρ€Π° ΠΈΠ»ΠΈ 20 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄, ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ с Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡŒ ΠΏΡ€ΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

ΠŸΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŽ класса ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈ Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ класса, - Π·Π½Π°Ρ‡ΠΈΡ‚ Π»ΠΈΡˆΠΈΡ‚ΡŒΡΡ основного свойства наслСдования.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ классов CELL ΠΈ TREE Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π΅Π½: ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ CELL Π΅Π³ΠΎ Ρ†Π΅Π»ΡŒΡŽ Π±Ρ‹Π»Π° лишь ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° работоспособности LIST, Π° ΠΏΠΎΡ‚ΠΎΠΌΡƒ right ΠΈ put_right слуТили Π² Π½Π΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ цСлям. И лишь ΠΏΠΎΠ·Π΄Π½Π΅Π΅ этим ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ нашли Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² классС-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ΅ TREE. НС Π±ΡƒΠ΄ΡŒ этой открытости, наслСдованиС ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΡ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΎ Π±Ρ‹ свой ΡˆΠ°Ρ€ΠΌ.

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

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

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ

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

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹: использованиС интСрфСйсов ΠΈ использованиС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ. Π›ΡŽΠ±ΠΎΠΉ класс - это рСализация (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, частичная) АВД. Он содСрТит ΠΊΠ°ΠΊ интСрфСйс, Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ АВД ΠΈ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠΉ лишь "Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ айсбСрга", Ρ‚Π°ΠΊ ΠΈ Π½Π°Π±ΠΎΡ€ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС интСрфСйса ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ согласиС со спСцификациСй, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ - вашС согласиС ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒΡΡ Π½Π° свойства класса, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° АВД.

БовмСстно для ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Ρ†Π΅Π»Π΅ΠΉ эти Π΄Π²Π΅ возмоТности Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ мноТСство возмоТностСй Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΈΡ… абстрактныС свойства ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π±Ρ‹Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΎΡ‚ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС интСрфСйсов. Но Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΡ‚ΡŒΡΡ опрСдСлСнная рСализация, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° обСспСчиваСт Π½ΡƒΠΆΠ½ΡƒΡŽ основу вашСго Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Π­Ρ‚ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования Π²Π·Π°ΠΈΠΌΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° ΠΈ ΠΎΠ±Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π·Π°ΠΊΠΎΠ½Π½Ρ‹.

По сути, ΠΈΡ… Π²ΠΎΠΏΠ»ΠΎΡ‰Π΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΌΠ΅ΠΆΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… мСсто ΠΏΡ€ΠΈ ОО-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ: ΠΊΠ»ΠΈΠ΅Π½Ρ‚ обСспСчиваСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС интСрфСйсов, наслСдованиС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π²Ρ‹ бСзусловно ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Π±ΠΎΠ»Π΅Π΅ отвСтствСнноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² пСрспСктивС. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, став наслСдником класса, Π²Ρ‹ свяТСтС сСбя Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°ΠΌΠΈ.

Π‘Π»ΠΎΠ²ΠΎ Π² Π·Π°Ρ‰ΠΈΡ‚Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ

Π’ Ρ‡Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° нСдовСрия ΠΊ наслСдованию Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ? Π― ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ Π»Π΅ΠΆΠΈΡ‚ Π² области психологии. Π’Ρ€ΠΈΠ΄Ρ†Π°Ρ‚ΠΈΠ»Π΅Ρ‚Π½ΠΈΠΉ программистский ΠΎΠΏΡ‹Ρ‚ оставил Π½Π°ΠΌ лишь сомнСния насчСт самой ΠΈΠ΄Π΅ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ. И Π΄Π°ΠΆΠ΅ слово "рСализация" ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»ΠΎ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΡ€ΡƒΠ³Π°Ρ… ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΌΡ‹ Π²Π΅Π΄Π΅ΠΌ Ρ€Π΅Ρ‡ΡŒ ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅, Π° Ссли ΠΈ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, Ρ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ с "Π½ΠΎ", "лишь" ΠΈΠ»ΠΈ "Ρ‚ΠΎΠ»ΡŒΠΊΠΎ".

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

Π”Π²Π° стиля

Ряд основных Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ понятиями, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… шла Ρ€Π΅Ρ‡ΡŒ, ΠΌΡ‹ прСдставили Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Π˜Ρ‚Π°ΠΊ, Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ - "Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ" ΠΈ "Π±Ρ‹Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ"; Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования - интСрфСйсов ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ; скрытиС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ Π΅Π³ΠΎ отсутствиС; Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² поставляСмых модулях ΠΈ отсутствиС Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ.

НаличиС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ² Π² любом случаС Π½Π΅ вносит ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠΉ, ΠΈ Π² зависимости ΠΎΡ‚ контСкста ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½. ΠžΡ‚Π²Π°ΠΆΠΈΠΌΡΡ Π½Π° смСлый шаг ΠΈ свСдСм эти противополоТности Π² ΠΎΠ΄Π½ΠΎ Ρ†Π΅Π»ΠΎΠ΅:

ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠŸΠΎΡ‚ΠΎΠΌΠΎΠΊ

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС интСрфСйсов

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ скрываСтся

Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ рСализация Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π°


ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ Π½Π΅ скрываСтся

Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ рСализация Π½Π΅ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π°


Π’Π°Π±Π»ΠΈΡ†Π° 16.1.БлияниС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… противополоТностСй


Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π½ΠΎ я Π½Π΅ знаю Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡ‚ΠΎΠ»ΡŒ ΠΆΠ΅ простого, доступного ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎΠ³ΠΎ.

Π’Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½Ρ‹ΠΉ экспорт

Говоря ΠΎ наслСдовании ΠΈ скрытии ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, нСльзя ΠΎΠ±ΠΎΠΉΡ‚ΠΈ вопрос ΠΎ Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠΌ экспортС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Класс A, Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ f классу B: