Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π₯Π°Π±Ρ€! МСня Π·ΠΎΠ²ΡƒΡ‚ Владислав Π ΠΎΠ΄ΠΈΠ½. Π’ настоящСС врСмя я являюсь Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ курса «АрхитСктор высоких Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊΒ» Π² OTUS, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°ΡŽ Π½Π° курсах, посвящСнных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ПО.

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΊ старту занятий Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ курса «АрхитСктура ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования» я ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ» Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ авторский ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π».

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

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

Π’ΠΎΠΎΠ±Ρ‰Π΅ устроСно всС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Π΅ΡΡ‚ΡŒ само ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π£ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹. Из ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Π½Ρ‹Π΅ Π½Π°ΠΌ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ GRASP (ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” SOLID ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹), ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ GoF. Из Π½ΠΈΡ… ΠΆΠ΅ слСдуСт ряд интСрСсных Π²Π΅Ρ‰Π΅ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, enterprise ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ориСнтированная ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ гласит, Ρ‡Ρ‚ΠΎ Β«ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ – это ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° программирования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ основной ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠ΅ΠΉ являСтся понятиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отоТдСствляСтся с ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ.Β»

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, систСма прСдставляСтся Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ собой Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ трСмя cΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ (identity), состояниС (state) ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (behaviour).

БостояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° β€” это Π½Π°Π±ΠΎΡ€ всСх Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

ПовСдСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° β€” это Π½Π°Π±ΠΎΡ€ всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Java, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ идСнтичности опрСдСляСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ equals.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ рядом ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ². ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΡ… количСствС расходится. ΠšΡ‚ΠΎ-Ρ‚ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΡ… Ρ‚Ρ€ΠΈ (старая школа программистов), ΠΊΡ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡ… Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ (новая школа программистов):

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ

Π’ΠΎΠΏΡ€Π΅ΠΊΠΈ мнСнию ΠΌΠ½ΠΎΠ³ΠΈΡ… ΡΠΎΠ±Π΅ΡΠ΅Π΄ΡƒΡŽΡ‰ΠΈΡ…ΡΡ (Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ собСсСдуСмых), инкапсуляция это Π½Π΅ Β«ΠΊΠΎΠ³Π΄Π° всС поля ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅Β». Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ проСктирования ПО, Π΅Π΅ слСды Π½Π°Π±Π»ΡŽΠ΄Π°ΡŽΡ‚ΡΡ Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠΈΠΊΡ€ΠΎ-, Π½ΠΎ ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ макропроСктирования.

НаучноС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ гласит, Ρ‡Ρ‚ΠΎ Β«Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ – это ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ любой класс ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ смыслС – любая Ρ‡Π°ΡΡ‚ΡŒ систСмы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Β«Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ ящик»: ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ класса ΠΈΠ»ΠΈ подсистСмы Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ интСрфСйс (Ρ‚.Π΅. список Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… свойств ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²) ΠΈ Π½Π΅ Π²Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.Β»

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, получаСтся, Ρ‡Ρ‚ΠΎ Ссли класс A обращаСтся ΠΊ полям класса B Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Π½Π΅ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Β«Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ информационная Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΒ», Π° ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ класс A завязываСтся Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ устройство класса B, ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство класса B ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ измСнСнию класса А. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, класс A Π½Π΅ просто Ρ‚Π°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с полями класса B, ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с состояниСм класса Π’ Π»Π΅ΠΆΠΈΡ‚ Π² классС А, ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс Π’, это Π½Π΅ удастся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, вСдь Π±Π΅Π· кусочка класса А класс Π’ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ бСсполСзным, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ класс Π’ придСтся ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ вмСстС с классом А. Экстраполируя это Π½Π° всю систСму, получаСтся, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ всю систСму Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ являСтся самым Π½Π΅Π΄ΠΎΠΎΡ†Π΅Π½Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΊ соТалСнию, ΠΌΠ°Π»ΠΎ ΠΊΠ΅ΠΌ интСрпрСтируСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Она позволяСт ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ число связСй ΠΌΠ΅ΠΆΠ΄Ρƒ классами ΠΈ подсистСмами ΠΈ, соотвСтствСнно, ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ классов ΠΈ подсистСм.

НаслСдованиС

НаслСдованиС β€” это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ класс ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ с сохранСниСм всСх свойств ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса-ΠΏΡ€Π΅Π΄ΠΊΠ° (супСркласса), добавляя ΠΏΡ€ΠΈ нСобходимости Π½ΠΎΠ²Ρ‹Π΅ свойства ΠΈ
ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

НаслСдованиС являСтся самым ΠΏΠ΅Ρ€Π΅ΠΎΡ†Π΅Π½Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ. Когда-Ρ‚ΠΎ ΡΡ‡ΠΈΡ‚Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Β«Π£ идСального программиста Π΄Π΅Ρ€Π΅Π²ΠΎ наслСдования ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π² Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ заканчиваСтся Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ пустым ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌΒ», ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ люди Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ наслСдованиС β€” это способ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ свойство Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π° ΠΊΠ°ΠΊ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ, Π° Π½Π΅ способ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, отнаслСдовав ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΎΡ‚ Ρ…ΠΎΠ»ΠΎΠ΄ΠΈΠ»ΡŒΠ½ΠΈΠΊΠ°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ ΠΎΠ±ΠΎΠΈΡ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² Π΅ΡΡ‚ΡŒ Ρ€ΡƒΡ‡ΠΊΠ°. НаслСдования ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎ возмоТности ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ наслСдованиС являСтся ΠΎΡ‡Π΅Π½ΡŒ сильной связью. Для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ количСства ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ наслСдования рСкомСндуСтся ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ «снизу-Π²Π²Π΅Ρ€Ρ…Β».

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ β€” это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ классы – ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ Π² контСкстС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для класса – ΠΏΡ€Π΅Π΄ΠΊΠ°.

Π—Π° самым садистским ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ кроСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ языка программирования для Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° if’ΠΎΠ² ΠΈ switch’Π΅ΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ ООП

ΠΠ²Ρ‚ΠΎΡ€ΠΈΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ

Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ ООП

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΡ‚Π°Ρ‚ΡŒ программистом, Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП ΠΊΠ°ΠΊ ΠžΡ‚Ρ‡Π΅ наш. Π”Π΅Ρ€ΠΆΠΈΡ‚Π΅ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΡƒ ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

Π“Π»Π°Π²Π½ΠΎΠ΅

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ вмСстС с наслСдованиСм

НС повторяйся (Don’t repeat yourself β€” DRY)

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

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной обязанности

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ класса Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ СдинствСнноС Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ВсС рСсурсы, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Π΅Π³ΠΎ осущСствлСния, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ инкапсулированы Π² этот класс ΠΈ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этой Π·Π°Π΄Π°Ρ‡Π΅.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ открытости/закрытости

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ сущности Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π½ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ для ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ подстановки Π‘Π°Ρ€Π±Π°Ρ€Ρ‹ Лисков

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π½Π΅ΠΊΠΈΠΉ Ρ‚ΠΈΠΏ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΡ‹, Π½Π΅ зная ΠΎΠ± этом.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ раздСлСния интСрфСйсов

ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ интСрфСйсы Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ тСматичСскиС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΡ… классы Π½Π΅ Π±Ρ‹Π»ΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСпосрСдствСнно Π² Π½ΠΈΡ… Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ инвСрсии зависимостСй

БистСма Π΄ΠΎΠ»ΠΆΠ½Π° ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° основС абстракций «свСрху Π²Π½ΠΈΠ·Β»: Π½Π΅ абстракции Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° основС Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ, Π° Π΄Π΅Ρ‚Π°Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° основС абстракций.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ООП Π² ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°Ρ…

ООП (ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) стало Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… соврСмСнных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π½ΠΎ, Π½Π΅ смотря Π½Π° ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ, эта ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° являСтся Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ СдинствСнной. Если Π²Ρ‹ ΡƒΠΆΠ΅ ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°ΠΌΠΈ ΠΈ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΎΠΊΠΊΡƒΠ»ΡŒΡ‚ΠΈΠ·ΠΌΠΎΠΌ ООП, Ρ‚ΠΎ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ вас ΠΆΠ΄Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ½Π³Ρ€ΠΈΠ΄ ΠΈ Π΄Π²Π° ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ трансформСры.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ

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

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

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

Π’ силу своСй ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…. Как ΠΈ ΠΎΠ±Π΅Ρ‰Π°Π», нашими ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ Π±ΡƒΠ΄ΡƒΡ‚ трансформСры. Π― Π½Π΅ трансформСролог, ΠΈ комиксов Π½Π΅ Ρ‡ΠΈΡ‚Π°Π», посСму Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π±ΡƒΠ΄Ρƒ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠ΅ΠΉ ΠΈ Ρ„Π°Π½Ρ‚Π°Π·ΠΈΠ΅ΠΉ.

ΠšΠ»Π°ΡΡΡ‹ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

Π‘Ρ€Π°Π·Ρƒ лиричСскоС отступлСниС: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΈ Π±Π΅Π· классов, Π½ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ, извиняюсь Π·Π° ΠΊΠ°Π»Π°ΠΌΠ±ΡƒΡ€, ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ схСму, Π³Π΄Π΅ классы β€” нашС всё.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, класс β€” это описаниС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠΌΠΈ свойствами ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. А ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€” это экзСмпляр с собствСнным состояниСм этих свойств.

ΠœΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ «свойства ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Β», Π½ΠΎ Π·Π²ΡƒΡ‡ΠΈΡ‚ это ΠΊΠ°ΠΊ-Ρ‚ΠΎ абстрактно ΠΈ нСпонятно. ΠŸΡ€ΠΈΠ²Ρ‹Ρ‡Π½Π΅Π΅ для программиста Π±ΡƒΠ΄Π΅Ρ‚ Π·Π²ΡƒΡ‡Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ: Β«ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΒ». На самом Π΄Π΅Π»Π΅ «свойства» β€” это Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, просто ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (ΠΈΡ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ полями ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°). Аналогично Β«ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Β» β€” это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (ΠΈΡ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΎΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ лишь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ собствСнному ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· поля.

Π˜Ρ‚ΠΎΠ³ΠΎ, ΠΈΠΌΠ΅Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ свойства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ. Как Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ? Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ЯП ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ обращСния ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ β€” это Ρ‚ΠΎΡ‡ΠΊΠ° (ΠΊΡ€ΠΎΠΌΠ΅ PHP ΠΈ Perl). Выглядит это ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ (псСвдокод):

Π’ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°Ρ… я Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ обозначСния:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ

Π― Π½Π΅ стал ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ UML-Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹, посчитав ΠΈΡ… нСдостаточно наглядными, Ρ…ΠΎΡ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ
Анимация β„–1

Π§Ρ‚ΠΎ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΈΠ· ΠΊΠΎΠ΄Π°?

1. this β€” это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ локальная пСрСмСнная (Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²), которая позволяСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈΠ· своих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊ собствСнным Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ. ΠžΠ±Ρ€Π°Ρ‰Π°ΡŽ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ собствСнным, Ρ‚ΠΎ бишь, ΠΊΠΎΠ³Π΄Π° трансформСр Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ свой ΠΌΠ΅Ρ‚ΠΎΠ΄, Π»ΠΈΠ±ΠΎ мСняСт собствСнноС состояниС. Если снаруТи ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ: optimus.x, Ρ‚ΠΎ ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ, Ссли ΠžΠΏΡ‚ΠΈΠΌΡƒΡ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ сам ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ своСму полю x, Π² Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π²ΡƒΡ‡Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ: this.x, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ «Ρ (ΠžΠΏΡ‚ΠΈΠΌΡƒΡ) ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡΡŒ ΠΊ своСму Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ x«. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков эта пСрСмСнная называСтся this, Π½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, self)

2. constructor β€” это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски вызываСтся ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠ°ΠΊ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ языкС конструктор обозначаСтся своим ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π“Π΄Π΅-Ρ‚ΠΎ это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° Ρ‚ΠΈΠΏΠ° __construct ΠΈΠ»ΠΈ __init__, Π° Π³Π΄Π΅-Ρ‚ΠΎ имя конструктора Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ класса. НазначСниС конструкторов β€” произвСсти ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ поля.

3. new β€” это ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ экзСмпляра ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ класса. Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ вызываСтся конструктор. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, конструктору пСрСдаСтся 0 Π² качСствС стартовой ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ трансформСра (это ΠΈ Π΅ΡΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Π°Ρ инициализация). ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово new Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках отсутствуСт, ΠΈ конструктор вызываСтся автоматичСски ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ класс ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊ: Transformer().

4. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ constructor ΠΈ run Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ состояниСм, Π° Π²ΠΎ всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π”Π°ΠΆΠ΅ синтаксис объявлСния совпадаСт.

5. ΠšΠ»Π°ΡΡΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ состояниС ΠΈ, ΠΊΠ°ΠΊ слСдствиС, созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ этом случаС ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π΅Π»Π°ΡŽΡ‚ статичСским.

(Single Responsibility Principle / ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной отвСтствСнности / ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ SOLID). Π‘ Π½ΠΈΠΌ Π²Ρ‹, навСрняка, ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ: Β«ΠΎΠ΄Π½Π° функция Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½ΠΎΠ΅ дСйствиС». Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ справСдлив ΠΈ для классов: «Один класс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΎΠ΄Π½Ρƒ Π·Π°Π΄Π°Ρ‡ΡƒΒ». К соТалСнию с классами слоТнСС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π³Ρ€Π°Π½ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΡΠ΅Ρ‡ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π°Ρ€ΡƒΡˆΠ°Π»ΡΡ.

Ассоциация

Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ Π² полях ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ стандартных Ρ‚ΠΈΠΏΠΎΠ², Π½ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. А эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, образуя Π΄Π΅Ρ€Π΅Π²ΠΎ (ΠΈΠ½ΠΎΠ³Π΄Π° Π³Ρ€Π°Ρ„) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ называСтся ассоциациСй.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ
Анимация β„–2

this.gun_left.fire() ΠΈ this.gun_right.fire() β€” это обращСния ΠΊ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ происходят Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΠΈ. По ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΌΡ‹ обращаСмся ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ сСбя (this.gun_right), получая ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡƒΡˆΠΊΠΈ, Π° ΠΏΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ обращаСмся ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΡƒΡˆΠΊΠΈ (this.gun_right.fire()).

1. ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ β€” случай, ΠΊΠΎΠ³Π΄Π° Π½Π° Ρ„Π°Π±Ρ€ΠΈΠΊΠ΅ трансформСров, собирая ΠžΠΏΡ‚ΠΈΠΌΡƒΡΠ°, ΠΎΠ±Π΅ ΠΏΡƒΡˆΠΊΠΈ Π΅ΠΌΡƒ Π½Π°ΠΌΠ΅Ρ€Ρ‚Π²ΠΎ ΠΏΡ€ΠΈΠΊΠΎΠ»Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΊ Ρ€ΡƒΠΊΠ°ΠΌ гвоздями, ΠΈ послС смСрти ΠžΠΏΡ‚ΠΈΠΌΡƒΡΠ°, ΠΏΡƒΡˆΠΊΠΈ ΡƒΠΌΠΈΡ€Π°ΡŽΡ‚ вмСстС с Π½ΠΈΠΌ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° совпадаСт с ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ.

ΠžΡ€Ρ‚ΠΎΠ΄ΠΎΠΊΡΠ°Π»ΡŒΠ½Π°Ρ ООП-Ρ†Π΅Ρ€ΠΊΠΎΠ²ΡŒ ΠΏΡ€ΠΎΠΏΠΎΠ²Π΅Π΄ΡƒΠ΅Ρ‚ Π½Π°ΠΌ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‚Ρ€ΠΎΠΈΡ†Ρƒ β€” ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΈ наслСдованиС, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зиТдСтся вСсь ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΈΡ… ΠΏΠΎ порядку.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ

НаслСдованиС

НаслСдованиС β€” это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт, ΠΊΠ°ΠΊ Π±Ρ‹ ΠΏΠ°Ρ€Π°Π΄ΠΎΠΊΡΠ°Π»ΡŒΠ½ΠΎ это Π½Π΅ Π·Π²ΡƒΡ‡Π°Π»ΠΎ, Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌΠΈ классами свойства ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… классов для дальнСйшСго Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Π§Ρ‚ΠΎ Ссли, ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ ΡˆΡ‚Π°ΠΌΠΏΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… трансформСров, Π° Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ каркас, Π½ΠΎ с Ρ€Π°Π·Π½Ρ‹ΠΌ обвСсом? ООП позволяСт Π½Π°ΠΌ Ρ‚Π°ΠΊΡƒΡŽ ΡˆΠ°Π»ΠΎΡΡ‚ΡŒ ΠΏΡƒΡ‚Π΅ΠΌ раздСлСния Π»ΠΎΠ³ΠΈΠΊΠΈ Π½Π° сходства ΠΈ различия с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ выносом сходств Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс, Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ Π² классы-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ. Как это выглядит?

ΠžΠΏΡ‚ΠΈΠΌΡƒΡ ΠŸΡ€Π°ΠΉΠΌ ΠΈ ΠœΠ΅Π³Π°Ρ‚Ρ€ΠΎΠ½ β€” ΠΎΠ±Π° трансформСры, Π½ΠΎ ΠΎΠ΄ΠΈΠ½ являСтся Π°Π²Ρ‚ΠΎΠ±ΠΎΡ‚ΠΎΠΌ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ дСсСптиконом. Допустим, Ρ‡Ρ‚ΠΎ различия ΠΌΠ΅ΠΆΠ΄Ρƒ Π°Π²Ρ‚ΠΎΠ±ΠΎΡ‚Π°ΠΌΠΈ ΠΈ дСсСптиконами Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΠ±ΠΎΡ‚Ρ‹ Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ, Π° дСсСптиконы β€” Π² Π°Π²ΠΈΠ°Ρ†ΠΈΡŽ. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ свойства ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму наслСдования Ρ‚Π°ΠΊ: ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ‡Π΅Ρ€Ρ‚Ρ‹ (Π±Π΅Π³, ΡΡ‚Ρ€Π΅Π»ΡŒΠ±Π°) Π±ΡƒΠ΄ΡƒΡ‚ описаны Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ классС «ВрансформСр», Π° различия (трансформация) Π² Π΄Π²ΡƒΡ… Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… классах «Автобот» ΠΈ «ДСсСптикон».

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ
Анимация β„–3

Π‘Π΅ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ наглядно ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚, ΠΊΠ°ΠΊ наслСдованиС становится ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· способов Π΄Π΅Π΄ΡƒΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ (DRY-ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ прСдоставляСт возмоТности для ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ Π² классах-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°Ρ….

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ°

Если ΠΆΠ΅ Π² классС-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² классС-Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅, Ρ‚ΠΎ сработаСт ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ°. Π­Ρ‚ΠΎ позволяСт Π½Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ обращСния ΠΊ полю ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, поиск Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° происходит ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° ΠΊ самому ΠΊΠΎΡ€Π½ΡŽ β€” Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŽ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли Ρƒ Π°Π²Ρ‚ΠΎΠ±ΠΎΡ‚Π° Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ fire(), сначала поиск ΠΌΠ΅Ρ‚ΠΎΠ΄Π° производится Π² классС-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ΅ β€” Autobot, Π° ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π³ΠΎ Ρ‚Π°ΠΌ Π½Π΅Ρ‚, поиск поднимаСтся Π½Π° ΡΡ‚ΡƒΠΏΠ΅Π½ΡŒ Π²Ρ‹ΡˆΠ΅ β€” Π² класс Transformer, Π³Π΄Π΅ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ ΠΈ Π²Ρ‹Π·Π²Π°Π½. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ модификация Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ LSP ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² SOLID, Π½ΠΎ ΠΌΡ‹ рассматриваСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅Ρ…Π½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.

НСумСстноС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅

Π›ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ глубокая иСрархия наслСдования ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌΡƒ эффСкту β€” ΡƒΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΊΡ‚ΠΎ ΠΎΡ‚ ΠΊΠΎΠ³ΠΎ наслСдуСтся, ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² ΠΊΠ°ΠΊΠΎΠΌ случаС вызываСтся. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, Π½Π΅ всС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ трСбования ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ наслСдования. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ наслСдованиС слСдуСт Π±Π΅Π· Ρ„Π°Π½Π°Ρ‚ΠΈΠ·ΠΌΠ°. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ наслСдованию Ρ‚Π°ΠΌ, Π³Π΄Π΅ это умСстно. Π›ΡŽΠ±Π°Ρ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠ° наслСдования, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я встрСчал, подкрСпляСтся Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° наслСдованиС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ ΠΌΠΎΠ»ΠΎΡ‚ΠΊΠ°. Но это ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ наслСдованиС Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ всСгда Π²Ρ€Π΅Π΄ΠΈΡ‚. Мой Π½Π°Ρ€ΠΊΠΎΠ»ΠΎΠ³ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг β€” это ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ тСбя Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ наслСдования.

Как ΠΏΡ€ΠΈ описании ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ Π΄Π²ΡƒΡ… сущностСй ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° умСстно наслСдованиС, Π° ΠΊΠΎΠ³Π΄Π° β€” композиция? МоТно Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ популярной ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠΎΠΉ: спроситС сСбя, ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ А являСтся ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ Π‘? Если Π΄Π°, Ρ‚ΠΎ скорСС всСго, Ρ‚ΡƒΡ‚ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ наслСдованиС. Если ΠΆΠ΅ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ А являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ сущности Π‘, Ρ‚ΠΎ наш Π²Ρ‹Π±ΠΎΡ€ β€” композиция.

ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ нашСй ситуации это Π±ΡƒΠ΄Π΅Ρ‚ Π·Π²ΡƒΡ‡Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

НаслСдованиС статично

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ наслСдования ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ наслСдованиС ΠΈΠΌΠ΅Π΅Ρ‚ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ ΠΈ устанавливаСт ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ классов Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° этапС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ/компиляции. ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, позволяСт ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ сущностСй Π½Π° Π»Π΅Ρ‚Ρƒ прямо Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅ β€” ΠΈΠ½ΠΎΠ³Π΄Π° это ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, поэтому ΠΎΠ± этом Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ (Ссли ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Π½Π΅Ρ‚ ТСлания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅).

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

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ

Π’ΠΎΠΎΠ±Ρ‰Π΅, Π² ΠΊΡ€ΡƒΠ³Π°Ρ… ΠΈΠ»Π»ΡŽΠΌΠΈΠ½Π°Ρ‚ΠΎΠ² Π±Ρ‹Ρ‚ΡƒΠ΅Ρ‚ ΠΌΠ½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ мноТСствСнноС наслСдованиС β€” это Π³Ρ€Π΅Ρ…, ΠΎΠ½ΠΎ нСсСт Π·Π° собой Ρ€ΠΎΠΌΠ±ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ Π½Π΅Ρ€Π°Π·Π±Π΅Ρ€ΠΈΡ…Ρƒ с конструкторами. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ мноТСствСнным наслСдованиСм, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ интСрфСйсов (ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ). Но справСдливости Ρ€Π°Π΄ΠΈ, слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ мноТСствСнноС наслСдованиС ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ примСсСй.

АбстрактныС классы

ΠšΡ€ΠΎΠΌΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… классов Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ абстрактныС классы. ΠžΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… классов ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ нСльзя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ класса. Π—Π°Ρ‡Π΅ΠΌ ΠΆΠ΅ Π½ΡƒΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΎΠΉ класс, спросит Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ? Он Π½ΡƒΠΆΠ΅Π½ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΌΠΎΠ³Π»ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ β€” ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ классы, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ.

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

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ β€” свойство систСмы, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ мноТСство Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ интСрфСйса. НичСго нСпонятно. ΠžΠ±Ρ€Π°Ρ‚ΠΈΠΌΡΡ ΠΊ трансформСрам.

ПолоТим, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ трансформСра: ΠžΠΏΡ‚ΠΈΠΌΡƒΡ, ΠœΠ΅Π³Π°Ρ‚Ρ€ΠΎΠ½ ΠΈ ОлСг. ВрансформСры Π±ΠΎΠ΅Π²Ρ‹Π΅, стало Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ attack(). Π˜Π³Ρ€ΠΎΠΊ, наТимая Ρƒ сСбя Π½Π° дТойстикС ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π²ΠΎΠ΅Π²Π°Ρ‚ΡŒΒ», сообщаСт ΠΈΠ³Ρ€Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π° Π²Ρ‹Π·Π²Π°Π»Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ attack() Ρƒ трансформСра, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ³Ρ€Π°Π΅Ρ‚ ΠΈΠ³Ρ€ΠΎΠΊ. Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ трансформСры Ρ€Π°Π·Π½Ρ‹Π΅, Π° ΠΈΠ³Ρ€Π° интСрСсная, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ Π°Ρ‚Π°ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ своим способом. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, ΠžΠΏΡ‚ΠΈΠΌΡƒΡ β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Автобот, Π° Автоботы ΡΠ½Π°Π±ΠΆΠ°ΡŽΡ‚ΡΡ ΠΏΡƒΡˆΠΊΠ°ΠΌΠΈ с ΠΏΠ»ΡƒΡ‚ΠΎΠ½ΠΈΠ΅Π²Ρ‹ΠΌΠΈ Π±ΠΎΠ΅Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ (Π΄Π° Π½Π΅ ΠΏΡ€ΠΎΠ³Π½Π΅Π²Π°ΡŽΡ‚ΡΡ Ρ„Π°Π½Π°Ρ‚Ρ‹ трансформСров). ΠœΠ΅Π³Π°Ρ‚Ρ€ΠΎΠ½ β€” ДСсСптикон, ΠΈ стрСляСт ΠΈΠ· ΠΏΠ»Π°Π·ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡƒΡˆΠΊΠΈ. ОлСг β€” басист, ΠΈ ΠΎΠ½ обзываСтся. А Π² Ρ‡Π΅ΠΌ польза?

Польза ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΎΡΡŒΠ±Ρ‹, ΠΊΡ‚ΠΎ ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π°Ρ‚Π°ΠΊΠΎΠ²Π°Ρ‚ΡŒ, Π΅Π³ΠΎ Π·Π°Π΄Π°Ρ‡Π° просто Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ attack(), сигнатура ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π° для всСх классов пСрсонаТСй. Π­Ρ‚ΠΎ позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ классы пСрсонаТСй, ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ…, Π½Π΅ мСняя ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ β€” это ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ доступа ΠΊ полям ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Под ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ доступа подразумСваСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ/Π½Π΅ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠ΄Π³Ρ€ΡƒΠ·ΠΊΠΈ, вычислСния ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅ динамичСскоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках Ρ‡Π°ΡΡ‚ΡŒΡŽ инкапсуляции являСтся сокрытиС Π΄Π°Π½Π½Ρ‹Ρ…. Для этого ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа (опишСм Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ Π²ΠΎ всСх ООП языках):

Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа? Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС Ρ‚Π°ΠΊ: Ссли ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ доступСн Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ public. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС β€” private. Если Π΅ΡΡ‚ΡŒ наслСдованиС, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ protected Π² случаС, ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ снаруТи, Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ.

АксСссоры (Π³Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹ ΠΈ сСттСры)

Π“Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹ ΠΈ сСттСры β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π·Π°Π΄Π°Ρ‡Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ доступ ΠΊ полям. Π“Π΅Ρ‚Ρ‚Π΅Ρ€ считываСт ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля, Π° сСттСр β€” Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ записываСт Π² ΠΏΠΎΠ»Π΅. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ½Π°Π±Π΄ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌΠΈ. НапримСр, сСттСр ΠΏΡ€ΠΈ записи значСния Π² ΠΏΠΎΠ»Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ, ΠΈΠ»ΠΈ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ допустимых (валидация). Π’ Π³Π΅Ρ‚Ρ‚Π΅Ρ€ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Π»Π΅Π½ΠΈΠ²ΡƒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ссли Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° самом Π΄Π΅Π»Π΅ Π»Π΅ΠΆΠΈΡ‚ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ мноТСство.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках Π΅ΡΡ‚ΡŒ синтаксичСский сахар, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Ρ‚Π°ΠΊΠΈΠ΅ аксСссоры ΠΌΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ свойства, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ доступ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ для внСшнСго ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ с ΠΏΠΎΠ»Π΅ΠΌ, Π° с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ выполняСтся SQL-запрос ΠΈΠ»ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°. Π’Π°ΠΊ достигаСтся абстракция ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹

Π—Π°Π΄Π°Ρ‡Π° интСрфСйса β€” ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ зависимости сущностСй Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, Π΄ΠΎΠ±Π°Π²ΠΈΠ² большС абстракции.

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

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² языках, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ интСрфСйсы, Π½Π΅Ρ‚ мноТСствСнного наслСдования классов, Π½ΠΎ Π΅ΡΡ‚ΡŒ мноТСствСнноС наслСдованиС интСрфСйсов. Π­Ρ‚ΠΎ позволяСт классу ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ интСрфСйсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ обязуСтся ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

ΠšΠ»Π°ΡΡΡ‹ с интСрфСйсами состоят Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Β«ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΒ»: ΠΎΠ΄ΠΈΠ½ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мноТСство интСрфСйсов, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ интСрфСйс, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ классами.

Π£ интСрфСйса двустороннСС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅:

ΠžΠ±Ρ€Π°Ρ‰Π°ΡŽ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ°ΡΡΡ систСма слотов Ρƒ трансформСров β€” это ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. Если ΠΆΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π² слотах Π±ΡƒΠ΄Π΅Ρ‚ смСнным Π² Ρ…ΠΎΠ΄Π΅ ΠΆΠΈΠ·Π½ΠΈ трансформСра, Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° это ΡƒΠΆΠ΅ агрСгация. Для наглядности, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ интСрфСйсы, ΠΊΠ°ΠΊ принято Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках, добавляя Π·Π°Π³Π»Π°Π²Π½ΡƒΡŽ «И» ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ: IWeapon, IEnergyGenerator, IScanner.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ
Анимация β„–4

К соТалСнию, Π² ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π½Π΅ Π²Π»Π΅Π·Π»Π° Ρ„Π°Π±Ρ€ΠΈΠΊΠ°, Π½ΠΎ ΠΎΠ½Π° всС Ρ€Π°Π²Π½ΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°, трансформСра ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈ Π²ΠΎ Π΄Π²ΠΎΡ€Π΅.

ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ слой абстракции Π² Π²ΠΈΠ΄Π΅ интСрфСйсов ΠΌΠ΅ΠΆΠ΄Ρƒ слоСм ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ слоСм-ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅ΠΌ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΡ… ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ…. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ это Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ, посмотрСв Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ слой Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: Π² слоС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ (слСва) Π½Π΅Ρ‚ Π½ΠΈ слова ΠΏΡ€ΠΎ класс Transformer, Π° Π² слоС-ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅ (справа) Π½Π΅Ρ‚ Π½ΠΈ слова ΠΏΡ€ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ (Ρ‚Π°ΠΌ Π½Π΅Ρ‚ слов Radar, RocketLauncher, NuclearReactor ΠΈ Ρ‚. Π΄.)

Π’ Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊ трансформСрам, Π½Π΅ затрагивая Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠΈ самих трансформСров. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Ρ… трансформСров, комбинируя ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ΡƒΡŽΡ‰ΠΈΠ΅, Π»ΠΈΠ±ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ΡƒΡŽΡ‰ΠΈΠ΅, Π½Π΅ мСняя ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ….

Утиная типизация

Π―Π²Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ наблюдаСм Π² ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅ΠΉΡΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅, называСтся ΡƒΡ‚ΠΈΠ½ΠΎΠΉ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ: Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ крякаСт ΠΊΠ°ΠΊ ΡƒΡ‚ΠΊΠ°, ΠΏΠ»Π°Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΡƒΡ‚ΠΊΠ°, ΠΈ выглядит ΠΊΠ°ΠΊ ΡƒΡ‚ΠΊΠ°, Ρ‚ΠΎ, скорСС всСго β€” это ΡƒΡ‚ΠΊΠ°.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ это Π½Π° язык трансформСров, Π·Π²ΡƒΡ‡Π°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊ: Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ стрСляСт ΠΊΠ°ΠΊ ΠΏΡƒΡˆΠΊΠ°, ΠΈ пСрСзаряТаСтся ΠΊΠ°ΠΊ ΠΏΡƒΡˆΠΊΠ°, скорСС всСго, это ΠΏΡƒΡˆΠΊΠ°. Если устройство Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠ½Π΅Ρ€Π³ΠΈΡŽ, скорСС всСго, это Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ энСргии.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ

(Interface Segregation Principle / ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ раздСлСния интСрфСйса / Π§Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ SOLID) ΠΏΡ€ΠΈΠ·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΆΠΈΡ€Π½Ρ‹Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ интСрфСйсы. ВмСсто этого интСрфСйсы Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΠΈ спСциализированныС, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π³ΠΈΠ±Ρ‡Π΅ ΠΈΡ… ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… классах, Π½Π΅ заставляя ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ лишниС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Абстракция

Π’ ООП всС крутится Π²ΠΎΠΊΡ€ΡƒΠ³ абстракции. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ„Π°Π½Π°Ρ‚ΠΈΠΊΠΈ, ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅, Ρ‡Ρ‚ΠΎ абстракция Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ ООП-Ρ‚Ρ€ΠΎΠΈΡ†Ρ‹ (инкапсуляция, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, наслСдованиС). А ΠΌΠΎΠΉ инспСктор ΠΏΠΎ Π£Π”Πž Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅: абстракция присуща для любого программирования, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ООП, поэтому ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡ‚ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, Π½ΠΎ ΠΈΠ· пСсни слов Π½Π΅ Π²Ρ‹ΠΊΠΈΠ½Π΅ΡˆΡŒ. Π’Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅, абстракция Π½ΡƒΠΆΠ½Π°, ΠΈ особСнно Π² ООП.

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ абстракции

Π’ΡƒΡ‚ нСльзя Π½Π΅ ΠΏΡ€ΠΎΡ†ΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ ΡˆΡƒΡ‚ΠΊΡƒ:
β€” Π»ΡŽΠ±ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ слоя абстракции, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ большого количСства абстракций.

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

НСвСрный Π²Ρ‹Π±ΠΎΡ€ уровня абстракции Π²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ:

Π•Ρ‰Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции опрСдСляСтся Π½Π΅ для всСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Ρ†Π΅Π»ΠΎΠΌ, Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π’ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ мСстах систСмы абстракции ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСдостаточно, Π° Π³Π΄Π΅-Ρ‚ΠΎ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ β€” ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€. Однако, Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ уровня абстракции ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ своСврСмСнным Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠΌ. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово β€” своСврСмСнным. Π—Π°ΠΏΠΎΠ·Π΄Π°Π»Ρ‹ΠΉ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ провСсти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ абстракции Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΡƒΠΆΠ΅ мноТСство ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ². ΠŸΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ обряд Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π² Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… систСмах ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΏΡ€ΡΠ³Π°Ρ‚ΡŒΡΡ с острой болью Π² труднодоступных мСстах программиста. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ Π² Π΄ΠΎΠΌΠ΅ β€” дСшСвлС ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ рядом Π΄ΠΎΠΌ с нуля.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ уровня абстракции ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ гипотСтичСской ΠΈΠ³Ρ€Ρ‹ «трансформСры-ΠΎΠ½Π»Π°ΠΉΠ½Β». Π£Ρ€ΠΎΠ²Π½ΠΈ абстракции Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ слои, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ рассматриваСмый слой Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΎΠΆΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ, забирая ΠΈΠ· Π½Π΅Π³ΠΎ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° Π² сСбя.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ слой. Π’ ΠΈΠ³Ρ€Π΅ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ класс трансформСра, всС свойства ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ описаны Π² Π½Π΅ΠΌ. Π­Ρ‚ΠΎ совсСм дСрСвянный ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΊΠ°Π·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹, которая Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ особой гибкости.

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

Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. Помимо классификации трансформСров вводится агрСгация с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСмы слотов ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (ΠΊΠ°ΠΊ Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с Ρ€Π΅Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ, ΠΏΡƒΡˆΠΊΠ°ΠΌΠΈ ΠΈ Ρ€Π°Π΄Π°Ρ€Π°ΠΌΠΈ). Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‡Π°ΡΡ‚ΡŒ повСдСния Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊΠΎΠΉ стаф ΠΈΠ³Ρ€ΠΎΠΊ установил Π² своСго трансформСра. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ ΠΈΠ³Ρ€ΠΎΠΊΡƒ Π΅Ρ‰Π΅ большС возмоТностСй для кастомизации ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠΈ пСрсонаТа, Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ эти самыС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Ρ‡Ρ‚ΠΎ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π³Π΅ΠΉΠΌ-Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π°ΠΌ ΠΏΠΎ выпуску Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°.

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ

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

ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ

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

ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования, ΠΊΠ°ΠΊ ΠΈ абстракция, свойствСнны Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ООП Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Π½ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°ΠΌ. Π’ΠΎΠΎΠ±Ρ‰Π΅, Ρ‚Π΅ΠΌΠ° ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π½ΠΎ здСсь Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π΅Ρ€Π΅Ρ‡ΡŒ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ. Π­Ρ‚ΠΎ Π»ΠΎΠ²ΡƒΡˆΠΊΠ°! БСйчас объясню, ΠΏΠΎΡ‡Π΅ΠΌΡƒ.

ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² β€” ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»ΠΈΠ±ΠΎ ΡƒΠΆΠ΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈΡΡŒ, Π»ΠΈΠ±ΠΎ, вСроятнСС всСго, обнаруТатся Π² Ρ…ΠΎΠ΄Π΅ развития ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’Π°ΠΊ Π²ΠΎΡ‚, Ρƒ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π» ΠΏΡ€ΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π½Π΅ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»ΠΈΠΌΡ‹ΠΉ соблазн ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ Π½Π΅ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π° для ΠΈΡ… пороТдСния. А ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π² своих ТСланиях Π½Π΅ΠΎΠ±ΡƒΠ·Π΄Π°Π½, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½Π΅ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ², Π° ΠΏΠΎΠ΄ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ².

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² β€” Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Π“ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΊΠΎΠ»Π»Π΅Π³Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² этом мСстС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Β«Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° обязанностСй», Ρ‡Π΅ΠΌ полчаса Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Π±ΡƒΠΌΠ°ΠΆΠΊΠ΅.

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

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

Π₯очСтся Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ свою пСснь Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ словами. Π›ΡŽΠ±Ρ‹Π΅ описанныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹, ΠΊΠ°ΠΊ ΠΈ ООП Π² Ρ†Π΅Π»ΠΎΠΌ Π½Π΅ стоит ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚Π°ΠΌ, Π³Π΄Π΅ это бСссмыслСнно ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Π²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ Π²Π΅Π΄Π΅Ρ‚ ΠΊ появлСнию статСй со странными Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° «НаслСдованиС β€” ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ старСния» ΠΈΠ»ΠΈ Β«Π‘ΠΈΠ½Π³Π»Ρ‚ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ онкологичСским заболСваниям».

Π― ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ. Если Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ случай с синглтоном, Ρ‚ΠΎ Π΅Π³ΠΎ повсСмСстноС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π±Π΅Π· знания Π΄Π΅Π»Π°, стало ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. И Π»ΡŽΠ±ΠΈΡ‚Π΅Π»ΠΈ Π·Π°Π±ΠΈΠ²Π°Ρ‚ΡŒ Π³Π²ΠΎΠ·Π΄ΠΈ микроскопом любСзно Π΅Π³ΠΎ Π½Π°Ρ€Π΅ΠΊΠ»ΠΈ Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠΌ. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π±Π»Π°Π³ΠΎΡ€Π°Π·ΡƒΠΌΠ½Ρ‹.

К соТалСнию, Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ сущСствуСт ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹Ρ… Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ² Π½Π° всС случаи ΠΆΠΈΠ·Π½ΠΈ, Π³Π΄Π΅ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ умСстно, Π° Π³Π΄Π΅ нСумСстно. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ постСпСнно ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ с ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *