[Dewhurst03] Β§70, Β§93 β’ [Meyers97] Β§33 β’ [Stroustrup00] Β§24.2-3, Β§25.2
36. ΠΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ²
ΠΡ Π»ΡΠ±ΠΈΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΎΠ½ΠΈΠ·ΠΌ? ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π²Π°ΠΌ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ Π°Π±ΡΡΡΠ°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π΅ Π²Π΄Π°Π²Π°ΡΡΡ Π² Π΄Π΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ. ΠΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ Π½ΠΈΡ . ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ, ΡΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ· (ΡΠΈΡΡΠΎ) Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡΡΠΈΠΉ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ (ΡΠ»Π΅Π½Π°ΠΌΠΈ-Π΄Π°Π½Π½ΡΠΌΠΈ), ΠΏΡΠΈΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ½ΠΎ Π±Π΅Π· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ»Π΅Π½ΠΎΠ². ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ Π² Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π΄ΠΈΠ·Π°ΠΉΠ½ Π²ΡΠ΅ΠΉ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ (ΡΠΌ. ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π² [Meyers96]).
ΠΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (Dependency Inversion Principle, DIP; ΡΠΌ. [Martin96a] ΠΈ [Martin00]). ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ.
β’ ΠΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ . Π ΡΠ΅, ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ.
β’ ΠΠ±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ; Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π΄Π΅ΡΠ°Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ.
ΠΠ· DIP ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΡΡΠΎ ΠΊΠΎΡΠ½ΡΠΌΠΈ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π² ΡΡΠΎΠΉ ΡΠΎΠ»ΠΈ Π²ΡΡΡΡΠΏΠ°ΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 35). ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΠΎΠ± ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ, Π½ΠΎ Π½Π΅ ΠΎ Π΅Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠΈΠ½ΡΠΈΠΏ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΈ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΏΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ.
β’ ΠΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ. ΠΠ΅Π½Π΅Π΅ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ (ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ) Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ ΡΠ°ΡΡΠ΅ΠΉ (Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ). ΠΠ°Π΄Π΅ΠΆΠ½ΡΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ β ΡΠΎΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ. ΠΡΠΈ ΠΏΠ»ΠΎΡ ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄ΡΡΡΡ ΠΊΡΡΠ³Π°ΠΌΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΈ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΡΠ°ΠΌΡΠ΅ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠ΅ ΡΠ°ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ΅ΠΊΡ ΡΡΡΠΎΠΈΡΡΡ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠ°Ρ .
β’ ΠΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ. ΠΠΈΠ·Π°ΠΉΠ½, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°Ρ , Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΎΠΊ. ΠΡΠ»ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½Ρ, ΡΠΎ ΠΏΡΠΈ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π»Π΅Π³ΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π Π½Π°ΠΏΡΠΎΡΠΈΠ², Π΄ΠΈΠ·Π°ΠΉΠ½, Π·Π°Π²ΠΈΡΡΡΠΈΠΉ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ, ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΆΠ΅ΡΡΠΊΠΈΠΌ Π² ΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅, ΡΡΠΎ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ Π² ΡΠ΄ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ.
β’ Π₯ΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΡΡΡ. ΠΠΈΠ·Π°ΠΉΠ½, ΠΎΠΏΠΈΡΠ°ΡΡΠΈΠΉΡΡ Π½Π° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΡΡΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ: Π²ΡΡΠΎΠΊΠΎΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΡΡΠΈ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ ΡΠ°ΡΡΠ΅ΠΉ, Π½ΠΎ Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. ΠΠΈΠ·Π°ΠΉΠ½ ΠΆΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π½Ρ Ρ Π΄Π΅ΡΠ°Π»ΡΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ.
ΠΠ°ΠΊΠΎΠ½ ΠΡΠΎΡΠΎΠ³ΠΎ Π¨Π°Π½ΡΠ° Π³Π»Π°ΡΠΈΡ: "Π‘Π°ΠΌΠ°Ρ Π²Π°ΠΆΠ½Π°Ρ Π²Π΅ΡΡ β ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΏΡΠ°Π²ΠΈΡΡ ΠΈ ΠΏΠΎΠ·ΠΆΠ΅, Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Π½Π΅Π²Π΅ΡΠ½ΠΎ, ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΠΆΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠ°Π½ΡΠ° Π΅Π³ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ" [Sutter04].
ΠΠ±ΡΡΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠ½ΠΎΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅, ΠΏΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡΠ΄Π°Π΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΊΡΡΡΠΎΠΌΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΌΡ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 50), Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π±ΡΠΎΠΊΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Π‘ΠΠ ΠΈΠ»ΠΈ CORBA), ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ.
ΠΡΠ΄ΡΡΠ΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ. ΠΠΈΠ·Π°ΠΉΠ½ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ, Π½ΠΎ ΠΎΠ½ ΡΡΡΠ΄Π½Π΅Π΅ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ.
ΠΠ°ΠΊ ΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΎΡΡ Π² ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ 34, Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΈ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ ΠΏΠΎΠΈΡΠΊΠ° ΠΈΠΌΠ΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π² ΠΏΠΎΠΈΡΠΊΠ΅ ΡΡΠ°ΡΡΠ²ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ° (ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 58).
ΠΡΠΈΠΌΠ΅ΡΡΠΡΠΈΠΌΠ΅Ρ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΈ ΠΏΡΡΠΌΠΎΠΌ, Π½Π°ΠΈΠ²Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ»ΠΎΡ ΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π°ΡΡ ΠΈΠ²ΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΠΈ Π΄ΡΡΠ³ΠΈΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π½Π° Π»Π΅Π½ΡΡ. ΠΠ΄Π°ΠΏΡΠ°ΡΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊ Π½ΠΎΠ²ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΡΠ»ΠΈ ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ β Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΡ Π½ΠΎΠ²ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΡΡ Π½ΠΎΠ²ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π½ΠΎ ΡΡΠ°ΡΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½.
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΡΡΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΠΊΠΎΠ³Π΄Π° Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΠΎΡΠΊΡΡΡΠΎΠ΅) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠ³ΡΠ±ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅Π»Π΅ΠΉ (Π½ΠΎ ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 8).
ΠΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ Π² Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ). ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠ°. ΠΠ΄Π΅ΡΡ ΠΈΠΌΠ΅ΡΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΠΏΡΠΎΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½Ρ ΡΠ²Π½ΠΎ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠΈΡΡΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
Π‘ΡΡΠ»ΠΊΠΈ[Alexandrescu01] β’ [Cargill92] pp. 12-15, 215-218 β’ [Cline99] Β§5.18-20, 21.13 β’ [Lakos96] Β§6.4.1 β’ [Martin96a] β’ [Martin00] β’ [Meyers96] Β§33 β’ [Stroustrup00] Β§12.3-4, Β§23.4.3.2, Β§23.4.3.5, Β§24.2-3, Β§25.3, Β§25.6 β’ [Sutter04] Β§17
37. ΠΡΠΊΡΡΡΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠΎΡΡΡ. ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π½Π°Π΄ΠΎ Π½Π΅ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π° ΡΡΠΎΠ±Ρ Π±ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ
ΠΡΠΊΡΡΡΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΡΡΠ»ΠΊΠ΅ Π½Π° Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ Π΅Π³ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ.
ΠΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ ΠΎΡΠΊΡΡΡΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ (Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠΉΡΡ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅); ΠΎΡΠΊΡΡΡΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π±ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ (ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°).
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° Π΄Π²Π°Π΄ΡΠ°ΡΠΈΠ»Π΅ΡΠ½ΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ΅Π»Ρ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΡΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π½Π΅Π²Π΅ΡΠ½ΠΎ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌΠΈ.
ΠΡΠΊΡΡΡΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠΌ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΠΈΡΠΊΠΎΠ² (Liskov Substitution Principle [Liskov88]) Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ "ΡΠ²Π»ΡΠ΅ΡΡΡ" ("ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ"): Π²ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΊΡΡΡΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ»Π΅Π½ΠΎΠ² Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΈΠ»ΠΈ ΠΎΠ±Π΅ΡΠ°ΡΡ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ ΠΈΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ. ΠΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΡΡΠ»ΠΊΡ Π½Π° Base, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ Π² ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΡΡΠ»ΠΊΠ° ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ Derived.
ΠΠ΅Π²Π΅ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π½Π°ΡΡΡΠ°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ. ΠΠ±ΡΡΠ½ΠΎ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠ΄ΡΠΈΠ½ΡΠ΅ΡΡΡ ΡΠ²Π½ΡΠΌ ΠΈΠ»ΠΈ Π½Π΅ΡΠ²Π½ΡΠΌ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°ΠΌ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ. Π’Π°ΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΌΠΈ ΠΈ Ρ ΠΈΡΡΠΎΡΠΌΠ½ΡΠΌΠΈ, ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΎΡΡΠΎΡΠΎΠΆΠ΅Π½, ΠΊΠΎΠ³Π΄Π° ΠΈΡ Π½Π΅Π»ΡΠ·Ρ Π²ΡΡΠ°Π·ΠΈΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΊΠΎΠ΄Π΅ (Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΡΠΊΠ°Π·Π°ΡΡ Π² ΠΊΠΎΠ΄Π΅ Π΅Π³ΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 39).
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ Π² ΡΡΠΎΠΉ ΡΠ²ΡΠ·ΠΈ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ° β Square (ΠΊΠ²Π°Π΄ΡΠ°Ρ) ΠΈ Rectangle (ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ), ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈΡ Π²ΡΡΠΎΡΡ ΠΈ ΡΠΈΡΠΈΠ½Ρ. Π’ΠΎΠ³Π΄Π° Square Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ ΠΎΡ Rectangle, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ Π²ΠΈΠ΄ΠΎΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ Rectangle, Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π°Π³Π°ΡΡ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ SetWidth Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π³ΠΎ Π²ΡΡΠΎΡΡ (Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π»ΠΈ Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ΠΊΠ»Π°ΡΡΠΎΠΌ Rectangle ΡΠ²Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ), Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ Square::SetWidth Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΎΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ΠΈ ΡΠ²ΠΎΠΉ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½Ρ "ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΡΡΠΈ". ΠΠΎ ΠΈ ΠΊΠ»Π°ΡΡ Rectangle Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ Square, Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Square ΠΏΠΎΠ»Π°Π³Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π΅Π³ΠΎ ΠΏΠ»ΠΎΡΠ°Π΄ΠΈ Π½Π°Π΄ΠΎ Π²ΠΎΠ·Π²Π΅ΡΡΠΈ Π² ΠΊΠ²Π°Π΄ΡΠ°Ρ ΡΠΈΡΠΈΠ½Ρ, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΠΈΠ½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ° ΠΈ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ "ΡΠ²Π»ΡΠ΅ΡΡΡ" Π΄Π»Ρ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅Π²Π΅ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡΠΌ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΉ ΠΈΠ· ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡΠ°: ΠΊΠ²Π°Π΄ΡΠ°Ρ "ΡΠ²Π»ΡΠ΅ΡΡΡ" ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠΌ Π² ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠΌΡΡΠ»Π΅, Π½ΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Square Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ RectanglΠ΅. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ Π²ΠΌΠ΅ΡΡΠΎ "ΡΠ²Π»ΡΠ΅ΡΡΡ" ΠΌΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ "ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ" (ΠΈΠ»ΠΈ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠ°Π²ΠΈΡΡΡ, "ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ") Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°ΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π»ΠΎΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.