ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅, ΠΎΡ‡Π΅Π½ΡŒ быстро...
Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ вмСстС Π΄ΠΎ ΠΏΠΎΠ±Π΅Π΄Ρ‹

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’Π°ΠΆΠ½Ρ‹ΠΌ вопросом являСтся Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ‡Π»Π΅Π½ΠΎΠ² Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса для ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов. К ΠΏΠΎΠ»ΡΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠ°ΠΊ protected, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Π½Π΅ΡˆΠ½ΠΈΡ… классов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ сам ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс, Π² ΡΡ‚ΠΎΠΌ случаС доступа ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ классу Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚. ΠšΠ»Π°ΡΡΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ ΠΈ Ρ‡Π°ΡΡ‚Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

1. ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ наслСдованиС

2. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ классы

3. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса

4. ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

5. Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ классов

5.1 Абстрактный Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс

5.2 ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

6. НаслСдованиС ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°

6.1 ΠžΠ±Ρ‰Π΅Π΅ ΠΈ Ρ‡Π°ΡΡ‚Π½ΠΎΠ΅ наслСдованиС

6.2 Π£Ρ€ΠΎΠ²Π½ΠΈ наслСдования

6.3 ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС

7. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΈ мноТСствСнном наслСдовании

8. ΠΠ΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ мноТСствСнном наслСдовании

9. Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: классы Π² ΠΊΠ»Π°ΡΡΠ°Ρ…

10. Роль наслСдования ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… источников

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ основой управлСния процСссом Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ являСтся ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° сообщСний ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ совмСстно с ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡΠΌΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΡΡ‚ΠΎΠΌ состоит Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ООП ΠΎΡ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ программирования, Π³Π΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ) Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ориСнтированная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° состоит ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² — ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π°, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ интСрфСйсы.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ свойствами:

1. абстракции — Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π°Ρ… ΠΈΠ»ΠΈ свойствах ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° ΠΏΡƒΡ‚Π΅ΠΌ мыслСнного удалСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… частностСй ΠΈΠ»ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²;

2. инкапсуляции — ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°, ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ вмСсти ΠΊΠΎΠ΄ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ½ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚, ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΈΡ… ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠΎΠΌΠ΅Ρ… ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ использования;

3. наслСдования — процСсса, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ свойства Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, Ρ‚. Π΅. поддСрТиваСтся иСрархичСской классификации;

4. ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° — свойства, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ интСрфСйс для ΠΎΠ±Ρ‰Π΅Π³ΠΎ класса дСйствий.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚:

Β· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ основных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ;

Β· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π΄Π°Π½Π½Ρ‹Ρ… состояния) для Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²;

Β· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ второстСпСнных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΈΡ… Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…;

Β· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ иСрархичСской систСмы классов, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹;

Β· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ класса;

Β· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ;

Β· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ сообщСниС;

Β· очистка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ устранСниС всСх Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π²ΡˆΠΈΡ…ΡΡ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ;

Β· ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΡ‚Π»Π°Π΄ΠΊΠ°, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° ΠΈ Ρ‚СстированиС.

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

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

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ стрСлка Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΠ½ΠΎΠ΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, Ρ‡Π΅ΠΌ Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΈ. Если ΠΎΠ½Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Π½ΠΈΠ·, Ρ‚ΠΎ ΡΡ‚ΠΎ называСтся наслСдованиСм. Однако ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Π²Π΅Ρ€Ρ…, ΠΎΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ класса ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ, ΠΈ Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΡ‚.

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

Π’Π°ΠΆΠ½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π° являСтся ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ распространСния Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ классов. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ классы, созданныС ΠΊΠ΅ΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ, Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, просто создавая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ классы, подходящиС для частной ситуации.

ΠœΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ эти возмоТности наслСдования Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ познакомимся с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ тонкостями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

Рис. 1. НаслСдованиС

2. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ классы ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ COUNTPP3 ΠΈΠ· Π³Π»Π°Π²Ρ‹ 8 «ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ»? Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Counter ΠΊΠ°ΠΊ счСтчик. Он ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Π½ΡƒΠ»Π΅ΠΌ ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ числом ΠΏΡ€ΠΈ использовании конструктора, ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ operator++() ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° get_count ().

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π·Π°Ρ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΠΈΠ» Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ класса Counter ΠΈ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ. ΠœΡ‹ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‰ΠΈ: Π½Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ Π½ΡƒΠΆΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ счСтчика. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ подсчСт посСтитСлСй Π±Π°Π½ΠΊΠ° Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠŸΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ посСтитСля счСтчик ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ своС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ — ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚.

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

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях ΠΌΡ‹ ΠΏΡ€ΠΎΡΡ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅ΠΌ доступа ΠΊ ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ класса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΎΠ½ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚раняСтся ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ классов.

Π’ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ наслСдованиС для создания классов Π½Π° Π±Π°Π·Π΅ Counter.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° начинаСтся с ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ класса Count, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡŒ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ появлСния Π² COUNTPP3 (с ΠΎΠ΄Π½ΠΈΠΌ нСбольшим ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΏΠΎΠ·Π΄Π½Π΅Π΅).

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ для простоты ΠΌΡ‹ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π² ΡΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ постфиксного увСличСния, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΡƒΡŽ использования Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ++.

ВслСд Π·Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ класса Count Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ класс, CountDn. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ operator—(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ счСтчик. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя CountDn наслСдуСт всС возмоТности класса Counter: конструктор ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС описания класса CountDn указываСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классом ΠΎΡ‚ Counter.

class CountDn: public Counter

Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π½Π°ΠΊ двоСточия (Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉΡΡ для опрСдСлСния области дСйствия), Π·Π° Π½ΠΈΠΌ слСдуСт ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово public ΠΈ ΠΈΠΌΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Counter. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ классами. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, эта строка Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ CountDn являСтся наслСдником класса Counter (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова public ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΏΠΎΠ·Π΄Π½Π΅Π΅).

Π—Π½Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, являСтся Π²Π°ΠΆΠ½ΠΎΠΉ Ρ‚Π΅ΠΌΠΎΠΉ Π² Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ. Π­Ρ‚ΠΎ называСтся ΠΏΡ€Π°Π²Π°ΠΌΠΈ доступа.

Вспомним, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ наслСдовании Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main () ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ COUNTEN ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Counter: Counter c2; // ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Π’Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Π΅Π΄ΡƒΡ‚ сСбя Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ класс CountDn Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π».

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ наслСдованиС Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ. Π‘Π°Π·ΠΎΠ²ΠΎΠΌΡƒ классу ΠΈ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ нСдоступны ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ классы. Π’ Π½Π°ΡˆΠ΅ΠΌ случаС это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса Counter, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ c2, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ operator—() класса CountDn. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ счСтчика, Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ класса CountDn, Π° Π½Π΅ ΠΊΠ»Π°ΡΡΠ° Counter.

3. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Π­Ρ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ COUNTEN. Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса CountDn? Π‘ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ конструктором класса Counter с ΠΎΠ΄Π½ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ? ΠžΡ‚Π²Π΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Как ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ COUNTEN, компилятор Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ конструктор Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ конструктор для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса. Π­Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ COUNTEN2:

// counten2. cpp

// конструкторы Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классах

#include

using namespace std;

class Counter

{

protected: // Π·Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚ΡƒΡ‚ Π½Π΅ ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ private

unsigned int count; // счСтчик

public:

Counter (): count () // конструктор Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

{ }

Counter (int c): count (c) // конструктор с ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ

{ }

unsigned int get_count () const // ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ значСния

{ return count; }

Counter operator++ () // ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ увСличСния

{ return Counter (++count); }

};

class CountDn: public Counter

{

public:

CountDn (): Counter () // конструктор Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

{ }

CountDn (int c): Counter (c)// конструктор с ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ

{ }

CountDn operator— () // ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ

{ return CountDn (—count); }

};

int main ()

{

CountDn c1; // ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса CountDn

CountDn c2 (100);

cout << «nc1 = «<< c1. get_count (); // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ значСния Π½Π° ΡΠΊΡ€Π°Π½

cout << «nc2 = «<< c2. get_count ();

++c1; ++c1; ++c1; // ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ c1

cout << «nc1 = «<< c1. get_count (); // ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

—c2; —c2; // ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅ΠΌ c2

cout << «c2 = «<< c2. get_count (); // ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

CountDn c3 = —c2; // создаСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ c3 Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ c2

cout << «nc3 = «<< c3. get_count (); // ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

cout << endl;

return 0;

}

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π²Π° Π½ΠΎΠ²Ρ‹Ρ… конструктора класса CountDn. Π­Ρ‚ΠΎ конструктор Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

CountDn (): Counter ()

{ }

Π’ ΡΡ‚ΠΎΠΌ конструкторС использована новая для нас Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ: имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π° Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ΠΌ. Она ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструктором класса CountDn для Π²Ρ‹Π·ΠΎΠ²Π° конструктора Counter () Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса. Когда ΠΌΡ‹ Π·Π°ΠΏΠΈΡˆΠ΅ΠΌ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main ()

CountDn c1; компилятор создаст ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса CountDn ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ конструктор класса CountDn для Π΅Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ конструктор класса Counter, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Π½ΡƒΠΆΠ½Ρ‹Π΅ дСйствия. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ CountDn () ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈ ΡΠ²ΠΎΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Π²Ρ‹Π·ΠΎΠ²Π° Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ конструктора, Π½ΠΎ Π² Π½Π°ΡˆΠ΅ΠΌ случаС это Π½Π΅ Ρ‚рСбуСтся, поэтому пространство ΠΌΠ΅ΠΆΠ΄Ρƒ скобками пусто.

Π’Ρ‹Π·ΠΎΠ² конструктора Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ лишним, Π½ΠΎ ΡΡ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ смысл. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅, Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΎΠ½ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌΡƒ классу, ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ любого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сначала Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ конструктора.

Π’ ΡΡ‚Ρ€ΠΎΠΊΠ΅:

CountDn c2 (100);

Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструктор класса CountDn с ΠΎΠ΄Π½ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ.

Π­Ρ‚ΠΎΡ‚ конструктор Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ конструктор с ΠΎΠ΄Π½ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΈΠ· Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса:

CountDn (int c): Counter (с) // ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ с ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ся Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса Counter{ }

Вакая конструкция ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ с Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ ΠΎΡ‚ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π° CountDn () Π² Counter (), Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ использован для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main () послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² c1 ΠΈ c2 ΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ с ΠΎΠ΄Π½ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡΡ… присваивания:

CountDn c3 = —c2;

4. ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π°, ΠΊΠ°ΠΊ ΠΈ Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса. Π’ ΡΡ‚ΠΎΠΌ случаС ΠΈΠΌΠ΅Π΅Ρ‚ мСсто ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Вакая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, Ссли для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ классов Π² Π²Π°ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, основанный Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ STAKARAY. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π»Π° стСк, простоС устройство хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Она позволяла ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ числа Π² ΡΡ‚Π΅ΠΊ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΈΡ…. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² ΡΡ‚Π΅ΠΊ слишком ΠΌΠ½ΠΎΠ³ΠΎ чисСл ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠ³Π»Π° Π·Π°Π²ΠΈΡΠ½ΡƒΡ‚ΡŒ ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ пСрСполнСния массива st [ ]. А ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ извлСчСния количСства чисСл, большСго, Ρ‡Π΅ΠΌ находится Π² ΡΡ‚Π΅ΠΊΠ΅, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ бСссмыслСнным, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹Π΅, располоТСнныС Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ массива.

Для исправлСния этих Π΄Π΅Ρ„Π΅ΠΊΡ‚ΠΎΠ² ΠΌΡ‹ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ класс Stack2, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΡ‚ Stack. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса Stack2 Π²Π΅Π΄ΡƒΡ‚ сСбя Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса Stack, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Ρ‚ΡŒ ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ стСк ΠΈΠ»ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ число ΠΈΠ· ΠΏΡƒΡΡ‚ΠΎΠ³ΠΎ стСка.

Π’ ΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ класс Stack Ρ‚ΠΎΡ‚ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ STAKARAY, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ класса ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ protected.

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

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… слуТащих Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. Для упрощСния ситуации Π² Π½Π΅ΠΉ сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ€ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ слуТащих: ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹, занятыС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ, ΡƒΡ‡Π΅Π½Ρ‹Π΅, занятыС исслСдованиями ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅, занятыС ΠΈΠ·Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ²Π°Ρ€Π°.

Π’ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… хранятся ΠΈΠΌΠ΅Π½Π° слуТащих всСх ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ ΠΈ ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π½ΠΎΠΌΠ΅Ρ€Π°. Однако Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°Ρ… содСрТится Π΅Ρ‰Π΅ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΈΡ… Π²Π·Π½ΠΎΡΡ‹ Π² Π³ΠΎΠ»ΡŒΡ„-ΠΊΠ»ΡƒΠ±Ρ‹, Π° Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΡƒΡ‡Π΅Π½Ρ‹Ρ… —количСство ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… статСй.

Рис. 2. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° классов UML для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° EMPLOY

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ начинаСтся с ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса employee. Π­Ρ‚ΠΎΡ‚ класс содСрТит Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ слуТащих ΠΈ ΠΈΡ… Π½ΠΎΠΌΠ΅Ρ€Π°. Он ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ Π½ΠΎΠ²Ρ‹Ρ… класса: manager, scientist ΠΈ laborer. ΠšΠ»Π°ΡΡΡ‹ manager ΠΈ scientist содСрТат Π΄ΠΎΠ±Π°Π²ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΡΡ‚ΠΈΡ… катСгориях слуТащих. Π­Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡ. 2.

5.1 Абстрактный Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса employee. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‰ΠΈΠΉ класс, СдинствСнной Ρ†Π΅Π»ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π»ΠΎ ΡΡ‚Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов.

Класс laborer выполняСт Ρ‚Π΅ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ»Π°ΡΡ employee, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ ΠΎΡ‚ Π½Π΅Π³ΠΎ. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ класс laborer Π² Π΄Π°Π½Π½ΠΎΠΌ случаС лишний, Π½ΠΎ, создав Π΅Π³ΠΎ, ΠΌΡ‹ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΠ»ΠΈ, Ρ‡Ρ‚ΠΎ всС классы ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ источник — класс employee. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ класс Laborer, Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ ΠΏΠΎΡ‚рСбуСтся Π΄Π΅Π»Π°Ρ‚ΡŒ измСнСния Π² ΠΊΠ»Π°ΡΡΠ΅ employee.

ΠšΠ»Π°ΡΡΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ employee Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ EMPLOY, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ абстрактными классами, подразумСвая, Ρ‡Ρ‚ΠΎ Ρƒ ΡΡ‚ΠΎΠ³ΠΎ класса Π½Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Однако Ρ‚Π΅Ρ€ΠΌΠΈΠ½ абстрактный ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅.

5.2 ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ни Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ, Π½ΠΈ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классах Π½Π΅Ρ‚ конструкторов, поэтому компилятор, Π½Π°Ρ‚Π°Π»ΠΊΠΈΠ²Π°ΡΡΡŒ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠ°

manager m1, m21;

ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ конструктор, установлСнный ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для класса manager, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ конструктор класса employee.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ getdata () ΠΈ putdata () класса employee ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Сля имя ΠΈ Π½ΠΎΠΌΠ΅Ρ€ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΡΡ‚ ΠΈΡ… Π½Π° Π΄ΠΈΡΠΏΠ»Π΅ΠΉ. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ getdata () ΠΈ putdata () классов manager ΠΈ scientist ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса employee ΠΈ ΠΏΡ€ΠΎΠ΄Π΅Π»Ρ‹Π²Π°ΡŽΡ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ. ΠœΠ΅Ρ‚ΠΎΠ΄ getdata () класса manager Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Сля Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΡΡƒΠΌΠΌΡƒ взносов Π² Π³ΠΎΠ»ΡŒΡ„-ΠΊΠ»ΡƒΠ±, a putdata () Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ эти значСния. Π’ ΠΊΠ»Π°ΡΡΠ΅ scientist эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ количСства ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ.

6. НаслСдованиС ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ CIRCLES Π³Π»Π°Π²Ρ‹ 6 «ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΊΠ»Π°ΡΡΡ‹» ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ класс Π±Ρ‹Π» создан для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° ΡΠΊΡ€Π°Π½ ΠΊΡ€ΡƒΠ³ΠΎΠ². ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΡ€ΡƒΠ³ΠΎΠ² сущСствуСт Π΅Ρ‰Π΅ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΈΠ³ΡƒΡ€: ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹, Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ. Π‘Π»ΠΎΠ²ΠΎ «Ρ„ΠΈΠ³ΡƒΡ€Π°» являСтся ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ΠΌ, Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ это ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΠΎΠ»Π΅Π΅ слоТной, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ понятной, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая рисуСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΡ… ΠΎΠ±Ρ‰ΠΈΡ… характСристик.

Π’ Ρ‡Π°ΡΡ‚ности, ΠΌΡ‹ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ класс shape ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс ΠΈ Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… класса: circle, rect (для ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ²) ΠΈ tria (для Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ²). Как ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ здСсь Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ консольной Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π” «Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ консольной Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ», ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π’ «Microsoft Visual C++» ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π“ «Borland C++ Builder», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ графичСскиС Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² Π²Π°ΡˆΠ΅ΠΌ компиляторС.

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° рисуСт Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΈΠ³ΡƒΡ€Ρ‹: Π³ΠΎΠ»ΡƒΠ±ΠΎΠΉ ΠΊΡ€ΡƒΠ³, красный ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ ΠΈ Π·Π΅Π»Π΅Π½Ρ‹ΠΉ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ.

ΠžΠ±Ρ‰ΠΈΠ΅ характСристики всСх Ρ„ΠΈΠ³ΡƒΡ€, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈΡ… Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ†Π²Π΅Ρ‚, ΡΡ‚ΠΈΠ»ΡŒ заполнСния, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² ΠΊΠ»Π°ΡΡΠ΅ shape. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹. НапримСр, ΠΊΡ€ΡƒΠ³ ΠΈΠΌΠ΅Π΅Ρ‚ радиус, Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ Π²Ρ‹ΡΠΎΡ‚Ρƒ. ΠœΠ΅Ρ‚ΠΎΠ΄ draw () класса shape содСрТит Π² ΡΠ΅Π±Π΅ дСйствия, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ„ΠΈΠ³ΡƒΡ€: устанавливаСт ΠΈΡ… Ρ†Π²Π΅Ρ‚ ΠΈ ΡΡ‚ΠΈΠ»ΡŒ заполнСния. ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° draw () Π² ΠΊΠ»Π°ΡΡΠ°Ρ… circle, rect ΠΈ tria ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΡ€ΠΎΡ€ΠΈΡΠΎΠ²ΠΊΡƒ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Ρ„ΠΎΡ€ΠΌΡ‹.

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ класс shape являСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ абстрактного класса, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅ ΠΏΡ€ΠΈΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ класса. Вопрос, ΠΊΠ°ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ нарисован ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса shape, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ вывСсти Π½Π° ΡΠΊΡ€Π°Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ. Класс shape сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΠΉ, ΠΎΠ±Ρ‰ΠΈΡ… для всСх Ρ„ΠΈΠ³ΡƒΡ€.

6.1 ΠžΠ±Ρ‰Π΅Π΅ ΠΈ Ρ‡Π°ΡΡ‚Π½ΠΎΠ΅ наслСдованиС Π‘++ прСдоставляСт ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство способов для Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ рСгулирования доступа ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ класса. Одним ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… способов являСтся объявлСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса. Π’ Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π»ΠΈ объявлСниС Ρ‚ΠΈΠΏΠ°:

class manager: public employee

ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставлСно Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ EMPLOY.

Π§Ρ‚ΠΎ ΠΆΠ΅ Π΄Π°Π΅Ρ‚ слово public Π² ΡΡ‚ΠΎΠΌ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ΠΎ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ? ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово public опрСдСляСт, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠ°ΠΊ public. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово private. ΠŸΡ€ΠΈ Π΅Π³ΠΎ использовании для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Π½Π΅Ρ‚ доступа ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠ°ΠΊ public. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅Ρ‚ доступа ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠ°ΠΊ private

ΠΈΠ»ΠΈ protected, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ доступа Π½ΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· Ρ‡Π»Π΅Π½ΠΎΠ² Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса.

Как ΠΆΠ΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ вопрос ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ наслСдовании? Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс прСдставляСт собой ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΡƒΡŽ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса. ΠœΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов (вспомнитС класс CountDn, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π½ΠΎΠ²ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊ ΠΊΠ»Π°ΡΡΡƒ Counter, ΠΈΠ»ΠΈ класс manager, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ спСциализированной вСрсиСй класса employee). Π’ ΡΠ»ΡƒΡ‡Π°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса прСдоставляСт доступ ΠΊΠ°ΠΊ ΠΊ ΠΎΠ±Ρ‰ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, Ρ‚Π°ΠΊ ΠΈ ΠΊ Π±ΠΎΠ»Π΅Π΅ спСциализированным ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ своСго класса, ΠΈΠΌΠ΅Π΅Ρ‚ смысл Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ±Ρ‰ΠΈΠΌ наслСдованиСм.

Рис. 3. ЧастноС ΠΈ ΠΎΠ±Ρ‰Π΅Π΅ наслСдованиС

Однако Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс создаСтся для ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ дСйствий Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, скрывая ΠΈΠ»ΠΈ измСняя ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Π΅Π³ΠΎ Π²ΠΈΠ΄. НапримСр, прСдставим, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ класс Array, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ собой массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΏΡ€ΠΎΡ‚ΠΈΠ² обращСния ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ, Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ массива. Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс Array ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ для класса Stack вмСсто использования ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ массива. Боздавая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс Stack, ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ с Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ с ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ [ ] для доступа ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ класса Stack Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ со ΡΡ‚Π΅ΠΊΠ°ΠΌΠΈ, с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² push () ΠΈ pop (). Π’ΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΌΠ°ΡΠΊΠΈΡ€ΡƒΠ΅ΠΌ класс Array ΠΏΠΎΠ΄ класс Stack. Π’ ΡΡ‚ΠΎΠΉ ситуации частноС наслСдованиС ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Array ΠΎΡ‚ Π΄ΠΎΡΡ‚ΡƒΠΏΠ° Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Stack.

6.2 Π£Ρ€ΠΎΠ²Π½ΠΈ наслСдования ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ классы ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ классами для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов. Рассмотрим ΠΌΠ°Π»Π΅Π½ΡŒΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‚Π°ΠΊΠΎΠ³ΠΎ случая.

class A

{ };

class Π’: public A

{ };

class C: public Π’

{ };

Π—Π΄Π΅ΡΡŒ класс Π’ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ класса A, Π° ΠΊΠ»Π°ΡΡ C ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ класса B, ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒΡΡ бСсконСчно — класс D ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ класса C ΠΈ Ρ‚. Π΄.

Рассмотрим Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π±Ρ€ΠΈΠ³Π°Π΄ΠΈΡ€ΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ EMPLOY. ΠœΡ‹ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΡƒΡŽ Π² ΡΠ΅Π±Ρ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса foreman.

Рис. 4. UML Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° классов ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ EMPLOY2

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

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ иСрархия классов ΠΎΡ‚Π»ΠΈΡ‡Π½Π° ΠΎΡ‚ ΡΡ…Π΅ΠΌΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ. На ΡΡ…Π΅ΠΌΠ΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов являСтся ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ схоТих характСристик. Π§Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΌ являСтся класс, Ρ‚Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ ΠΎΠ½ Π½Π°Ρ…одится Π² ΡΡ…Π΅ΠΌΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ — это Π±ΠΎΠ»Π΅Π΅ общая характСристика, Ρ‡Π΅ΠΌ Π±Ρ€ΠΈΠ³Π°Π΄ΠΈΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ обязанности. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ класс Laborer ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π°Π΄ классом foreman Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов, хотя Π±Ρ€ΠΈΠ³Π°Π΄ΠΈΡ€, скорСС всСго, ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρƒ, Ρ‡Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ.

6.3 ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС Класс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, Π° ΠΈ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ…. Π­Ρ‚ΠΎΡ‚ случай называСтся мноТСствСнным наслСдованиСм. На Ρ€ΠΈΡ. 5 ΠΏΠΎΠΊΠ°Π·Π°Π½ случай, ΠΊΠΎΠ³Π΄Π° класс C ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ Π΄Π²ΡƒΡ… классов: A ΠΈ Π’.

Рис. 5. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° классов UML ΠΏΡ€ΠΈ мноТСствСнном наслСдовании

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

class A

{

};

class Π’

{

};

class C: public A, public Π’

{

};

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ классы класса C ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Ρ‹ послС двоСточия Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ описания класса ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ запятыми.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ мноТСствСнного наслСдования. ΠŸΡƒΡΡ‚ΡŒ Π½Π°ΠΌ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слуТащих Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ EMPLOY. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρƒ Π½Π°Ρ сущСствуСт класс student, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ указываСтся ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ студСнта. Π’ΠΎΠ³Π΄Π° вмСсто измСнСния класса employee ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ класса student с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ мноТСствСнного наслСдования.

Π’ ΠΊΠ»Π°ΡΡΠ΅ student содСрТатся свСдСния ΠΎ ΡˆΠΊΠΎΠ»Π΅ ΠΈΠ»ΠΈ унивСрситСтС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ» студСнт, ΠΈ ΠΎΠ± ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ. Π­Ρ‚ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π² ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ getedu () ΠΈ putedu () ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ ввСсти Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΡΡ‚ΡƒΠ΄Π΅Π½Ρ‚Π΅ ΠΈ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡ….

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎΠ± ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Π½ΡƒΠΆΠ½Π° Π½Π°ΠΌ Π½Π΅ Π΄Π»Ρ всСх слуТащих. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ записи ΠΎΠ± ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ…, Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ записи ΠΎΠ± ΡƒΡ‡Π΅Π½Ρ‹Ρ… ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°Ρ…. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ классы manager ΠΈ scientist Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ классов employee ΠΈ student, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡ. 6.

Рис. 6. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° классов UML ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ EMPMULT

Π­Ρ‚Π° малСнькая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ взаимосвязь ΠΌΠ΅ΠΆΠ΄Ρƒ классами:

class student

{ };

class employee

{ };

class manager: public employee, private student

{ };

class scientist: private employee, private student

{ };

class laborer: public employee

{ };

Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступны классам manager ΠΈ scientist, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π°Π·Π²Π°Π½Π½Ρ‹Π΅ классы Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ° student.

Рассмотрим нСбольшой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ EMPMULT:

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° 1

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ: Иванов Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€: 12

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ: Π’ΠΈΡ†Π΅-ΠΏΡ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚ Π’Π²Π΅Π΄ΠΈΡ‚Π΅ сумму взносов Π² Π³ΠΎΠ»ΡŒΡ„-ΠΊΠ»ΡƒΠ±: 1 000 000

Π’Π΅Π΄ΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡˆΠΊΠΎΠ»Ρ‹ ΠΈΠ»ΠΈ унивСрситСта: Π‘ΠŸΠ±Π“Π£ Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ΡƒΡ‡Π΅Π½ΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ: Π±Π°ΠΊΠ°Π»Π°Π²Ρ€ Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для ΡƒΡ‡Π΅Π½ΠΎΠ³ΠΎ 1

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ: ΠŸΠ΅Ρ‚Ρ€ΠΎΠ² Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€: 764

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ количСство ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ: 99

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡˆΠΊΠΎΠ»Ρ‹ ΠΈΠ»ΠΈ унивСрситСта: ΠœΠ“Π£ Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ΡƒΡ‡Π΅Π½ΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ: ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π½Π°ΡƒΠΊ Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для ΡƒΡ‡Π΅Π½ΠΎΠ³ΠΎ 2

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ: Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ² Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€: 845

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ количСство ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ: 101

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡˆΠΊΠΎΠ»Ρ‹ ΠΈΠ»ΠΈ унивСрситСта: ΠœΠ“Π£ Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ΡƒΡ‡Π΅Π½ΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ: Π΄ΠΎΠΊΡ‚ΠΎΡ€ Π½Π°ΡƒΠΊ Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ 1

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ: Π‘Ρ‚Ρ€ΠΎΠΊΠΈΠ½ Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€: 48 323

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ EMPLOY ΠΈ EMPLOY2 Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ.

7. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΈ мноТСствСнном наслСдовании ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° EMPMULT Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ конструкторов. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ конструкторы ΠΏΡ€ΠΈ мноТСствСнном наслСдовании.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΈΡˆΠ΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для строитСлСй-подрядчиков, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌΠΈ. Нам Π½ΡƒΠΆΠ΅Π½ класс, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ количСство стройматСриалов ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 100 Π²ΠΎΡΡŒΠΌΠΈΠΌΠ΅Ρ‚Ρ€ΠΎΠ²Ρ‹Ρ… Π±Ρ€Π΅Π²Π΅Π½. Π”Ρ€ΡƒΠ³ΠΎΠΉ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΠΈΠ΄Π΅ стройматСриалов. НапримСр, Π΄Π»ΠΈΠ½Ρƒ куска ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, количСство Ρ‚Π°ΠΊΠΈΡ… кусков ΠΈ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π·Π°ΠΏΠΎΠ³ΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚Ρ€.

Нам Ρ‚Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ΅Π½ класс, хранящий описаниС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° стройматСриала, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ Π΄Π²Π΅ части. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части Π½ΠΎΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎΠΏΠ΅Ρ€Π΅Ρ‡Π½ΠΎΠ³ΠΎ сСчСния ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°. Они ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‚ΡΡ дюймами. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ — сортматСриала. Класс Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ строковыС поля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π½ΠΎΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈ ΡΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Сля, Π° Π·Π°Ρ‚Π΅ΠΌ выводят Π΅Π΅ Π½Π° ΡΠΊΡ€Π°Π½.

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ класс Distance ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° для хранСния Π΄Π»ΠΈΠ½Ρ‹ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°. НаконСц, ΠΌΡ‹ ΡΠΎΠ·Π΄Π°Π»ΠΈ класс Lumber ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классов Π’ΡƒΡ€Π΅ ΠΈ Distance.

Π“Π»Π°Π²Π½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ являСтся использованиС конструкторов ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Lumber. Они Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ подходящиС конструкторы классов Π’ΡƒΡ€Π΅ ΠΈ Distance.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π’ ΠΊΠ»Π°ΡΡΠ΅ Π’ΡƒΡ€Π΅ конструктор Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’ΡƒΡ€Π΅ ()

{ strcpy (dimensions, «N/A»): strcpy (grade, «N/A») }

Π­Ρ‚ΠΎΡ‚ конструктор присваиваСт значСниям ΠΏΠΎΠ»Π΅ΠΉ dimensions ΠΈ grade строку «N/A» (нСдоступно), поэтому ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ вывСсти Π΄Π°Π½Π½Ρ‹Π΅ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса Lumber ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ поля пусты.

Нам ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌ конструктор Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΊΠ»Π°ΡΡΠ΅ Distance:

Distance (): feet (0), inches (0.0)

{ }

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² класса Lumber Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ конструкторы ΠΎΠ±ΠΎΠΈΡ… классов — Π’ΡƒΡ€Π΅ ΠΈ Distance.

Lumber: Type (), distance (), quantity (0), price (0.0)

{ }

ИмСна конструкторов Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса ΡƒΠΊΠ°Π·Π°Π½Ρ‹ послС двоСточия ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ запятыми. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ конструктора класса Lumber Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ конструкторы Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов Π’ΡƒΡ€Π΅ () ΠΈ Distance (). ΠŸΡ€ΠΈ этом ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ quantity ΠΈ price.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса Π’ΡƒΡ€Π΅ с Π΄Π²ΡƒΠΌΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’ΡƒΡ€Π΅ (string di, string gr): dimensions (di), grade (gr)

{ }

Π­Ρ‚ΠΎΡ‚ конструктор ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ строковыС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΏΠΎΠ»Ρ класса dimensions ΠΈ grade.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса Distance Ρ‚ΠΎΡ‚ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅:

Distance (int ft, float in): feet (ft), inches (in)

{ }

Π’ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса Lumber Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΎΠ±Π° этих конструктора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ значСния для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, класс Lumber ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈ ΡΠ²ΠΎΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹: количСство ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΈ Π΅Π³ΠΎ Ρ†Π΅Π½Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, конструктор ΠΈΠΌΠ΅Π΅Ρ‚ ΡˆΠ΅ΡΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Он Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Π²Π° конструктора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠΎ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π²Π° собствСнных поля.

8. ΠΠ΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ мноТСствСнном наслСдовании Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ситуациях ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, связанныС со ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΌ наслСдованиСм. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΡƒΡŽ. Допустим, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ±ΠΎΠΈΡ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классах ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π° Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с Ρ‚Π°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π΅Ρ‚. Как Π² ΡΡ‚ΠΎΠΌ случаС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ? Одного ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° нСдостаточно, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ компилятор Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² имССтся Π² Π²ΠΈΠ΄Ρƒ.

ΠšΠ»Π°ΡΡΡ‹ Π’ ΠΈ C ΡΠ²Π»ΡΡŽΡ‚ся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ класса A, Π° ΠΊΠ»Π°ΡΡ D ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классов Π’ ΠΈ C. Врудности Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса D ΠΏΡ‹Ρ‚аСтся Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ класса A. Π’ ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ objD ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ func (). Однако классы Π’ ΠΈ C ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ Π² ΡΠ΅Π±Π΅ ΠΊΠΎΠΏΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° func (), унаслСдованныС ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ° A. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ ΡΠΎΠΎΠ±Ρ‰Π°Π΅Ρ‚ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅.

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

9. Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: классы Π² ΠΊΠ»Π°ΡΡΠ°Ρ… ΠœΡ‹ ΠΎΠ±ΡΡƒΠ΄ΠΈΠΌ здСсь Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, хотя ΠΎΠ½ΠΎ ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ прямого ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ классами. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΈΡ….

Если класс Π’ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ класса A, Ρ‚ΠΎ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ класс Π’ ΡΠ²Π»ΡΠ΅Ρ‚ся отчасти классом A, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ класс Π’ ΠΈΠΌΠ΅Π΅Ρ‚ всС характСристики класса A ΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, свои собствСнныС. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ скворСц это ΠΏΡ‚ΠΈΡ†Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Π΅ для ΠΏΡ‚ΠΈΡ† (ΠΊΡ€Ρ‹Π»ΡŒΡ, ΠΏΠ΅Ρ€ΡŒΡ ΠΈ Ρ‚. Π΄.), Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΈΠΌΠ΅Π΅Ρ‚ свои собствСнныС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ (Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ Ρ‚Π΅ΠΌΠ½ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅Π»ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ΡΡ ΠΎΠΏΠ΅Ρ€Π΅Π½ΠΈΠ΅). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ часто наслСдованиС Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ° «ΠΈΠΌΠ΅Π΅Ρ‚». ΠœΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ½ΠΈΠ³ΠΈ (Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΈΠ³ΠΈ) ΠΈΠ»ΠΈ накладная ΠΈΠΌΠ΅Π΅Ρ‚ строки (Π² Π½Π°ΠΊΠ»Π°Π΄Π½ΠΎΠΉ Π΅ΡΡ‚ΡŒ строки). Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ° «Ρ‡Π°ΡΡ‚ΡŒ Ρ†Π΅Π»ΠΎΠ³ΠΎ»: ΠΊΠ½ΠΈΠ³Π° являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π’ ΠžΠžΠŸ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ появляСтся, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Рассмотрим случай, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса A ΡΠ²Π»ΡΠ΅Ρ‚ся Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ класса B:

class A

{ };

class Π’

{

A objA;

};

Π’ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ… UML Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ считаСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²ΠΈΠ΄ΠΎΠΌ объСдинСния.

Иногда Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π³Π΄Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π° Π³Π΄Π΅ объСдинСниС. ВсСгда бСзопасно Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ объСдинСниСм, Π½ΠΎ Π΅ΡΠ»ΠΈ класс A ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Π’ ΠΈ ΠΏΡ€Π΅Π²ΠΎΡΡ…ΠΎΠ΄ΠΈΡ‚ класс Π’ ΠΏΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚ΠΎ ΡΡ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ. Компания ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ слуТащих ΠΈΠ»ΠΈ коллСкция ΠΌΠ°Ρ€ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ€ΠΎΠΊ.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ… UML показываСтся Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ объСдинСниС, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ стрСлку Π² Π²ΠΈΠ΄Π΅ Ρ€ΠΎΠΌΠ±Π°. На Ρ€ΠΈΡ. 7 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ это выглядит.

Рис. 7. Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ… классов UML

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ: слоТноС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ — это Π±ΠΎΠ»Π΅Π΅ слоТная Ρ„ΠΎΡ€ΠΌΠ° объСдинСния. Она ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ всСми Π΅Π³ΠΎ свойствами, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π΅Ρ‰Π΅ ΠΈ Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ:

Β¦ Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ†Π΅Π»ΠΎΠΌΡƒ;

Β¦ врСмя ΠΆΠΈΠ·Π½ΠΈ части Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Ρ†Π΅Π»ΠΎΠ³ΠΎ.

Машина ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅Ρ€ΠΈ (ΠΏΠΎΠΌΠΈΠΌΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ). Π”Π²Π΅Ρ€ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ машинС, ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΅Π΅ Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ. Π’ ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ», ΠΏΠΎΡ‚ΠΎΠ»ΠΎΠΊ ΠΈ ΡΡ‚Π΅Π½Ρ‹. Если Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ — это Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° «ΠΈΠΌΠ΅Π΅Ρ‚», Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ — это Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° «ΡΠΎΡΡ‚ΠΎΠΈΡ‚ ΠΈΠ·».

Π’ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ… UML композиция показываСтся Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€ΠΎΠΌΠ± стрСлки Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½. Π­Ρ‚ΠΎ прСдставлСно Π½Π° Ρ€ΠΈΡ. 8.

Рис. 8. ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ Π² Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ… классов UML

Π”Π°ΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡƒ ΠΊΠ°ΠΊ композиция. Π’ ΠΌΠ°ΡˆΠΈΠ½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ.

10. Роль наслСдования ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠŸΡ€ΠΎΡ†Π΅ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π±Ρ‹Π» ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ с ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ООП.

Π­Ρ‚ΠΎ связано Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ классов, Π½ΠΎ ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ наслСдования. Рассмотрим Π΅Π³ΠΎ этапы.

ΠŸΡƒΡΡ‚ΡŒ программист, А ΡΠΎΠ·Π΄Π°Π΅Ρ‚ класс. ПолоТим, это Π±ΡƒΠ΄Π΅Ρ‚ класс, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ пакласс Distance, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для выполнСния арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρƒ Π‘ нравится этот класс, Π½ΠΎ ΠΎΠ½ ΡΡ‡ΠΈΡ‚Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ класс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ ΠΏΡƒΡ‚Π΅ΠΌ ввСдСния Π·Π½Π°ΠΊΠ° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°. РСшСниСм Π±ΡƒΠ΄Π΅Ρ‚ созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ класса, ΠΏΠΎΡ…ΠΎΠΆΠ΅Π³ΠΎ Π½Π° ΠΊΠ»Π°ΡΡ DistSign ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ENGLEN, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ класса Distance, Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π½Π°ΠΊΠ° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ Π’ ΠΈ Π“ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΈΡˆΡƒΡ‚ прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ класс DistSign.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ Π‘ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ доступа ΠΊ ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΌΡƒ класс Distance, Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ Π’ ΠΈ Π“ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ исходного ΠΊΠΎΠ΄Π° класса DistSign. Но Π² C++ сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π°, поэтому программист Π‘ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ программиста А, Π° Π’ ΠΈ Π“ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π‘ (ΠΈ А).

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ различия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ инструмСнтов ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Π°ΠΌΠΈ, ΠΏΠΈΡˆΡƒΡ‰ΠΈΠΌΠΈ прилоТСния, становятся расплывчатыми. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚, А ΡΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΎΠ±Ρ‰Π΅Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ инструмСнт, класс Distance. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ Π‘, Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, создаСт Π±ΠΎΠ»Π΅Π΅ спСциализированный класс DistSign. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ Π’ ΠΈ Π“ ΠΏΠΈΡˆΡƒΡ‚ прилоТСния. А — Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ инструмСнта, Π° Π’ ΠΈ Π“ — Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π‘ находится Π³Π΄Π΅-Ρ‚ΠΎ посСрСдинС. Π’ Π»ΡŽΠ±ΠΎΠΌ случаС ООП Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ, Π½ΠΎ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТным.

Π’ Π³Π»Π°Π²Π΅ 13 ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊ классы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π° Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Ρ‡Π°ΡΡ‚ΡŒ ΠΈ Ρ‡Π°ΡΡ‚ΡŒ, которая распространяСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ программистами Π±Π΅Π· наличия исходного ΠΊΠΎΠ΄Π°.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

Π’Π°ΠΆΠ½Ρ‹ΠΌ вопросом являСтся Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ‡Π»Π΅Π½ΠΎΠ² Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса для ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов. К ΠΏΠΎΠ»ΡΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠ°ΠΊ protected, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Π½Π΅ΡˆΠ½ΠΈΡ… классов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ сам ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс, Π² ΡΡ‚ΠΎΠΌ случаС доступа ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ классу Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚. ΠšΠ»Π°ΡΡΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ ΠΈ Ρ‡Π°ΡΡ‚Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠ°ΠΊ public, Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ частного ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса доступа ΠΊ Π½ΠΈΠΌ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚.

Класс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса. Π­Ρ‚ΠΎΡ‚ случай называСтся мноТСствСнным наслСдованиСм. Π’Π°ΠΊΠΆΠ΅ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса.

Π’ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ… UML наслСдованиС Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ΠΌ. Оно прСдставляСтся Π² Π²ΠΈΠ΄Π΅ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ стрСлки, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Π½Π° Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ — это Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° «ΠΈΠΌΠ΅Π΅Ρ‚» ΠΈΠ»ΠΈ «ΡΠ²Π»ΡΠ΅Ρ‚ся Ρ‡Π°ΡΡ‚ΡŒΡŽ», ΠΏΡ€ΠΈ этом ΠΎΠ΄ΠΈΠ½ класс содСрТит ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса. Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ прСдставляСтся Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ… UML стрСлкой Π² Ρ„ΠΎΡ€ΠΌΠ΅ Ρ€ΠΎΠΌΠ±Π°, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Π½Π° Ρ†Π΅Π»ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠ°Ρ€Ρ‹ Ρ‡Π°ΡΡ‚ΡŒ—Ρ†Π΅Π»ΠΎΠ΅. ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ — это Π±ΠΎΠ»Π΅Π΅ слоТная Ρ„ΠΎΡ€ΠΌΠ° объСдинСния. На Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΎΠ½Π° показываСтся Ρ‚Π°ΠΊ ΠΆΠ΅, Π½ΠΎ ΡΡ‚Ρ€Π΅Π»ΠΊΠ° Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½Π°.

НаслСдованиС позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ: Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классС ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ возмоТности Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Π±Π΅Π· Π΅Π³ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΈΠΌΠ΅Ρ доступа ΠΊ Π΅Π³ΠΎ ΠΊΠΎΠ΄Ρƒ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡŽ гибкости Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡŽ Ρ€ΠΎΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… источников

1. Π’. А. Бкляров. Π―Π·Ρ‹ΠΊ C++ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. — ΠœΠΈΠ½ΡΠΊ: Π’Ρ‹ΡˆΡΠΉΡˆΠ°Ρ школа, 2007. 480с.

2. Π›Π°Ρ„ΠΎΡ€Π΅ Π . ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π‘++ (4-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅, 2004 Π³ΠΎΠ΄). — 361 с.

3. Π’. Π‘Π²Π°Π½. ОсвоСниС Borland C++ 4.5: ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». — ΠšΠΈΠ΅Π²: Π”ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΈΠΊΠ°, 1996. 544с.

4. Π’. Π’. ПодбСльский. Π―Π·Ρ‹ΠΊ C++: Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС. — ΠœΠΎΡΠΊΠ²Π°: Ѐинансы ΠΈ ΡΡ‚атистика, 199 560с.

5. Π˜Ρ€Ρ Пол. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ C++: ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». — ΠšΠΈΠ΅Π²: НИИПЀ Π”ΠΈΠ°Π‘ΠΎΡ„Ρ‚ Π›Ρ‚Π΄, 199 480с.

6. Π£ΠΈΠ½Π΅Ρ€ Π . Π―Π·Ρ‹ΠΊ Π’ΡƒΡ€Π±ΠΎ Π‘ΠΈ: ΠŸΠ΅Ρ€ с Π°Π½Π³Π».-М.: ΠœΠΈΡ€, 2010.-384 с., ΠΈΠ».

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ