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

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

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

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ класс содСрТит всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°, ΠΊΠ°ΠΊ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² самом классС, Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΈΠΌ ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² (вторая катСгория ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠΉ отличаСтся лишь ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ). Π’ случаС наличия ΠΌΠ΅Ρ‚ΠΎΠΊ Π² сСкциях объявлСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, feature - Access, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ. Π‘Π΅ΠΊΡ†ΠΈΠΈ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сСкции ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π²Ρ‹ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ.

На рисункС ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Ρ‡Π°ΡΡ‚ΡŒ плоской Ρ„ΠΎΡ€ΠΌΡ‹ класса LINKED_TREE ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Base. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Class Tool Π² срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ISE. Для повторСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° настройтС Class Tool Π½Π° LINKED_TREE ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Flat.

Рис. 15.14.  ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ плоской Ρ„ΠΎΡ€ΠΌΡ‹

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ плоской Ρ„ΠΎΡ€ΠΌΡ‹

Плоская Ρ„ΠΎΡ€ΠΌΠ° класса - Ρ†Π΅Π½Π½Ρ‹ΠΉ инструмСнт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. ИмСнно ΠΎΠ½Π° позволяСт ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ класса, собранныС Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС, игнорируя Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Π² ΠΈΠ³Ρ€Π°Ρ… с наслСдованиСм. ΠŸΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ тСкста класса Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ стоит Π·Π° ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· нСдостатков наслСдования. Плоская Ρ„ΠΎΡ€ΠΌΠ° класса Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, формируя ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ происходящСго.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΏΡ€ΠΈ построСнии Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠΉ вСрсии класса, Π½Π΅ ΠΎΠ±Ρ€Π΅ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ историСй пороТдСния. ΠŸΠΎΡ‚Π΅Ρ€Ρ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° сниТаСт Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ класса.

ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ плоская Ρ„ΠΎΡ€ΠΌΠ°

Плоская Ρ„ΠΎΡ€ΠΌΠ° класса Π΄Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ описаниС класса. Помимо Ρ€ΠΎΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½Π° ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π² интСрСсах Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΎΠ½Π° прСдставляСт интСрСс для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Π΄Π΅Π»ΠΎ с самим классом ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ. ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ ΠΆΠ΅ класса Π½ΡƒΠΆΠ½Π° Π±ΠΎΠ»Π΅Π΅ абстрактная ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° с мСньшим числом Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ.

Π’ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, Ρ€ΠΎΠ»ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ класса (ΠΊΠ½ΠΎΠΏΠΊΠ° short Π½Π° рисункС обСспСчиваСт Π΅Π΅ построСниС).

ОбъСдинСниС Π΄Π²ΡƒΡ… понятий Π΄Π°Π΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ понятиС ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΉ плоской Ρ„ΠΎΡ€ΠΌΡ‹ (flat-short form). Как ΠΈ краткая Ρ„ΠΎΡ€ΠΌΠ° класса, ΠΎΠ½Π° содСрТит лишь ΠΎΠ±Ρ‰Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π² Π½Π΅ΠΉ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ скрытыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π° для экспортируСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½Π΅ приводится рСализация, Π² частности, прСдлоТСния do. Как ΠΈ плоская Ρ„ΠΎΡ€ΠΌΠ°, краткая плоская Ρ„ΠΎΡ€ΠΌΠ° Π·Π°Π΄Π°Π΅Ρ‚ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ класса - ΠΈ унаслСдованныС, ΠΈ описанныС Π² Π½Π΅ΠΌ самом.

ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ плоская Ρ„ΠΎΡ€ΠΌΠ° являСтся основным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ докумСнтирования классов, Π² Ρ‚ΠΎΠΌ числС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… классов Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π’ этом Π²ΠΈΠ΄Π΅ информация ΠΎ классС становится доступна Π΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ (ΠΈ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ занимаСтся сопровоТдСниСм класса). ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ плоская Ρ„ΠΎΡ€ΠΌΠ° слуТит для описания всСх классов Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Base [M 1994a].

Π”ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ наслСдованиС

Π”ΡΠ΄ΡŽΡˆΠΊΠ° Π–Π°ΠΊ: Π‘ ΠΊΠ΅ΠΌ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ Π’Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, ΡΡƒΠ΄Π°Ρ€ΡŒ, с ΠΊΠΎΠ½ΡŽΡ…ΠΎΠΌ ΠΈΠ»ΠΈ с ΠΏΠΎΠ²Π°Ρ€ΠΎΠΌ? Ибо я Ρƒ Вас ΠΈ Ρ‚ΠΎ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

ΠœΠΎΠ»ΡŒΠ΅Ρ€, "Π‘ΠΊΡƒΠΏΠΎΠΉ"

Π”ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ наслСдованиС (repeated inheritance) Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° класс являСтся ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡƒΡ‚ΠΈ наслСдования. ΠŸΡ€ΠΈ этом Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈ слСдуСт Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ.

Π’ явном Π²ΠΈΠ΄Π΅ Ρ‚Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ наслСдования Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² достаточно ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ…. Если вас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ лишь ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ сразу ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Ρ‡Ρ‚Π΅Π½ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ.

ΠžΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΊΠΈ

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ класс D Π±Ρ‹Π» наслСдником классов B ΠΈ C, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ класса A. Π­Ρ‚Ρƒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ наслСдованиСм.

Рис. 15.15.  Π”ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ наслСдованиС

Если B ΠΈ C наслСдники ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² A, (случай 1), Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ наслСдованиС имСнуСтся косвСнным. Если A, B ΠΈ C - это ΠΎΠ΄ΠΈΠ½ класс (случай 2), - наслСдованиС имСнуСтся прямым, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записано Π² Π²ΠΈΠ΄Π΅:


class D inherit

A

A

...

feature

...

end



По ΠΎΠ±Π΅ стороны ΠΎΠΊΠ΅Π°Π½Π°

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ ΠΏΡ€ΠΎΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ наслСдования ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ΠŸΡƒΡΡ‚ΡŒ класс DRIVER ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹:


age: INTEGER

address: STRING

violation_count: INTEGER -- Число записанных Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΉ



ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:


pass_birthday is do age := age + 1 end

pay_fee is

-- ΠžΠΏΠ»Π°Ρ‚Π° Π΅ΠΆΠ΅Π³ΠΎΠ΄Π½ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ.

do ... end



Класс наслСдник, US_DRIVER ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ БША, Π΄Ρ€ΡƒΠ³ΠΎΠΉ, FRENCH_DRIVER, - Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π€Ρ€Π°Π½Ρ†ΠΈΠΈ.

Рассмотрим ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π³ΠΎΠ΄Π° приходится Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Π² ΠΎΠ±Π΅ΠΈΡ… странах. НуТного класса Ρƒ нас Π΅Ρ‰Π΅ Π½Π΅Ρ‚, ΠΈ простым Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ каТСтся мноТСствСнноС наслСдованиС. ОпишСм класс FRENCH_US_DRIVER ΠΊΠ°ΠΊ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚ US_DRIVER ΠΈ FRENCH_DRIVER. Налицо Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ наслСдованиС.

Рис. 15.16.  Π’ΠΈΠΏΡ‹ Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ

БовмСстноС использованиС ΠΈ рСпликация

Из ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²Ρ‹Ρ‚Π΅ΠΊΠ°Π΅Ρ‚ основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ наслСдования: ΠΊΠ°ΠΊΠΎΠ² смысл ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° (FRENCH_US_DRIVER), ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ° (DRIVER)?

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

Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π΅ ΠΈΠΌΠ΅Π½:

Класс, Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΡ‚ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ age (Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ pass_birthday), наслСдованныС классом FRENCH_US_DRIVER ΠΎΡ‚ ΠΎΠ±ΠΎΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ "Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ", поэтому Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ³Π»Π° Π±Ρ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ лишь Π² случаС пСрСопрСдСлСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· классов. Π§ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π° ΠΏΠΎΠΊΠ° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π½Π΅ происходит.

Если ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ° ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ наслСдуСтся ΠΎΡ‚ Π΄Π²ΡƒΡ… ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ, ΠΎΠ½ становится ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°. Π­Ρ‚ΠΎΡ‚ случай Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ совмСстным использованиСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (sharing).

ВсСгда Π»ΠΈ примСняСтся совмСстноС использованиС? НСт. Рассмотрим ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ address, pay_fee, violation_count. ΠžΠ±Ρ€Π°Ρ‰Π°ΡΡΡŒ Π² слуТбу рСгистрации автотранспорта Π² Ρ€Π°Π·Π½Ρ‹Ρ… странах, Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ скорСС всСго Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ адрСса ΠΈ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π΅ΠΆΠ΅Π³ΠΎΠ΄Π½Ρ‹Π΅ сборы. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΈ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ ΠΏΡ€Π°Π²ΠΈΠ» Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², слСдуСт ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ΅ двумя Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. Π”Π°Π½Π½Ρ‹ΠΉ случай Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ (replication).

Π­Ρ‚ΠΎΡ‚, Π΄Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ добьСмся ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ, Ссли всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ° Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ совмСстно ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ настройки ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΏΡ€ΠΈ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ наслСдовании.

Π§Ρ‚ΠΎΠ±Ρ‹ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², достаточно ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡƒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ этого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΎΡ‚ ΠΎΠ±ΠΎΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ. Но ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ? ДСлая всС Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚: ΠΏΠΎΡ€ΠΎΠ΄ΠΈΠ² ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΠ΄ двумя Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.

Π­Ρ‚Π° идСя Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ, согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ имя Π² классС слуТит ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ лишь ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ рСпликация ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ наслСдовании.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ наслСдования

Π£ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° вСрсии Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, наслСдуСмыС ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. ВСрсии, наслСдуСмыС ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, являясь Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π° Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ°.

Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡΡΡŒ ΠΊΠ°ΠΊ Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, Ρ‚Π°ΠΊ ΠΈ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ: ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° класса Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π²Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Для Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΎΠ½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ поля Π²ΠΎ всСх экзСмплярах класса, для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° - Π½ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ - с Ρ‚Π΅ΠΌ ΠΆΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ особых случаСв, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, рСпликация ΠΌΠΎΠΆΠ΅Ρ‚ Π½ΠΎΡΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€: фактичСского дублирования ΠΊΠΎΠ΄Π° Π½Π΅ происходит, Π½ΠΎ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ Π΄Π²ΡƒΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ.