ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΎΠΎΠΏ Π½Π°ΡΡΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°
10 ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ
ΠΠ½Π΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ»ΡΡΠ°Π»ΠΈ ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°Ρ SOLID (ΠΌΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ ΠΎ Π½ΠΈΡ Π·Π΄Π΅ΡΡ. β ΠΠ΅Ρ.) ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΠΠΠ), ΠΈΠ»ΠΈ ΡΠ»ΡΡΠ°Π»ΠΈ, Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΈΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΠΠ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π² Π΅Π³ΠΎ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΌ ΡΡΡΠ΄Π΅. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½Ρ, Π΄ΡΡΠ³ΠΈΠ΅ β Π½Π΅ ΠΎΡΠ΅Π½Ρ, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠ°ΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈ Π½ΠΎΠ²ΠΈΡΠΊΠ°ΠΌ, ΠΈ ΡΠΆΠ΅ ΠΎΠΏΡΡΠ½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ.
ΠΠ°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ: Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ «»Π₯Π°Π±ΡΠ°Β» β ΡΠΊΠΈΠ΄ΠΊΠ° 10 000 ΡΡΠ±Π»Π΅ΠΉ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΊΡΡΡ Skillbox ΠΏΠΎ ΠΏΡΠΎΠΌΠΎΠΊΠΎΠ΄Ρ Β«Π₯Π°Π±ΡΒ».
Skillbox ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅Ρ: ΠΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΊΡΡΡ Β«Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΒ».
DRY (Donβt Repeat Yourself)
ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΡΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠ½Π° ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ: Β«ΠΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΠΉΡΡΒ». ΠΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΡ ΠΎΠ΄Π° ΠΎΡ Π΄ΡΠ±Π»ΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ.
ΠΡΠ»ΠΈ Π² ΠΊΠΎΠ΄Π΅ Π΅ΡΡΡ Π΄Π²Π° ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ ΡΡΠ°ΡΡΠΊΠ°, ΠΈΡ ΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅ΡΠΎΠ΄. ΠΡΠ»ΠΈ ΠΆΠ΅ΡΡΠΊΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π°, ΡΡΠΎΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ.
ΠΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΊΠΎΠ΄ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΡΠΎΡΠ΅, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΠΠ. ΠΠ»ΠΎΡΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠΆΠ΅ Π½Π΅ ΡΡΠΎΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΊΠΎΠ΄ Π½Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΊΠ°ΠΊ Ρ OrderId, ΡΠ°ΠΊ ΠΈ Ρ SSN.
ΠΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ. ΠΠ½Π°ΡΠΈΡ, Π² ΠΊΠΎΠ΄ Π½ΡΠΆΠ½ΠΎ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ. Π£ΠΏΡΠΎΡΡΠΈΡΡ ΡΠ΅Π±Π΅ ΠΆΠΈΠ·Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈΠΌΠ΅ΡΡΡΡΡΡ Π±Π°Π·Ρ ΠΊΠΎΠ΄Π°. ΠΠΎΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ².
ΠΡΠΈΠ½ΡΠΈΠΏ ΠΎΡΠΊΡΡΡΠΎΡΡΠΈ/Π·Π°ΠΊΡΡΡΠΎΡΡΠΈ
ΠΡΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΠΏΡΠΎΡΠΈΡΠ°Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅: Β«ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ (ΠΊΠ»Π°ΡΡΡ, ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Ρ.ΠΏ.) Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΡΠΊΡΡΡΡ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, Π½ΠΎ Π·Π°ΠΊΡΡΡΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΒ». ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΌΠ΅Π½ΡΡΡ ΡΠ²ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΡΠΈΠ½ΡΠΈΠΏ Π²Π°ΠΆΠ΅Π½, ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΡΡΠ΅Π±ΡΡΡ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΌΠΎΡΡΠ°, ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ. ΠΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄ΡΠΈΠ½ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΎΡΠΊΡΡΡΠΎΡΡΠΈ/Π·Π°ΠΊΡΡΡΠΎΡΡΠΈ, Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½ΠΈΠΌ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΡΡΠ°Π΅Ρ ΡΡΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ.
ΠΡΠ»ΠΈ Π² Π½Π΅ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠΎ-ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, Π½Π° ΡΡΠΎ ΡΠΉΠ΄Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ΅Π½ΡΡΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΠ΅ ΡΡΠ°ΡΡΠΊΠΈ ΠΊΠΎΠ΄Π°, Ρ ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΡΡ ΡΠ²ΡΠ·Ρ Ρ Π½ΡΠΆΠ½ΡΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠΌ.
ΠΡΡΠ°ΡΠΈ, ΠΎΡΠΊΡΡΡΠΎΡΡΡ-Π·Π°ΠΊΡΡΡΠΎΡΡΡ β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² SOLID.
ΠΡΠΈΠ½ΡΠΈΠΏ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ (SRP)
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΈΠ· Π½Π°Π±ΠΎΡΠ° SOLID. ΠΠ½ Π³Π»Π°ΡΠΈΡ, ΡΡΠΎ Β«ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈΡΡ ΠΎΠ΄Π½Π° ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠ°Ρ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ°Β». ΠΠ»Π°ΡΡ ΡΠ΅ΡΠ°Π΅Ρ Π»ΠΈΡΡ ΠΎΠ΄Π½Ρ Π·Π°Π΄Π°ΡΡ. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»ΠΈΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠΈ. ΠΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ»ΡΠΆΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΠΌΡ.
Π¦Π΅Π½Π½ΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ ΠΎΡΠ»Π°Π±Π»ΡΠ΅Ρ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ Π² ΠΊΠ»Π°ΡΡ, ΡΡΠΎ Π²Π²ΠΎΠ΄ΠΈΡ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ· Π½ΠΈΡ , Π²Π΅Π»ΠΈΠΊ ΡΠ°Π½Ρ ΠΈΡΠΏΠΎΡΡΠΈΡΡ Π²ΡΠΎΡΡΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ. Π ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΊΠ»ΠΎΠ² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΡΠ²ΠΈΡΡ Π²ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π·Π°ΡΠ°Π½Π΅Π΅.
ΠΡΠΈΠ½ΡΠΈΠΏ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (DIP)
ΠΡΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ AppManager Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ EventLogWriter, ΠΊΠΎΡΠΎΡΡΠΉ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΠ΅ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½ Ρ AppManager. ΠΡΠ»ΠΈ Π½ΡΠΆΠ΅Π½ ΠΈΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅, Π±ΡΠ΄Ρ ΡΡΠΎ ΠΏΡΡ, SMS ΠΈΠ»ΠΈ email, Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠ»Π°ΡΡ AppManager.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅ΡΠ΅Π½Π° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ DIP. Π’Π°ΠΊ, Π²ΠΌΠ΅ΡΡΠΎ AppManager ΠΌΡ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ EventLogWriter, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²Π²Π΅Π΄Π΅Π½ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°.
DIP Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π·Π°ΠΌΠ΅Π½ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΡΠΎ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠ΄ΡΠ»Ρ, Π½Π΅ Π²Π»ΠΈΡΡ Π½Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅.
ΠΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠ½ΠΎΠ²Π½ΡΡ
ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π΄Π²Π° β ΡΡΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ, ΠΏΡΠΈΡΠ΅ΠΌ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ²ΠΎΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°, ΡΠ°ΠΊ ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. ΠΠ±ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΄Π°Π΅ΡΡΡ Π²ΡΠΎΡΠΎΠΌΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ.
ΠΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ². ΠΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ.
ΠΠ°ΠΆΠ΅ βEffective Javaβ ΠΠΆΠΎΡΡΠ° ΠΠ»ΠΎΡ (Joshua Bloch) ΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΎΡΠ΄Π°Π²Π°ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ, Π° Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΠ°ΡΠ±Π°ΡΡ ΠΠΈΡΠΊΠΎΠ² (LSP)
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΈΠ· ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ SOLID. ΠΠ½ Π³Π»Π°ΡΠΈΡ, ΡΡΠΎ ΠΏΠΎΠ΄ΡΠΈΠΏΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ Π΄Π»Ρ ΡΡΠΏΠ΅ΡΡΠΈΠΏΠ°. Π’ΠΎ Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΠΏΠ΅ΡΠΊΠ»Π°ΡΡΠΎΠΌ, Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Ρ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ.
LSP ΡΠ²ΡΠ·Π°Π½ ΠΊΠ°ΠΊ Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠΌ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ, ΡΠ°ΠΊ ΠΈ Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ. ΠΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ Π΄Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠ΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ, ΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΡΡΡΠ°Ρ ΡΡΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ.
ΠΠΎΡ ΡΡΠ°ΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡ LSP.
ΠΠ΅ΡΠΎΠ΄ area(Rectangle r) ΠΏΡΠΎΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΏΠ»ΠΎΡΠ°Π΄Ρ Rectangle. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΏΠ°Π΄Π΅Ρ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Square, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Square Π·Π΄Π΅ΡΡ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Rectangle. Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ LSP, ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ.
ΠΡΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄ΡΠΈΠΏΠ°, Π±ΡΠ» ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΠ°ΡΠ±Π°ΡΠΎΠΉ ΠΠΈΡΠΊΠΎΠ² Π² 1987 Π³ΠΎΠ΄Ρ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π΄ΠΎΠΊΠ»Π°Π΄Π΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«ΠΠ±ΡΡΡΠ°ΠΊΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΒ» β ΠΎΡΡΡΠ΄Π° ΠΈ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.
ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (ISP)
ΠΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ SOLID. Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ Π΅ΠΌΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½. Π‘Π»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠΌΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π³ΠΈΠ±ΠΊΠΎΠΉ ΠΈ ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΠΎΠΉ Π΄Π»Ρ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π° ΠΏΡΠΈ Π²Π½Π΅ΡΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π»ΠΎΠ³ΠΈΠΊΡ ΡΠ°Π±ΠΎΡΡ.
Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠ° ΡΠΈΡΡΠ°ΡΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ, ΠΏΡΠΈΡΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π½ΡΠΆΠ½Π° Π»ΠΈΡΡ ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ .
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° β ΡΠ»ΠΎΠΆΠ½Π°Ρ Π·Π°Π΄Π°ΡΠ°, ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π½Π°ΡΡΡΠΈΠ², Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.
ΠΠΎΡΡΠΎΠΈΠ½ΡΡΠ²ΠΎΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° ISP Π² Java ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΡΠ½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ½ΠΈΠ·ΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π° Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ
ΠΠ΄Π΅ΡΡ Π²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π²Π΅Π΄Π΅Ρ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π»ΡΠ±ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΏ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΡΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ ΠΆΠ΅ ΡΠΈΠΏΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΡΠΈΠΌΠ΅Ρ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ SuperClass, Π° Π½Π΅ SubClass.
List numbers= getNumbers();
ArrayList numbers = getNumbers();
ΠΠΎΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΎΠ³ΠΎ, ΠΎ ΡΠ΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ Π²ΡΡΠ΅.
ΠΡΠΈΠ½ΡΠΈΠΏ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β ΠΌΠ΅ΡΠΎΠ΄Ρ equals() ΠΈ hashCode() Π² Java. ΠΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠ°Π²Π½ΠΈΡΡ Π΄Π²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠΎ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π΄Π΅Π»Π΅Π³ΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΊΠ»Π°ΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ.
ΠΡΠ΅ ΡΡΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΈΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ, ΠΊΡΠ°ΡΠΈΠ²ΡΠΉ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ ΠΊΠΎΠ΄ Ρ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠ²ΡΠ·Π½ΠΎΡΡΡΡ ΠΈ Π½ΠΈΠ·ΠΊΠΈΠΌ Π·Π°ΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ΠΌ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠ΅ΠΎΡΠΈΡ β ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΎ, Π½ΠΎ ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ°Π» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π·Π½Π°Π½ΠΈΡ, Π½ΡΠΆΠ½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΠΠ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠ.
ΠΠΠ ΠΌΠ΅ΡΡΠ²ΠΎ, Π΄Π° Π·Π΄ΡΠ°Π²ΡΡΠ²ΡΠ΅Ρ ΠΠΠ
ΠΡΡΠΎΡΠ½ΠΈΠΊΠΈ Π²Π΄ΠΎΡ Π½ΠΎΠ²Π΅Π½ΠΈΡ
ΠΡΠΎΡ ΠΏΠΎΡΡ Π²ΠΎΠ·Π½ΠΈΠΊ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π½Π΅Π΄Π°Π²Π½Π΅ΠΉ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΡΠ°ΡΠ° ΠΡΠ°Π½ΡΠΊΠ΅Π²ΠΈΡΡΡΠ° ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π΅, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠΌ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ²-Π΄ΠΆΡΠ½ΠΈΠΎΡΠΎΠ². Π Π½ΡΠΌ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΊ Π½ΠΎΠ²ΡΠΌ ECS-Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΠΌ. ΠΡΠ°Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠ²ΡΡΠ½ΠΎΠΉ ΡΡ Π΅ΠΌΠ΅ (ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ Π½ΠΈΠΆΠ΅): ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΆΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΠΠ-ΠΊΠΎΠ΄Π°, Π° Π·Π°ΡΠ΅ΠΌ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ (Π½ΠΎ Π½Π°Π·ΡΠ²Π°Π΅Ρ Π΅Ρ Β«ECSΒ», Π° Π½Π΅ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ). Π― Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ ΠΊΡΠΈΡΠΈΠΊΡΡ ΠΡΠ°ΡΠ° β Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°Π½Π°Ρ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡ ΠΈ Ρ Π²Π°Π»Ρ Π΅Π³ΠΎ Π·Π° ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ! Π― Π²ΡΠ±ΡΠ°Π» ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΡΠ΅Π½ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΡΠΎΠ² ΠΏΡΠΎ ECS ΠΈΠ· ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ½ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠ» Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠΈΠ»ΠΈΡ ΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ. Π Π½ΡΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ ΠΏΡΠΎΡΡΠ°Ρ Β«ΠΈΠ³ΡΠ°Β», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΡΠ±ΠΎΡΠ° ΡΠ°Π·Π½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ. ΠΡΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΌΠ½Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ, ΡΠ°ΠΊ ΡΡΠΎ ΡΠΏΠ°ΡΠΈΠ±ΠΎ, ΠΡΠ°Ρ!
Π― Π½Π΅ Π±ΡΠ΄Ρ (ΠΏΠΎΠΊΠ°?) Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΡΡΡΡ ECS-Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π°, Π½ΠΎ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΡΡΡ Π½Π° ΠΊΠΎΠ΄Π΅ Β«ΠΏΠ»ΠΎΡ ΠΎΠ³ΠΎ ΠΠΠΒ» (ΠΏΠΎΡ ΠΎΠΆΠ΅Π³ΠΎ Π½Π° ΡΠ»ΠΎΠ²ΠΊΡ Β«ΡΡΡΠ΅Π»ΠΎΒ») ΠΈΠ· Π΅Π³ΠΎ Π½Π°ΡΠ°Π»Π°. Π― ΠΏΠΎΠΊΠ°ΠΆΡ, ΠΊΠ°ΠΊ Π±Ρ ΠΎΠ½ Π²ΡΠ³Π»ΡΠ΄Π΅Π» Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Π΅ΡΠ»ΠΈ Π±Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ Π²ΡΠ΅ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² OOD (object-oriented design, ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ).
Π‘ΠΏΠΎΠΉΠ»Π΅Ρ: ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π½Π°ΡΡΡΠ΅Π½ΠΈΠΉ OOD ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡΠΌ ΠΡΠ°ΡΠ° Π² ECS, ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΠΠΠ£ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°, ΡΠ΅ΠΌ ECS-Π²Π΅ΡΡΠΈΡ!
TL;DR: ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΠΉΡΠΈ ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ, ΡΡΠΎ ΠΠΠ ΠΎΡΡΡΠΎΠΉ, Π° ECS ΡΡΠ»ΠΈΡ, ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΠΏΠ°ΡΠ·Ρ ΠΈ ΠΈΠ·ΡΡΠΈΡΠ΅ OOD (ΡΡΠΎΠ±Ρ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΠΠ), Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π±Π΅ΡΠΈΡΠ΅ΡΡ Π² ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ (ΡΡΠΎΠ±Ρ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ECS).
Π― ΡΠΆΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Ρ ΡΡΠ°ΡΡΠΈΠ΅ Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ Π΄ΠΈΡΠΊΡΡΡΠΈΠΉ ΠΏΡΠΎ ECS Π½Π° ΡΠΎΡΡΠΌΠ΅, ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠ° ΠΌΠΎΠ΄Π΅Π»Ρ Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π° (ΡΠΏΠΎΠΉΠ»Π΅Ρ: ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ad-hoc-Π²Π΅ΡΡΠΈΡ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ), Π½ΠΎ Π΅ΡΡ ΠΈ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΡ, ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ ΠΈΠ»ΠΈ ΡΡΠ°ΡΡΡ, ΡΠ΅ΠΊΠ»Π°ΠΌΠΈΡΡΡΡΠΈΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½ ECS, ΠΏΠΎΠ²ΡΠΎΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΡΠΊΡΡΡΡ:
Π― Π±ΡΠ΄Ρ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ Π²Π΄ΠΎΡ Π½ΠΎΠ²Π»ΡΠ½Π½ΡΡ ΠΠ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ «ΠΠΠ«, Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Π΄ΠΎΡ Π½ΠΎΠ²Π»ΡΠ½Π½ΡΡ ΠΠ ΡΠ΅Ρ Π½ΠΈΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΈΠ·Π°ΠΉΠ½Π°/Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡ «OOD«. ΠΡΠ΅ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΠΏΠΎΠ΄Ρ Π²Π°ΡΠΈΠ»ΠΈ ΠΠΠ. Π ΡΡΠ΅Π±Π½ΡΡ Π·Π°Π²Π΅Π΄Π΅Π½ΠΈΡΡ Π΅ΡΡΡ ΠΊΡΡΡΡ ΠΠ, Π²ΡΠΏΠ΅ΠΊΠ°ΡΡΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΠΠΠ-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ²β¦ ΠΎΠ΄Π½Π°ΠΊΠΎ Π·Π½Π°Π½ΠΈΠ΅ OOD ΠΏΠ»Π΅ΡΡΡΡΡ ΠΏΠΎΠ·Π°Π΄ΠΈ.
Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΡΠ·ΡΠΊΠΎΠ²ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΠΠ, Π½ΠΎ Π½Π΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ OOD, Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΠ-ΠΊΠΎΠ΄ΠΎΠΌ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΡΠ·ΡΠ²ΠΎΠ², Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΏΡΠΎΡΠΈΠ² ΠΠΠ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΡΠΏΠΎΡΡΠΎΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ ΠΠ-ΠΊΠΎΠ΄ΠΎΠΌ.
ΠΠΠ-ΠΊΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠ»ΠΎΡ ΡΡ ΡΠ΅ΠΏΡΡΠ°ΡΠΈΡ, ΠΈ Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π±ΠΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΠΠ-ΠΊΠΎΠ΄Π° Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌ OOD, Π° ΠΏΠΎΡΠΎΠΌΡ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Β«ΠΈΡΡΠΈΠ½Π½ΡΠΌΒ» ΠΠ-ΠΊΠΎΠ΄ΠΎΠΌ.
ΠΡΠ΅Π΄ΠΏΠΎΡΡΠ»ΠΊΠΈ
ΠΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅, 1990-Π΅ ΡΡΠ°Π»ΠΈ ΠΏΠΈΠΊΠΎΠΌ Β«ΠΌΠΎΠ΄Ρ Π½Π° ΠΠΒ», ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ Β«ΠΏΠ»ΠΎΡ ΠΎΠΉ ΠΠΠΒ», Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±ΡΠ» Ρ ΡΠΆΠ΅ Π²ΡΠ΅Π³ΠΎ. ΠΡΠ»ΠΈ Π²Ρ ΠΈΠ·ΡΡΠ°Π»ΠΈ ΠΠΠ Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ, ΡΠΎ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΡΠ·Π½Π°Π»ΠΈ ΠΎ Β«ΡΠ΅ΡΡΡΡΡ ΡΡΠΎΠ»ΠΏΠ°Ρ ΠΠΠΒ»:
ΠΠΈΠΆΠ΅ Ρ Π±ΡΠ΄Ρ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΡΡΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ, Π½Π°Π·ΡΠ²Π°Ρ ΠΈΡ ΠΏΠΎ Π°ΠΊΡΠΎΠ½ΠΈΠΌΠ°ΠΌ β SRP, OCP, LSP, ISP, DIP, CRPβ¦
ΠΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠΉ:
Π‘ ΡΡΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠ²Π°Π΄ΡΠ°Ρ Π²ΡΠ΅Π³Π΄Π° ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ Π²ΡΡΠΎΡΡ ΠΈ ΡΠΈΡΠΈΠ½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠ²Π°Π΄ΡΠ°ΡΠ° ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π²Π΅ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ ΠΏΠ»ΠΎΡΠ°Π΄Ρ ΡΠ°Π²Π½Π° Β«ΡΠΈΡΠΈΠ½Π° * ΡΠΈΡΠΈΠ½Π°Β».
ΠΠ½ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² (Π²ΡΡΠΈΡΠ»ΡΡ ΡΡΠΌΠΌΡ ΠΈΡ ΠΏΠ»ΠΎΡΠ°Π΄Π΅ΠΉ), Π½ΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ².
ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ Β«ΡΡΡΠ½ΠΎΡΡΡ/ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΒ» (Entity / Component)
Π Π°Π·ΠΎΠ±ΡΠ°Π²ΡΠΈΡΡ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ»ΠΊΠ°ΠΌΠΈ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ ΡΠΎΠΌΡ, Ρ ΡΠ΅Π³ΠΎ Π½Π°ΡΠΈΠ½Π°Π» ΠΡΠ°Ρ β ΠΊ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠ΅ Β«ΡΠΈΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΠΠΠΒ».
ΠΠΎ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° Π΅ΡΡ ΠΎΠ΄Π½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ β ΠΡΠ°Ρ Π½Π°Π·ΡΠ²Π°Π΅Ρ ΡΡΠΎΡ ΠΊΠΎΠ΄ Β«ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΌ ΠΠΠΒ», ΠΈ Π½Π° ΡΡΠΎ Ρ Ρ ΠΎΡΡ Π²ΠΎΠ·ΡΠ°Π·ΠΈΡΡ. ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΈΠΏΠΈΡΠ½ΡΠΌ Π΄Π»Ρ ΠΠΠ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΌΠΈΡΠ΅, Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΡ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ , ΠΎΠ½ Π½Π°ΡΡΡΠ°Π΅Ρ Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΠ, ΠΏΠΎΡΡΠΎΠΌΡ Π΅Π³ΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΡΠΎΠΈΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ.
Π― Π½Π°ΡΠ½Ρ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΎΠ½ Π½Π°ΡΠ°Π» ΠΏΠ΅ΡΠ΅Π΄Π΅Π»ΡΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π² ΡΡΠΎΡΠΎΠ½Ρ ECS: Β«Make it work on Windows againΒ» 3529f232510c95f53112bbfff87df6bbc6aa1fae
ΠΠ°, Π² ΡΡΠ° ΡΡΡΠΎΠΊΠ°Ρ ΠΊΠΎΠ΄Π° ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ ΡΡΠ°Π·Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½ΡΠΌ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎβ¦ ΠΠ°ΠΌ Π½ΡΠΆΠ΅Π½ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ Π°ΡΠΏΠ΅ΠΊΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ»ΠΎΠΊ β Π² ΠΈΠ³ΡΠ°Ρ 90-Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°. Π£ Π²Π°Ρ Π±ΡΠ»Π° Entity, ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠ°Ρ Character, ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠ°Ρ Player ΠΈ Monster, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅β¦ ΠΡΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ, ΠΊΠ°ΠΊ ΠΌΡ ΠΎΠΏΠΈΡΡΠ²Π°Π»ΠΈ Π΅Π³ΠΎ ΡΠ°Π½Π΅Π΅ (Β«ΠΊΠΎΠ΄ Ρ Π΄ΡΡΠΊΠΎΠΌΒ»), ΠΈ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡ Ρ Π½Π΅Π³ΠΎ, Π½ΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΡΠ΅Π½Ρ Π½Π΅Π³ΠΈΠ±ΠΊΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² OOD Π΅ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏ Β«composition over inheritanceΒ». ΠΡΠ°ΠΊ, Π² 2000-Ρ ΡΡΠ°Π» ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏ Β«composition over inheritanceΒ», ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΠ³Ρ Π½Π°ΡΠ°Π»ΠΈ ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΊΠΎΠ΄.
Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎΡ ΠΊΠΎΠ΄? ΠΡ, Π½ΠΈΡΠ΅Π³ΠΎ Ρ
ΠΎΡΠΎΡΠ΅Π³ΠΎ
ΠΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ Π²ΠΊΡΠ°ΡΡΠ΅, ΡΠΎ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠ·ΡΠΊΠ° β ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π° Π½Π΅ ΠΊΠ°ΠΊ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠ·ΡΠΊΠ°. ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΊΠΎΠ΄ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠ°ΡΠ·ΡΠΊ ΠΏΠΎΠ²Π΅ΡΡ C++ ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ (VM) Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠ°ΡΠ·ΡΠΊΠ°. Π Π΄Π΅ΠΌΠΎ-ΠΈΠ³ΡΠ΅ ΠΡΠ°ΡΠ° ΡΡΠΎΡ ΠΊΠΎΠ΄ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ (ΡΠΊΠΎΡΠΎ ΠΌΡ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ΄Π°Π»ΠΈΠΌ!) ΠΈ ΡΠ»ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² 10 ΡΠ°Π· ΡΠ½ΠΈΠ·ΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ³ΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΆΠ΅ ΠΎΠ½ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ? ΠΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ «Entity/Component» (Β«ΡΡΡΠ½ΠΎΡΡΡ/ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΒ») (ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠΎ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ «Entity/Component system» (Β«ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΡΠ½ΠΎΡΡΡ/ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΒ»)), Π½ΠΎ ΠΎΠ½Π° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ «Entity Component System» (Β«ΡΡΡΠ½ΠΎΡΡΡ-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ-ΡΠΈΡΡΠ΅ΠΌΠ°Β») (ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ «Entity Component System systems). ΠΠ½ ΡΠΎΡΠΌΠ°Π»ΠΈΠ·ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² Β«ECΒ»:
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ. Π Π²Π°ΡΠ΅ΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΆΠ΅ Π΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΊΠ°ΠΊ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠ·ΡΠΊΠ° β Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π½Π΅ΠΉ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² ΡΠ°Π·Π΄ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈβ¦ ΠΠ°ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠΎΠ³Π΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ? ΠΡ, Π΅ΡΠ»ΠΈ Π±ΡΡΡ ΡΠ΅ΡΡΠ½ΡΠΌ, ΡΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΌΠ΅ΡΡΠΎ ΠΆΡΡΡΠΊΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² GameObject Π² ΠΊΠΎΠ΄Π΅ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π°Π½Π½ΡΡ . Π ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠ°ΠΌ ΠΈΠ³Ρ/ΡΡΠΎΠ²Π½Π΅ΠΉ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΈΠΏΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²β¦ ΠΠ΄Π½Π°ΠΊΠΎ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΈΠ³ΡΠΎΠ²ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π±ΡΠ²Π°Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠΎΠ² ΠΈ Π² Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎΠΌ ΡΠΌΡΡΠ»Π΅ ΡΠ΅Π»Π°Ρ Π°ΡΠΌΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π±Ρ ΠΏΠΎΡΠΏΠΎΡΠΈΠ», ΡΡΠΎ ΡΡΠΎ Π²Π°ΠΆΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ. Π₯ΡΠΆΠ΅ ΡΠΎΠ³ΠΎ β ΡΡΠΎ Π²Π΅Π΄Ρ Π½Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±, ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ! ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Unity ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Β«ΡΠ·ΡΠΊΠ° ΡΠΊΡΠΈΠΏΡΠΎΠ²Β» C#, ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΠΈΠ³ΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΅Π³ΠΎ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Lua β ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π΄Π»Ρ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠΎΠ² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ C#/Lua Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΠΈΠ³ΡΠΎΠ²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ! ΠΡ Π·Π°Π½ΠΎΠ²ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡ Β«ΡΡΠ½ΠΊΡΠΈΡΒ» Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΅, ΠΈ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π½Π΅ ΡΡΠΎΠΈΠ» Π½Π°ΠΌ Π΄Π΅ΡΡΡΠΈΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈβ¦
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΡΠ΅Π½ΠΈΠΌ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ OOD:
ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ Π½Π΅ ΡΠ°ΠΊ Ρ ΠΎΡΠΎΡ Π² ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠΈ DIP β ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Π½ΠΈΠ΅ Π΄ΡΡΠ³ ΠΎ Π΄ΡΡΠ³Π΅.
ΠΡΠ°ΠΊ, Π²Π΅ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΊΠΎΠ΄ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ. ΠΡΡ ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ. Π£Π΄Π°Π»ΠΈΡΡ GameObject (Π² Π΄ΡΡΠ³ΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°Ρ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Entity), ΡΠ΄Π°Π»ΠΈΡΡ Component, ΡΠ΄Π°Π»ΠΈΡΡ FindOfType. ΠΡΠΎ ΡΠ°ΡΡΡ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ VM, Π½Π°ΡΡΡΠ°ΡΡΠ°Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ OOD ΠΈ ΡΠΆΠ°ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΡΡΡΠ°Ρ Π½Π°ΡΡ ΠΈΠ³ΡΡ.
ΠΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ Π±Π΅Π· ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² (ΡΠΎ Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ)
ΠΡΠ»ΠΈ ΠΌΡ ΡΠ΄Π°Π»ΠΈΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ, ΠΈ Ρ Π½Π°Ρ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Component, ΡΠΎ ΠΊΠ°ΠΊ Π½Π°ΡΠΈΠΌ GameObjects ΡΠ΄Π°ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΈ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²? ΠΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅, Π²ΠΌΠ΅ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠΎΠΉ ΡΠ°Π·Π΄ΡΡΠΎΠΉ VM ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ²Π΅ΡΡ Π½Π΅Ρ GameObjects Π½Π° ΡΡΡΠ°Π½Π½ΠΎΠΌ ΠΌΠ΅ΡΠ°ΡΠ·ΡΠΊΠ΅, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΈΡ Π½Π° C++, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΈΠ³Ρ ΠΈ ΡΡΠΎ Π² Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎΠΌ ΡΠΌΡΡΠ»Π΅ Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ°.
ΠΠΊΡΠ°ΡΡΠ΅ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ :
ΠΠ±ΡΠ΅ΠΊΡΡ
ΠΠΎΡΡΠΎΠΌΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Β«Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½ΡΒ»:
Π£ Π½Π°Ρ ΡΠ΅ΠΏΠ΅ΡΡ Π΅ΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΊΠΎΠ΄ C++:
ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ
ΠΡΡ ΠΎΠ΄Π½ΠΎ ΡΠ΅ΡΡΡΠ·Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Π½Π΅ΡΠ΅Π½ΠΎ Π² Π°Π»Π³ΠΎΡΠΈΡΠΌΡ. ΠΠΎΠΌΠ½ΠΈΡΠ΅, Π² Π½Π°ΡΠ°Π»Π΅ Ρ ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΈΠΌΠ±ΠΈΠΎΠ·Π΅, ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Π»ΠΈΡΡΡ Π½Π° ΡΡΡΡΠΊΡΡΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°? Π’Π°ΠΊ Π²ΠΎΡ, Π°Π½ΡΠΈΠΏΠ°ΡΡΠ΅ΡΠ½ «virtual void Update» ΡΡΠ°Π» Π²ΡΠ°Π³ΠΎΠΌ ΠΈ Π·Π΄Π΅ΡΡ. ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°, ΡΠΎΡΡΠΎΡΡΠΈΠΉ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ:
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΠ·ΡΠ°Π·ΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΊΡΠ°ΡΠΈΠ²ΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ, Π½ΠΎ ΠΠΠ₯Π ΡΡΠΎ ΠΎΡΠ΅Π½Ρ, ΠΎΡΠ΅Π½Ρ ΠΏΠ»ΠΎΡ ΠΎ. ΠΡΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΠ±ΡΡΡΡΠΈΡΡΠ΅Ρ ΠΈ ΠΏΠΎΡΠΎΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΈ ΠΏΠΎΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ Π²Π½ΡΡΡΠΈ ΠΈΠ³ΡΡ. ΠΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΡΠ²ΠΎΡ ΠΠ, Π΅ΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΅Π³ΠΎ, Π΅ΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² Π½Π΅Π³ΠΎ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΠΈ, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΅Π³ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΡ ΡΠ΄ΡΠ°Ρ , ΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΈ ΠΏΠΎΡΠΎΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΈ ΠΏΠΎΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡΡΠΎΠΌΡ Β«virtual void UpdateΒ» Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄Π°ΡΡ ΠΎΠ³Π½Ρ.
ΠΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ²Π½ΡΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (ΠΏΠΎΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ Π² Π½ΡΠΌ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΎΠ±ΡΡΡΡΠΈΡΠΎΠ²Π°Π½, Π½ΠΎ ΠΌΡ ΠΈΡΠΏΡΠ°Π²ΠΈΠΌ ΡΡΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡΠ°Ρ ).
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ Π² ΠΈΠ³ΡΡ, Π½Π°ΠΌ ΠΏΡΠΈΠ΄ΡΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ. Π― Π²Π΅ΡΠ½ΡΡΡ ΠΊ ΡΡΠΎΠΌΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΎΠΉ ΡΠ΅ΡΠΈΠΈ.
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
ΠΠ΄Π΅ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠ³ΡΠΎΠΌΠ½ΡΡ Π½Π°ΡΡΡΠ΅Π½ΠΈΠΉ OOD, ΡΠ΄Π΅Π»Π°Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ»ΠΎΡ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΎΡΡΠ°ΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π½ΠΎ Ρ Π΄ΠΎΠ±Π΅ΡΡΡΡ Π΄ΠΎ Π½ΠΈΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΅ ΡΠ΅ΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π° ΡΠΆΠ΅ Π½Π° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ Π²Π΅ΡΡΠΈΡ Ρ Β«ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΌ OODΒ» ΠΏΠΎΡΡΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ±Π΅ΠΆΠ΄Π°Π΅Ρ ΡΠΈΠ½Π°Π»ΡΠ½ΡΠΉ Β«ECSΒ»-ΠΊΠΎΠ΄ ΠΈΠ· ΠΊΠΎΠ½ΡΠ° ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈβ¦ Π Π²ΡΡ, ΡΡΠΎ ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ β ΠΏΡΠΎΡΡΠΎ Π²Π·ΡΠ»ΠΈ ΠΏΠ»ΠΎΡ ΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΡΠ΅Π²Π΄ΠΎ-ΠΠΠ, ΠΈ Π·Π°ΡΡΠ°Π²ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΠΠ (Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄Π°Π»ΠΈΠ» ΡΡΠΎ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°)!
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ
ΠΠ΄Π΅ΡΡ Ρ Ρ ΠΎΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠΈΠΉ ΡΠΏΠ΅ΠΊΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ², Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ OOD, Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅) ΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π½Π΅ΡΡΠΈ Π² ΡΠ°ΡΡΡΠΆΠ΄Π΅Π½ΠΈΡΡ ΠΎ ΠΏΠΎΡΠΎΠΊΠ°Ρ Π΄Π°Π½Π½ΡΡ , ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ DOD ΠΊ Π½Π°ΡΠ΅ΠΌΡ OOD-ΠΊΠΎΠ΄Ρ, ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΡΡΡΠ΅ΠΉΡΡ ΠΊ Π΄Π΅Π»Ρ ΠΌΡΠ΄ΡΠΎΡΡΠΈ Π² OOD-ΠΊΠΎΠ΄Π΅, ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² Β«ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉΒ», ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Ρ Π½Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈΡΡ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π·Π½ΡΡ ΡΡΠΈΠ»Π΅ΠΉ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²), ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈΠ· ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡΠ°, Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΡ ECS-Π²Π΅ΡΡΠΈΠΈ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, Π½Π΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ Π² Π΄ΠΎΠΊΠ»Π°Π΄Π΅ ΠΡΠ°ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ/SIMD). ΠΠΎΡΡΠ΄ΠΎΠΊ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΠΌ, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ ΡΠ°ΡΡΠΌΠΎΡΡΡ Π½Π΅ Π²ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅β¦
Π ΠΊΠ°ΠΊΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°?
ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΈΠΌΡ
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠΌΡ, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠ΅Π΅ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ»Π°ΡΡΠ°
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π»ΡΠ±ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠ΅Π΅ Ρ ΡΠΈΠΏΠΎΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
ΠΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
ΠΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΎΠ·Π΄Π°Π΅Ρ Π΅Π³ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ
ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° new.
ΠΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ sizeof Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ
ΠΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ²
ΠΠ»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ²
ΠΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ new
ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° new
ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° new Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ #include
ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° new
3. ΠΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π΅Π»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡ Π² C++?
4. ΠΡΠ°Π²ΠΈΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΡ Π±ΠΈΠ½Π°ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠ±ΡΠ΅ΠΊΡ, ΡΡΠΎΡΡΠΈΠΉ Ρ ΠΏΡΠ°Π²ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°. ΠΠ±ΡΠ΅ΠΊΡ, ΡΡΠΎΡΡΠΈΠΉ ΡΠ»Π΅Π²Π° ΠΎΡ Π·Π½Π°ΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°.
ΠΠ±ΡΠ΅ΠΊΡ, ΡΡΠΎΡΡΠΈΠΉ Ρ Π»Π΅Π²ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°. ΠΠ±ΡΠ΅ΠΊΡ, ΡΡΠΎΡΡΠΈΠΉ ΡΠΏΡΠ°Π²Π° ΠΎΡ Π·Π½Π°ΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°.
5. ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ C++ Π·Π°Π΄Π°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
class ΠΈΠΌΡ_ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ_ΠΊΠ»Π°ΡΡΠ° (ΠΈΠΌΡ_Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°) < ΡΠ΅Π»ΠΎ_ΠΊΠ»Π°ΡΡΠ° >;
class ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ_Π΄ΠΎΡΡΡΠΏΠ° ΠΈΠΌΡ_ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ_ΠΊΠ»Π°ΡΡΠ°, ΠΈΠΌΡ_Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ_ΠΊΠ»Π°ΡΡΠ° < ΡΠ΅Π»ΠΎ_ΠΊΠ»Π°ΡΡΠ° >;
class ΠΈΠΌΡ_ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ_ΠΊΠ»Π°ΡΡΠ° : ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ_Π΄ΠΎΡΡΡΠΏΠ° ΠΈΠΌΡ_Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ_ΠΊΠ»Π°ΡΡΠ° < ΡΠ΅Π»ΠΎ_ΠΊΠ»Π°ΡΡΠ° >;
6. ΠΠΌΠ΅Π΅ΡΡΡ Π»ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅Π½Π°ΠΌ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ· ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ° Π² Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅:
public | Π½Π΅Ρ |
protected | Π΅ΡΡΡ |
private |
ΠΡΠ²Π΅Ρ:
public | Π΅ΡΡΡ |
protected | Π΅ΡΡΡ |
private | Π½Π΅Ρ |
7. ΠΠΌΠ΅Π΅ΡΡΡ Π»ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅Π½Π°ΠΌ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ· Π²Π½Π΅ΡΠ½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ° Π² ΠΊΠ»Π°ΡΡΠ΅:
public | Π½Π΅Ρ |
protected | Π΅ΡΡΡ |
private |
ΠΡΠ²Π΅Ρ:
public | Π΅ΡΡΡ |
protected | Π½Π΅Ρ |
private | Π½Π΅Ρ |
8. ΠΠΌΠ΅Π΅ΡΡΡ Π»ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅Π½Π°ΠΌ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ· ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ°:
public | Π΅ΡΡΡ |
protected | Π½Π΅Ρ |
private |
ΠΡΠ²Π΅Ρ:
public | Π΅ΡΡΡ |
protected | Π΅ΡΡΡ |
private | Π΅ΡΡΡ |
9. ΠΡΠ°Π²ΠΈΠ»ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ² ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠΎΠ² ΠΏΡΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ:
Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, Π° Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅
Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ
ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ°, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠΉ Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ friend
ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠ°Ρ ΠΊΠ»Π°ΡΡΡ, Π½ΠΎ ΠΈΠΌΠ΅ΡΡΠ°Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠ°
ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ Π² ΠΊΠ»Π°ΡΡΠ΅ Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ friend, Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅ΡΡΠ°Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠ°
ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅Π»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ ΠΊΠ»Π°ΡΡΠ°Ρ
ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ°, Π° Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ°, ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ Π½Π΅ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π° ΠΊ ΠΊΠ»Π°ΡΡΡ
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ throw.
ΠΡΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, Π²ΠΎΠ·Π½ΠΈΠΊΡΡΡ Π² Π±Π»ΠΎΠΊΠ΅ try.
ΠΡΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π±ΡΠΆΠ΄Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ.
ΠΠΏΠΈΡΡΠ²Π°Π΅Ρ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ.
13. Π ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ:
ΠΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΠ»ΡΠΌ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ
14. ΠΠ°ΠΊΠΎΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΠΠ Π½Π°ΡΡΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°:
15. ΠΡΠ±Π΅ΡΠ΅ΡΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ:
ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠΊΡΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΈ ΠΊΠΎΠ΄Π°, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, Π·Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΡΠΊΠ°ΠΆΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅
ΡΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΡΡΡΠΈΠ΅ ΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, ΠΈ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΠΈ ΡΠΎ ΠΈ Π΄ΡΡΠ³ΠΎΠ΅ ΠΎΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π° ΠΈΠ»ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
ΡΡΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΠΠ, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅
ΡΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄ΡΡΠ³ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ°ΡΡΠΈΡΡΡ ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΈ Π½Π°Π±ΠΎΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ²
ΡΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ²
ΠΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΊΡΡΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ?
17. ΠΠ°ΠΊΠΎΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΠΠ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ if-then-else Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π°:
18. ΠΡΠ±Π΅ΡΠ΅ΡΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠ°:
ΡΡΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΌΠΎΠ³ΡΡ Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ
ΡΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄ΡΡΠ³ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ°ΡΡΠΈΡΡΡ ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΈ Π½Π°Π±ΠΎΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ²
ΡΡΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΠΠ, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅
ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠΊΡΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΈ ΠΊΠΎΠ΄Π°, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, Π·Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΡΠΊΠ°ΠΆΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅
ΡΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΡΡΡΠΈΠ΅ ΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, ΠΈ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΠΈ ΡΠΎ ΠΈ Π΄ΡΡΠ³ΠΎΠ΅ ΠΎΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π° ΠΈΠ»ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
ΠΠΎΡΡΠ΅ΠΊΡΠ΅Π½ Π»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄?
20. Π§ΡΠΎ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° X:
21. Π§ΡΠΎ Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
ΠΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
ΠΡΠΈΠ±ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
22. Π§ΡΠΎ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
23. ΠΠ°ΠΊΠΈΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΊΠΎΠ΄Ρ ΠΎΡΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ:
ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ public Π½Π° private Π² ΡΡΡΠΎΠΊΠ΅ 1
ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΡΠΎΠΊΡ 2 Π½Π° ΠΊΠΎΠ΄: void Count()
Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΡΡΠΎΠΊΡ 3 ΠΊΠΎΠ΄: void Count()
Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΡΡΠΎΠΊΡ 3 ΠΊΠΎΠ΄: void Counter::Count()
Π ΠΊΠ°ΠΊΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°?
1 (Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠ»Π°ΡΡΠ°)
2 (Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΊΠ»Π°ΡΡΠ°)
3 (Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ»Π΅Π½Π°ΠΌ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ· ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠ°)
4 (Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ»Π΅Π½Π°ΠΌ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠ°)