Ооп Ρ‡Ρ‚ΠΎ это: ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: Π½Π° ΠΏΠ°Π»ΡŒΡ†Π°Ρ…

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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: Π½Π° ΠΏΠ°Π»ΡŒΡ†Π°Ρ…

Наста­ло врС­мя ΡΠ΅Ρ€ΡŒΡ‘Π·Β­Π½Ρ‹Ρ… Ρ‚Π΅ΠΌ: сСго­дня рас­ска­ТСм ΠΏΡ€ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΒ­Π³Ρ€Π°ΠΌΒ­ΠΌΠΈΒ­Ρ€ΠΎΒ­Π²Π°Β­Π½ΠΈΠ΅, ΠΈΠ»ΠΈ ООП. Π­Ρ‚ΠΎ Ρ‚Π΅ΠΌΠ° для ΠΏΡ€ΠΎΒ­Π΄Π²ΠΈΒ­Π½ΡƒΒ­Ρ‚ΠΎΒ­Π³ΠΎ уров­ня Ρ€Π°Π·Β­Ρ€Π°Β­Π±ΠΎΡ‚Β­ΠΊΠΈ, ΠΈΒ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΒ­Π±Ρ‹ Π²Ρ‹ Π΅Π³ΠΎ постигли.

Из это­го Ρ‚Π΅Ρ€Β­ΠΌΠΈΒ­Π½Π° ΠΌΠΎΠΆΒ­Π½ΠΎ ΡΠ΄Π΅Β­Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ ООП β€” это Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Β­Ρ…ΠΎΠ΄ ΠΊΒ ΠΏΡ€ΠΎΒ­Π³Ρ€Π°ΠΌΒ­ΠΌΠΈΒ­Ρ€ΠΎΒ­Π²Π°Β­Π½ΠΈΡŽ, Π³Π΄Π΅ Π½Π° ΠΏΠ΅Ρ€Β­Π²ΠΎΠΌ мСстС сто­ят ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Ρ‹. На самом Π΄Π΅Π»Π΅ Ρ‚Π°ΠΌ всё Π½Π΅ΠΌΠ½ΠΎΒ­Π³ΠΎ слоТ­нСС, Π½ΠΎ ΠΌΡ‹ Π΄ΠΎ это­го Π΅Ρ‰Ρ‘ добС­рём­ся. Для Π½Π°Ρ‡Π°Β­Π»Π° ΠΏΠΎΠ³ΠΎΒ­Π²ΠΎΒ­Ρ€ΠΈΠΌ ΠΏΡ€ΠΎ ООП Π²ΠΎΠΎΠ±Β­Ρ‰Π΅ ΠΈΒ Ρ€Π°Π·Β­Π±Π΅Β­Ρ€Ρ‘ΠΌ, с чСго ΠΎΠ½ΠΎ начинаСтся.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ΅)

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

Напри­мСр, Π²Β ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ функ­ция Β«ΠŸΡ€ΠΎΒ­Π²Π΅Β­Ρ€ΠΈΡ‚ΡŒ emailΒ». Она ΠΏΠΎΠ»ΡƒΒ­Ρ‡Π°Β­Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ тСкст, сопо­став­ля­Ст со сво­и­ми ΠΏΡ€Π°Β­Π²ΠΈΒ­Π»Π°Β­ΠΌΠΈ ΠΈΒ Π²Ρ‹Π΄Π°Β­Ρ‘Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚: это ΠΏΡ€Π°Β­Π²ΠΈΠ»ΡŒΒ­Π½Ρ‹ΠΉ элСк­трон­ный адрСс ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Если ΠΏΡ€Π°Β­Π²ΠΈΠ»ΡŒΒ­Π½Ρ‹ΠΉ, Ρ‚ΠΎ true, Ссли Π½Π΅Ρ‚ β€” Ρ‚ΠΎΒ false.

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

Π§Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ с процСдурным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ

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

Напри­мСр, Π²Ρ‹ ΠΏΠΈΡˆΠ΅Β­Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΒ­Ρ†ΠΈΡŽ Β«Π—Π°Ρ€Π΅Β­Π³ΠΈΒ­ΡΡ‚Ρ€ΠΈΒ­Ρ€ΠΎΒ­Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΒ­Π·ΠΎΒ­Π²Π°Β­Ρ‚Π΅Β­Π»Ρ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°Β». Π’Π½ΡƒΡ‚Β­Ρ€ΠΈ Π½Π΅Ρ‘ Π²Π°ΠΌ Π½ΡƒΠΆΒ­Π½ΠΎ ΠΏΡ€ΠΎΒ­Π²Π΅Β­Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ элСк­трон­ный адрСс. Π’Ρ‹ Π²Ρ‹Π·Ρ‹Β­Π²Π°Β­Π΅Β­Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΒ­Ρ†ΠΈΡŽ Β«ΠŸΡ€ΠΎΒ­Π²Π΅Β­Ρ€ΠΈΡ‚ΡŒ emailΒ» Π²Π½ΡƒΡ‚Β­Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΒ­Ρ†ΠΈΠΈ Β«Π—Π°Ρ€Π΅Β­Π³ΠΈΒ­ΡΡ‚Ρ€ΠΈΒ­Ρ€ΠΎΒ­Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΒ­Π·ΠΎΒ­Π²Π°Β­Ρ‚Π΅Β­Π»ΡΒ», ΠΈΒ Π² зави­си­мо­сти ΠΎΡ‚ ΠΎΡ‚Π²Π΅Β­Ρ‚Π° Ρ„ΡƒΠ½ΠΊΒ­Ρ†ΠΈΠΈ Π²Ρ‹ Π»ΠΈΠ±ΠΎ рСги­стри­ру­С­тС ΠΏΠΎΠ»ΡŒΒ­Π·ΠΎΒ­Π²Π°Β­Ρ‚Π΅Β­Π»Ρ, Π»ΠΈΠ±ΠΎ Π²Ρ‹Π²ΠΎΒ­Π΄ΠΈΒ­Ρ‚Π΅ ΠΎΡˆΠΈΠ±Β­ΠΊΡƒ. Π˜Β Ρƒ вас эта функ­ция встрС­ча­Ст­ся Π΅Ρ‰Ρ‘ в дСся­ти мСстах. Π€ΡƒΠ½ΠΊΒ­Ρ†ΠΈΠΈ ΠΊΠ°ΠΊ Π±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΏΠ»Π΅Ρ‚Π΅Π½Ρ‹.

Π’ΡƒΡ‚ ΠΏΡ€ΠΈΒ­Ρ…ΠΎΒ­Π΄ΠΈΡ‚ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡ‚-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΈΒ Π³ΠΎΠ²ΠΎΒ­Ρ€ΠΈΡ‚: Β«Π₯ΠΎΡ‡Ρƒ, Ρ‡Ρ‚ΠΎΒ­Π±Ρ‹ ΠΏΠΎΠ»ΡŒΒ­Π·ΠΎΒ­Π²Π°Β­Ρ‚Π΅Π»ΡŒ Ρ‚ΠΎΡ‡Β­Π½ΠΎ Π·Π½Π°Π», Π²Β Ρ‡Ρ‘ΠΌ ошиб­ка ΠΏΡ€ΠΈ Π²Π²ΠΎΒ­Π΄Π΅ элСк­трон­но­го адрС­са». Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π°ΠΌ Π½ΡƒΠΆΒ­Π½ΠΎ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΒ­Ρ†ΠΈΡŽ Π²Ρ‹Π΄Π°Β­Π²Π°Ρ‚ΡŒ Π½Π΅ про­сто true β€” false, Π°Β Π΅Ρ‰Ρ‘ ΠΈΒ ΠΊΠΎΠ΄ ошиб­ки: Π½Π°ΠΏΡ€ΠΈΒ­ΠΌΠ΅Ρ€, Ссли в адрС­сС ΠΎΠΏΠ΅Β­Ρ‡Π°Ρ‚Β­ΠΊΠ°, Ρ‚ΠΎ ΠΊΠΎΠ΄ 01, Ссли адрСс спа­мСр­ский β€” ΠΊΠΎΠ΄ 02 ΠΈΒ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π­Ρ‚ΠΎ нСслоТ­но Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π’Ρ‹ Π·Π°Π»Π΅Β­Π·Π°Β­Π΅Β­Ρ‚Π΅ Π²Π½ΡƒΡ‚Ρ€ΡŒ этой Ρ„ΡƒΠ½ΠΊΒ­Ρ†ΠΈΠΈ и мСня­С­тС Π΅Ρ‘ ΠΏΠΎΠ²Π΅Β­Π΄Π΅Β­Π½ΠΈΠ΅: Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½Π° вмС­сто true β€” false Π²Ρ‹Π΄Π°Β­Ρ‘Ρ‚ ΠΊΠΎΠ΄ ошиб­ки, а Ссли ошиб­ки Π½Π΅Ρ‚ β€” ΠΏΠΈΡˆΠ΅Ρ‚ «ОК».

И Ρ‚ΡƒΡ‚ ваш ΠΊΠΎΠ΄ лома­Ст­ся: всС Π΄Π΅ΡΡΡ‚ΡŒ мСст, ΠΊΠΎΡ‚ΠΎΒ­Ρ€Ρ‹Π΅ ΠΎΠΆΠΈΒ­Π΄Π°Β­Π»ΠΈ ΠΎΡ‚ ΠΏΡ€ΠΎΒ­Π²Π΅Β­Ρ€ΡΠ»ΡŒΒ­Ρ‰ΠΈΒ­ΠΊΠ° true ΠΈΠ»ΠΈ false, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ»ΡƒΒ­Ρ‡Π°Β­ΡŽΡ‚ «ОК» ΠΈΒ ΠΈΠ·-Π·Π° это­го Π»ΠΎΠΌΠ°ΡŽΡ‚ΡΡ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π°ΠΌΒ Π½ΡƒΠΆΠ½ΠΎ:

  • Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅Β­ΠΏΠΈΒ­ΡΡ‹Β­Π²Π°Ρ‚ΡŒ всС Ρ„ΡƒΠ½ΠΊΒ­Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΒ­Π±Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… ΠΏΠΎΠ½ΠΈΒ­ΠΌΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΡ‚Π²Π΅Β­Ρ‚Ρ‹ ΠΏΡ€ΠΎΒ­Π²Π΅Β­Ρ€ΡΠ»ΡŒΒ­Ρ‰ΠΈΒ­ΠΊΠ° адрСсов;
  • Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅Β­Π΄Π΅Β­Π»Π°Ρ‚ΡŒ сам ΠΏΡ€ΠΎΒ­Π²Π΅Β­Ρ€ΡΠ»ΡŒΒ­Ρ‰ΠΈΠΊ адрС­сов, Ρ‡Ρ‚ΠΎΒ­Π±Ρ‹ ΠΎΠ½ остал­ся сов­мС­сти­мым со ста­ры­ми мСста­ми, Π½ΠΎ Π²Β Π½ΡƒΠΆΒ­Π½ΠΎΠΌ Π²Π°ΠΌ мСстС ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π΅Ρ‰Ρ‘ Π²Ρ‹Π΄Π°Β­Π²Π°Π» ΠΊΠΎΠ΄Ρ‹ ошибок;
  • Π»ΠΈΠ±ΠΎ Π½Π°ΠΏΠΈΒ­ΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΒ­Π²Π΅Β­Ρ€ΡΠ»ΡŒΒ­Ρ‰ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΒ­Ρ€Ρ‹ΠΉ Π²Ρ‹Π΄Π°Β­Ρ‘Ρ‚ ΠΊΠΎΠ΄Ρ‹ оши­бок, Π°Β Π² ста­рых мСстах ΠΈΡΠΏΠΎΠ»ΡŒΒ­Π·ΠΎΒ­Π²Π°Ρ‚ΡŒ ста­рый ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΠ»ΡŒΡ‰ΠΈΠΊ.

Π—Π°Π΄Π°Β­Ρ‡Π°, ΠΊΠΎΠ½Π΅Ρ‡Β­Π½ΠΎ, Ρ€Π΅ΡˆΠ°Β­Π΅Β­ΠΌΠ°Ρ Π·Π° час-Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

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

Π­Ρ‚ΠΎ назы­ва­Ст­ся спагСтти-ΠΊΠΎΠ΄, и для Π±ΠΎΡ€ΡŒΒ­Π±Ρ‹ с ним ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΏΡ€ΠΈΒ­Π΄ΡƒΒ­ΠΌΠ°Β­Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Основ­ная Π·Π°Π΄Π°Β­Ρ‡Π° ООП β€” ΡΠ΄Π΅Β­Π»Π°Ρ‚ΡŒ слоТ­ный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΒ­Ρ‰Π΅. Для это­го ΠΏΡ€ΠΎΒ­Π³Ρ€Π°ΠΌΒ­ΠΌΡƒ Ρ€Π°Π·Β­Π±ΠΈΒ­Π²Π°Β­ΡŽΡ‚ Π½Π° нСза­ви­си­мыС Π±Π»ΠΎΒ­ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΒ­Ρ€Ρ‹Π΅ ΠΌΡ‹ Π½Π°Π·Ρ‹Β­Π²Π°Β­Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

ΠžΠ±ΡŠΒ­Π΅ΠΊΡ‚ β€” это Π½Π΅ какая-Ρ‚ΠΎ кос­ми­чС­ская ΡΡƒΡ‰Β­Π½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ всС­го лишь Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Β­Π½Ρ‹Ρ… ΠΈΒ Ρ„ΡƒΠ½ΠΊΒ­Ρ†ΠΈΠΉ β€” Ρ‚Π°ΠΊΠΈΡ… ΠΆΠ΅, ΠΊΠ°ΠΊ Π²Β Ρ‚Ρ€Π°Β­Π΄ΠΈΒ­Ρ†ΠΈΒ­ΠΎΠ½Β­Π½ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΒ­Ρ†ΠΈΒ­ΠΎΒ­Π½Π°Π»ΡŒΒ­Π½ΠΎΠΌ ΠΏΡ€ΠΎΒ­Π³Ρ€Π°ΠΌΒ­ΠΌΠΈΒ­Ρ€ΠΎΒ­Π²Π°Β­Π½ΠΈΠΈ. МоТ­но ΠΏΡ€Π΅Π΄Β­ΡΡ‚Π°Β­Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ про­сто взя­ли кусок ΠΏΡ€ΠΎΒ­Π³Ρ€Π°ΠΌΒ­ΠΌΡ‹ ΠΈΒ ΠΏΠΎΠ»ΠΎΒ­ΠΆΠΈΒ­Π»ΠΈ Π΅Π³ΠΎ Π²Β ΠΊΠΎΡ€ΠΎΠ±Β­ΠΊΡƒ ΠΈΒ Π·Π°ΠΊΡ€Ρ‹Β­Π»ΠΈ ΠΊΡ€Ρ‹ΡˆΒ­ΠΊΡƒ. Π’ΠΎΡ‚ эта ΠΊΠΎΡ€ΠΎΠ±Β­ΠΊΠ° ΡΒ ΠΊΡ€Ρ‹ΡˆΒ­ΠΊΠ°Β­ΠΌΠΈ β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

ΠŸΡ€ΠΎΒ­Π³Ρ€Π°ΠΌΒ­ΠΌΠΈΒ­ΡΡ‚Ρ‹ Π΄ΠΎΠ³ΠΎΒ­Π²ΠΎΒ­Ρ€ΠΈΒ­Π»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Β­Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Β­Ρ€ΠΈ ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Π° Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Π·Ρ‹Β­Π²Π°Ρ‚ΡŒΒ­ΡΡ свой­ства­ми, Π°Β Ρ„ΡƒΠ½ΠΊΒ­Ρ†ΠΈΠΈ β€” ΠΌΠ΅Ρ‚ΠΎΒ­Π΄Π°Β­ΠΌΠΈ. Но это про­сто сло­ва, ΠΏΠΎ сути это Ρ‚Π΅ ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Β­ΠΌΠ΅Π½Β­Π½Ρ‹Π΅ ΠΈΒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠžΠ±ΡŠΒ­Π΅ΠΊΡ‚ ΠΌΠΎΠΆΒ­Π½ΠΎ ΠΏΡ€Π΅Π΄Β­ΡΡ‚Π°Β­Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ нСза­ви­си­мый элСк­тро­при­бор у вас Π½Π° ΠΊΡƒΡ…Π½Π΅. Π§Π°ΠΉΒ­Π½ΠΈΠΊ кипя­тит Π²ΠΎΠ΄Ρƒ, ΠΏΠ»ΠΈΒ­Ρ‚Π° Π³Ρ€Π΅Β­Π΅Ρ‚, Π±Π»Π΅Π½Β­Π΄Π΅Ρ€ Π²Π·Π±ΠΈΒ­Π²Π°Β­Π΅Ρ‚, мясо­руб­ка Π΄Π΅Π»Π°Β­Π΅Ρ‚ Ρ„Π°Ρ€Ρˆ. Π’Π½ΡƒΡ‚Β­Ρ€ΠΈ ΠΊΠ°ΠΆΒ­Π΄ΠΎΒ­Π³ΠΎ устрой­ства ΠΊΡƒΡ‡Π° всС­го: ΠΌΠΎΡ‚ΠΎΒ­Ρ€Ρ‹, ΠΊΠΎΠ½Β­Ρ‚Ρ€ΠΎΠ»Β­Π»Π΅Β­Ρ€Ρ‹, ΠΊΠ½ΠΎΠΏΒ­ΠΊΠΈ, ΠΏΡ€ΡƒΒ­ΠΆΠΈΒ­Π½Ρ‹, ΠΏΡ€Π΅Π΄ΠΎΒ­Ρ…Ρ€Π°Β­Π½ΠΈΒ­Ρ‚Π΅Β­Π»ΠΈ β€” Π½ΠΎ Π²Ρ‹ ΠΎΒ Π½ΠΈΡ… Π½Π΅ Π΄ΡƒΠΌΠ°Β­Π΅Β­Ρ‚Π΅. Π’Ρ‹ Π½Π°ΠΆΠΈΒ­ΠΌΠ°Β­Π΅Β­Ρ‚Π΅ ΠΊΠ½ΠΎΠΏΒ­ΠΊΠΈ Π½Π° ΠΏΠ°Π½Π΅Β­Π»ΠΈ ΠΊΠ°ΠΆΒ­Π΄ΠΎΒ­Π³ΠΎ ΠΏΡ€ΠΈΒ­Π±ΠΎΒ­Ρ€Π°, ΠΈΒ ΠΎΠ½ Π΄Π΅Π»Π°Β­Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ Π½Π΅Π³ΠΎ оТи­да­Ст­ся. Π˜Β Π±Π»Π°Β­Π³ΠΎΒ­Π΄Π°Β­Ρ€Ρ сов­мСст­ной Ρ€Π°Π±ΠΎΒ­Ρ‚Π΅ этих ΠΏΡ€ΠΈΒ­Π±ΠΎΒ­Ρ€ΠΎΠ² у вас полу­ча­Ст­ся уТин.

ΠžΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Ρ‹ Ρ…Π°Ρ€Π°ΠΊΒ­Ρ‚Π΅Β­Ρ€ΠΈΒ­Π·ΡƒΒ­ΡŽΡ‚Β­ΡΡ Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΒ­ΠΌΡ сло­ва­ми: инкап­су­ля­ция, абстрак­ция, наслС­до­ва­ниС ΠΈΒ ΠΏΠΎΠ»ΠΈΒ­ΠΌΠΎΡ€Β­Ρ„ΠΈΠ·ΠΌ. Если интС­рСс­но, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅, ΠΏΡ€ΠΈΒ­Π³Π»Π°Β­ΡˆΠ°Β­Π΅ΠΌ Π²Β ΠΊΠ°Ρ‚:

Π˜Π½ΠΊΠ°ΠΏΒ­ΡΡƒΒ­Π»ΡΒ­Ρ†ΠΈΡ β€” ΠΎΠ±ΡŠΒ­Π΅ΠΊΡ‚ нСза­ви­сим: ΠΊΠ°ΠΆΒ­Π΄Ρ‹ΠΉ ΠΎΠ±ΡŠΒ­Π΅ΠΊΡ‚ устро­Сн Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΒ­Π½Ρ‹Π΅ для Π½Π΅Π³ΠΎ Π΄Π°Π½Β­Π½Ρ‹Π΅ ΠΆΠΈΠ²ΡƒΡ‚ Π²Π½ΡƒΡ‚Β­Ρ€ΠΈ это­го ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Π°, Π°Β Π½Π΅ Π³Π΄Π΅-Ρ‚ΠΎ сна­ру­Ти Π²Β ΠΏΡ€ΠΎΒ­Π³Ρ€Π°ΠΌΒ­ΠΌΠ΅. Напри­мСр, Ссли у мСня Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΒ­Π΅ΠΊΡ‚ Β«ΠŸΠΎΠ»ΡŒΒ­Π·ΠΎΒ­Π²Π°Β­Ρ‚Π΅Π»ΡŒΒ», Ρ‚ΠΎ у мСня Π²Β Π½Ρ‘ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ всС Π΄Π°Π½Β­Π½Ρ‹Π΅ ΠΎΒ ΠΏΠΎΠ»ΡŒΒ­Π·ΠΎΒ­Π²Π°Β­Ρ‚Π΅Β­Π»Π΅: и имя, и адрСс, и всё ΠΎΡΡ‚Π°Π»ΡŒΒ­Π½ΠΎΠ΅. И в Π½Ρ‘ΠΌ ΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΌΠ΅Ρ‚ΠΎΒ­Π΄Ρ‹ Β«ΠŸΡ€ΠΎΒ­Π²Π΅Β­Ρ€ΠΈΡ‚ΡŒ адрСс» ΠΈΠ»ΠΈ Β«ΠŸΠΎΠ΄Β­ΠΏΠΈΒ­ΡΠ°Ρ‚ΡŒ Π½Π° рассылку».

Абстрак­ция β€” ΡƒΒ ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Π° Π΅ΡΡ‚ΡŒ «интСр­фСйс»: ΡƒΒ ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Π° Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΒ­Π΄Ρ‹ и свой­ства, ΠΊΒ ΠΊΠΎΡ‚ΠΎΒ­Ρ€Ρ‹ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Β­Ρ‚ΠΈΡ‚ΡŒΒ­ΡΡ ΠΈΠ·Π²Π½Π΅ это­го ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Π°. Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΒ­ΠΊΡƒ Π½Π° Π±Π»Π΅Π½Β­Π΄Π΅Β­Ρ€Π΅. Π£Β Π±Π»Π΅Π½Β­Π΄Π΅Β­Ρ€Π° Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΒ­Π³ΠΎ всС­го Π²Π½ΡƒΡ‚Β­Ρ€ΠΈ, Ρ‡Ρ‚ΠΎ застав­ля­Ст Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΒ­Ρ‚Π°Ρ‚ΡŒ, Π½ΠΎ Π½Π° Π³Π»Π°Π²Β­Π½ΠΎΠΉ ΠΏΠ°Π½Π΅Β­Π»ΠΈ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΒ­ΠΊΠΎ ΠΊΠ½ΠΎΠΏΒ­ΠΊΠ°. Π’ΠΎΡ‚ эта ΠΊΠ½ΠΎΠΏΒ­ΠΊΠ° ΠΈΒ Π΅ΡΡ‚ΡŒ абстракт­ный интСрфСйс.

Π’ ΠΏΡ€ΠΎΒ­Π³Ρ€Π°ΠΌΒ­ΠΌΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Β­Π·Π°Ρ‚ΡŒ: Β«Π£Π΄Π°Β­Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΒ­Π·ΠΎΒ­Π²Π°Β­Ρ‚Π΅Β­Π»ΡΒ». На язы­кС ООП это Π±ΡƒΠ΄Π΅Ρ‚ Β«ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ.ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ()Β» β€” Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ обра­ща­См­ся ΠΊΒ ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Ρƒ Β«ΠΏΠΎΠ»ΡŒΒ­Π·ΠΎΒ­Π²Π°Β­Ρ‚Π΅Π»ΡŒΒ» ΠΈΒ Π²Ρ‹Π·Ρ‹Β­Π²Π°Β­Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«ΡƒΠ΄Π°Β­Π»ΠΈΡ‚ΡŒΒ». ΠšΠ°ΠΉΡ„ Π²Β Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ Ρ‚Π°ΠΊ Π²Π°ΠΆΒ­Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Β­Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΒ­ΠΈΡΒ­Ρ…ΠΎΒ­Π΄ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Β­Π»Π΅Β­Π½ΠΈΠ΅: ООП поз­во­ля­Ст Π½Π°ΠΌ Π½Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎΠ± этом Π²Β ΠΌΠΎΠΌΠ΅Π½Ρ‚ обращСния.

Напри­мСр, Π½Π°Π΄ ΠΌΠ°Π³Π°Β­Π·ΠΈΒ­Π½ΠΎΠΌ Ρ€Π°Π±ΠΎΒ­Ρ‚Π°Β­ΡŽΡ‚ Π΄Π²Π° про­грам­ми­ста: ΠΎΠ΄ΠΈΠ½ ΠΏΠΈΡˆΠ΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π·Π°ΠΊΠ°Β­Π·Π°, Π°Β Π²Ρ‚ΠΎΒ­Ρ€ΠΎΠΉ β€” ΠΌΠΎΠ΄ΡƒΠ»ΡŒ достав­ки. Π£Β ΠΏΠ΅Ρ€Β­Π²ΠΎΒ­Π³ΠΎ Π²Β ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Π΅ Β«Π·Π°ΠΊΠ°Π·Β» Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«ΠΎΡ‚ΠΌΠ΅Β­Π½ΠΈΡ‚ΡŒΒ». Π˜Β Π²ΠΎΡ‚ Π²Ρ‚ΠΎΒ­Ρ€ΠΎΒ­ΠΌΡƒ Π½ΡƒΠΆΒ­Π½ΠΎ ΠΈΠ·-Π·Π° достав­ки ΠΎΡ‚ΠΌΠ΅Β­Π½ΠΈΡ‚ΡŒ Π·Π°ΠΊΠ°Π·. И он спо­кой­но ΠΏΠΈΡˆΠ΅Ρ‚: Β«Π·Π°ΠΊΠ°Π·.ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ()Β». Π•ΠΌΡƒ Π½Π΅Π²Π°ΠΆΒ­Π½ΠΎ, ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΒ­Π³ΠΎΠΉ про­грам­мист Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Β­Π»ΠΈΒ­Π·ΠΎΒ­Π²Ρ‹Β­Π²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Β­Π½Ρƒ: ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ½ ΠΎΡ‚ΠΏΡ€Π°Β­Π²ΠΈΡ‚ пись­ма, Ρ‡Ρ‚ΠΎ Π·Π°ΠΏΠΈΒ­ΡˆΠ΅Ρ‚ Π²Β Π±Π°Π·Ρƒ Π΄Π°Π½Β­Π½Ρ‹Ρ…, ΠΊΠ°ΠΊΠΈΠ΅ Π²Ρ‹Π²Π΅Β­Π΄Π΅Ρ‚ прСдупрСТдСния.

НаслС­до­ва­ниС β€” ΡΠΏΠΎΒ­ΡΠΎΠ±Β­Π½ΠΎΡΡ‚ΡŒ ΠΊΒ ΠΊΠΎΠΏΠΈΒ­Ρ€ΠΎΒ­Π²Π°Β­Π½ΠΈΡŽ. ООП поз­во­ля­Ст ΡΠΎΠ·Π΄Π°Β­Π²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΒ­Π³ΠΎ ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚ΠΎΠ² ΠΏΠΎ ΠΎΠ±Ρ€Π°Β­Π·Ρƒ и подо­бию Π΄Ρ€ΡƒΒ­Π³ΠΎΒ­Π³ΠΎ ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Π°. Π­Ρ‚ΠΎ поз­во­ля­Ст Π½Π΅ ΠΊΠΎΠΏΠΈΒ­ΠΏΠ°Β­ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΠΎ двС­сти Ρ€Π°Π·, Π°Β ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π½ΠΎΡ€Β­ΠΌΠ°Π»ΡŒΒ­Π½ΠΎ Π½Π°ΠΏΠΈΒ­ΡΠ°Ρ‚ΡŒ ΠΈΒ ΠΏΠΎΡ‚ΠΎΠΌ ΠΌΠ½ΠΎΒ­Π³ΠΎ Ρ€Π°Π· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Напри­мСр, у вас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΊΠΈΠΉ ΠΈΠ΄Π΅Β­Π°Π»ΡŒΒ­Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΒ­Π΅ΠΊΡ‚ Β«ΠŸΠΎΠ»ΡŒΒ­Π·ΠΎΒ­Π²Π°Β­Ρ‚Π΅Π»ΡŒΒ»: Π²Β Π½Ρ‘ΠΌ Π²Ρ‹ про­пи­сы­ва­С­тС всё, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΒ­ΠΈΡΒ­Ρ…ΠΎΒ­Π΄ΠΈΡ‚ΡŒ ΡΒ ΠΏΠΎΠ»ΡŒΒ­Π·ΠΎΒ­Π²Π°Β­Ρ‚Π΅Β­Π»Π΅ΠΌ. У вас ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ свой­ства: имя, воз­раст, адрСс, Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Ρ€Β­Ρ‚Ρ‹. Π˜Β ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΒ­Π΄Ρ‹ Β«Π”Π°Ρ‚ΡŒ скид­ку», Β«ΠŸΡ€ΠΎΒ­Π²Π΅Β­Ρ€ΠΈΡ‚ΡŒ Π·Π°ΠΊΠ°Π·Β», «Най­ти Π·Π°ΠΊΠ°Β­Π·Ρ‹Β», Β«ΠŸΠΎΠ·Π²ΠΎΒ­Π½ΠΈΡ‚ΡŒΒ».

На осно­вС это­го идС­аль­но­го ΠΏΠΎΠ»ΡŒΒ­Π·ΠΎΒ­Π²Π°Β­Ρ‚Π΅Β­Π»Ρ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Β­Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΒ­Π½ΠΎΒ­Π³ΠΎ Β«ΠŸΠΎΠΊΡƒΒ­ΠΏΠ°Β­Ρ‚Π΅Β­Π»Ρ Ива­на». Π£Β Π½Π΅Π³ΠΎ ΠΏΡ€ΠΈ созда­нии Π±ΡƒΠ΄ΡƒΡ‚ всС свой­ства ΠΈΒ ΠΌΠ΅Ρ‚ΠΎΒ­Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΒ­Ρ€Ρ‹Π΅ Π²Ρ‹ Π·Π°Π΄Π°Β­Π»ΠΈ ΡƒΒ ΠΈΠ΄Π΅Β­Π°Π»ΡŒΒ­Π½ΠΎΒ­Π³ΠΎ поку­па­тС­ля, плюс ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ свои, Ссли Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅.

Π˜Π΄Π΅Β­Π°Π»ΡŒΒ­Π½Ρ‹Π΅ ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Ρ‹ про­грам­ми­сты Π½Π°Π·Ρ‹Β­Π²Π°Β­ΡŽΡ‚ классами.

ΠŸΠΎΠ»ΠΈΒ­ΠΌΠΎΡ€Β­Ρ„ΠΈΠ·ΠΌ β€” Π΅Π΄ΠΈΒ­Π½Ρ‹ΠΉ язык общС­ния. Π’Β ΠžΠžΠŸ Π²Π°ΠΆΒ­Π½ΠΎ, Ρ‡Ρ‚ΠΎΒ­Π±Ρ‹ всС ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Ρ‹ ΠΎΠ±Ρ‰Π°Β­Π»ΠΈΡΡŒ Π΄Ρ€ΡƒΠ³ с дру­гом Π½Π° понят­ном ΠΈΠΌ язы­кС. И Ссли ΡƒΒ Ρ€Π°Π·Β­Π½Ρ‹Ρ… ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚ΠΎΠ² Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«Π£Π΄Π°Β­Π»ΠΈΡ‚ΡŒΒ», Ρ‚ΠΎ ΠΎΠ½ Π΄ΠΎΠ»Β­ΠΆΠ΅Π½ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Β­Π½ΠΎ это ΠΈΒ ΠΏΠΈΡΠ°Ρ‚ΡŒΒ­ΡΡ Π²Π΅Π·Β­Π΄Π΅ ΠΎΠ΄ΠΈΒ­Π½Π°Β­ΠΊΠΎΒ­Π²ΠΎ. НСль­зя, Ρ‡Ρ‚ΠΎΒ­Π±Ρ‹ ΡƒΒ ΠΎΠ΄Π½ΠΎΒ­Π³ΠΎ ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Π° это Π±Ρ‹Π»ΠΎ Β«Π£Π΄Π°Β­Π»ΠΈΡ‚ΡŒΒ», Π°Β Ρƒ Π΄Ρ€ΡƒΒ­Π³ΠΎΒ­Π³ΠΎ Β«Π‘Ρ‚Π΅Β­Ρ€Π΅Ρ‚ΡŒΒ».

ΠŸΡ€ΠΈ этом Π²Π½ΡƒΡ‚Β­Ρ€ΠΈ ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΒ­Π΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Β­Π»ΠΈΒ­Π·ΠΎΒ­Π²Π°Β­Π½Ρ‹ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Напри­мСр, ΡƒΠ΄Π°Β­Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€ β€” это Π²Ρ‹Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π΅Β­Π΄ΡƒΒ­ΠΏΡ€Π΅Β­ΠΆΠ΄Π΅Β­Π½ΠΈΠ΅, Π°Β ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠΌΠ΅Β­Ρ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€ Π²Β Π±Π°Π·Π΅ Π΄Π°Π½Β­Π½Ρ‹Ρ… ΠΊΠ°ΠΊ ΡƒΠ΄Π°Β­Π»Ρ‘Π½Β­Π½Ρ‹ΠΉ. ΠΒ ΡƒΠ΄Π°Β­Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΒ­Π·ΠΎΒ­Π²Π°Β­Ρ‚Π΅Β­Π»Ρ β€” это ΠΎΡ‚ΠΌΠ΅Β­Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠΊΡƒΠΏΒ­ΠΊΠΈ, ΠΎΡ‚ΠΏΠΈΒ­ΡΠ°Ρ‚ΡŒ ΠΎΡ‚ рас­сыл­ки ΠΈΒ Π·Π°Π°Ρ€Β­Ρ…ΠΈΒ­Π²ΠΈΒ­Ρ€ΠΎΒ­Π²Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΒ­Ρ€ΠΈΡŽ Π΅Π³ΠΎ ΠΏΠΎΠΊΡƒΒ­ΠΏΠΎΠΊ. Бобы­тия Ρ€Π°Π·Β­Π½Ρ‹Π΅, Π½ΠΎ для про­грам­ми­ста это Π½Π΅Π²Π°ΠΆΒ­Π½ΠΎ. Π£Β Π½Π΅Π³ΠΎ про­сто Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«Π£Π΄Π°Β­Π»ΠΈΡ‚ΡŒ()Β», ΠΈΒ ΠΎΠ½ Π΅ΠΌΡƒ довСряСт.

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

ΠŸΠ»ΡŽΡΡ‹ и минусы ООП

Π£ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ про­грам­ми­ро­ва­ния ΠΌΠ½ΠΎΒ­Π³ΠΎ плю­сов, ΠΈΒ ΠΈΠΌΠ΅Π½Β­Π½ΠΎ поэто­му этот ΠΏΠΎΠ΄Β­Ρ…ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΒ­Π·ΡƒΒ­Π΅Ρ‚ Π±ΠΎΠ»ΡŒΒ­ΡˆΠΈΠ½Β­ΡΡ‚Π²ΠΎ соврС­мСн­ных программистов.

  1. Π’ΠΈΠ·ΡƒΒ­Π°Π»ΡŒΒ­Π½ΠΎ ΠΊΠΎΠ΄ ста­но­вит­ся ΠΏΡ€ΠΎΒ­Ρ‰Π΅, ΠΈΒ Π΅Π³ΠΎ Π»Π΅Π³Β­Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ. Когда всё Ρ€Π°Π·Β­Π±ΠΈΒ­Ρ‚ΠΎ Π½Π° ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Ρ‹ ΠΈΒ Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ понят­ный Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Β­Π²ΠΈΠ», ΠΌΠΎΠΆΒ­Π½ΠΎ сра­зу ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π·Π° Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Β­Ρ‡Π°Β­Π΅Ρ‚ ΠΊΠ°ΠΆΒ­Π΄Ρ‹ΠΉ ΠΎΠ±ΡŠΒ­Π΅ΠΊΡ‚ ΠΈΒ ΠΈΠ· Ρ‡Π΅Π³ΠΎ ΠΎΠ½ состоит.
  2. МСнь­шС ΠΎΠ΄ΠΈΒ­Π½Π°Β­ΠΊΠΎΒ­Π²ΠΎΒ­Π³ΠΎ ΠΊΠΎΠ΄Π°. Если Π²Β ΠΎΠ±Ρ‹Ρ‡Β­Π½ΠΎΠΌ ΠΏΡ€ΠΎΒ­Π³Ρ€Π°ΠΌΒ­ΠΌΠΈΒ­Ρ€ΠΎΒ­Π²Π°Β­Π½ΠΈΠΈ ΠΎΠ΄Π½Π° функ­ция счи­та­Ст ΠΏΠΎΠ²Ρ‚ΠΎΒ­Ρ€ΡΒ­ΡŽΒ­Ρ‰ΠΈΒ­Π΅Β­ΡΡ сим­во­лы Π²Β ΠΎΠ΄Π½ΠΎΒ­ΠΌΠ΅Ρ€Β­Π½ΠΎΠΌ мас­си­вС, а дру­гая β€” Π²Β Π΄Π²ΡƒΒ­ΠΌΠ΅Ρ€Β­Π½ΠΎΠΌ, Ρ‚ΠΎ ΡƒΒ Π½ΠΈΡ… боль­шая Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ΄ΠΈΒ­Π½Π°Β­ΠΊΠΎΒ­Π²ΠΎΠΉ. Π’Β ΠžΠžΠŸ это Ρ€Π΅ΡˆΠ°Β­Π΅Ρ‚Β­ΡΡ наслСдованиСм.
  3. Π‘Π»ΠΎΠΆΒ­Π½Ρ‹Π΅ ΠΏΡ€ΠΎΒ­Π³Ρ€Π°ΠΌΒ­ΠΌΡ‹ ΠΏΠΈΡˆΡƒΡ‚Β­ΡΡ ΠΏΡ€ΠΎΒ­Ρ‰Π΅. ΠšΠ°ΠΆΒ­Π΄ΡƒΡŽ Π±ΠΎΠ»ΡŒΒ­ΡˆΡƒΡŽ ΠΏΡ€ΠΎΒ­Π³Ρ€Π°ΠΌΒ­ΠΌΡƒ ΠΌΠΎΠΆΒ­Π½ΠΎ Ρ€Π°Π·Β­Π»ΠΎΒ­ΠΆΠΈΡ‚ΡŒ Π½Π° нСсколь­ко Π±Π»ΠΎΒ­ΠΊΠΎΠ², ΡΠ΄Π΅Β­Π»Π°Ρ‚ΡŒ ΠΈΠΌ мини­маль­ноС Π½Π°ΠΏΠΎΠ»Β­Π½Π΅Β­Π½ΠΈΠ΅, Π°Β ΠΏΠΎΡ‚ΠΎΠΌ Ρ€Π°Π· Π·Π° Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Β­Π½ΠΎ Π½Π°ΠΏΠΎΠ»Β­Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΒ­Π΄Ρ‹ΠΉΒ Π±Π»ΠΎΠΊ.
  4. УвС­ли­чи­ва­Ст­ся ΡΠΊΠΎΒ­Ρ€ΠΎΡΡ‚ΡŒ напи­са­ния. На стар­тС ΠΌΠΎΠΆΒ­Π½ΠΎ быст­ро ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΡƒΠΆΒ­Π½Ρ‹Π΅ ΠΊΠΎΠΌΒ­ΠΏΠΎΒ­Π½Π΅Π½Β­Ρ‚Ρ‹ Π²Π½ΡƒΡ‚Β­Ρ€ΠΈ ΠΏΡ€ΠΎΒ­Π³Ρ€Π°ΠΌΒ­ΠΌΡ‹, Ρ‡Ρ‚ΠΎΒ­Π±Ρ‹ ΠΏΠΎΠ»ΡƒΒ­Ρ‡ΠΈΡ‚ΡŒ мини­маль­но Ρ€Π°Π±ΠΎΒ­Ρ‚Π°Β­ΡŽΒ­Ρ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎ минусы:

  1. Π‘Π»ΠΎΠΆΒ­Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈΒ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΒ­Ρ‚Π°Ρ‚ΡŒ. ΠŸΠΎΠ΄Β­Ρ…ΠΎΠ΄ ООП Π½Π°ΠΌΠ½ΠΎΒ­Π³ΠΎ слоТ­нСС ΠΎΠ±Ρ‹Ρ‡Β­Π½ΠΎΒ­Π³ΠΎ ΠΏΡ€ΠΎΒ­Ρ†Π΅Β­Π΄ΡƒΡ€Β­Π½ΠΎΒ­Π³ΠΎ про­грам­ми­ро­ва­ния β€” Π½ΡƒΠΆΒ­Π½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΒ­Π³ΠΎ Ρ‚Π΅ΠΎΒ­Ρ€ΠΈΠΈ, ΠΏΡ€Π΅ΠΆΒ­Π΄Π΅ Ρ‡Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ напи­са­на Ρ…ΠΎΡ‚ΡŒ ΠΎΠ΄Π½Π° строч­ка кода.
  2. Π’Ρ€Π΅Β­Π±ΡƒΒ­Π΅Ρ‚ боль­шС памя­ти. ΠžΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Ρ‹ в ООП состо­ят ΠΈΠ· Π΄Π°Π½Β­Π½Ρ‹Ρ…, интСр­фСй­сов, ΠΌΠ΅Ρ‚ΠΎΒ­Π΄ΠΎΠ² ΠΈΒ ΠΌΠ½ΠΎΒ­Π³ΠΎ Π΄Ρ€ΡƒΒ­Π³ΠΎΒ­Π³ΠΎ, а это Π·Π°Π½ΠΈΒ­ΠΌΠ°Β­Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΒ­Π³ΠΎ боль­шС памя­ти, Ρ‡Π΅ΠΌ про­стая пСрСмСнная.
  3. Ино­гда ΠΏΡ€ΠΎΒ­ΠΈΠ·Β­Π²ΠΎΒ­Π΄ΠΈΒ­Ρ‚Π΅Π»ΡŒΒ­Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΠΆΠ΅. Из-Π·Π° осо­бСн­но­стСй ΠΏΠΎΠ΄Β­Ρ…ΠΎΒ­Π΄Π° Ρ‡Π°ΡΡ‚ΡŒ Π²Π΅Ρ‰Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Β­Π»ΠΈΒ­Π·ΠΎΒ­Π²Π°Β­Π½Π° слоТ­нСС, Ρ‡Π΅ΠΌ ΠΌΠΎΠ³Β­Π»Π° Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΒ­ΠΌΡƒ Π±Ρ‹Π²Π°Β­Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅, Ρ‡Ρ‚ΠΎ ООП-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΒ­Ρ‚Π°Β­Π΅Ρ‚ ΠΌΠ΅Π΄Β­Π»Π΅Π½Β­Π½Π΅Π΅, Ρ‡Π΅ΠΌ про­цС­дур­ная (хотя с соврС­мСн­ны­ми мощ­но­стя­ми про­цСс­со­ров это ΠΌΠ°Π»ΠΎ ΠΊΠΎΠ³ΠΎ Π²ΠΎΠ»Π½ΡƒΠ΅Ρ‚).

Π§Ρ‚ΠΎ дальшС

Π’ΠΏΠ΅Β­Ρ€Π΅Β­Π΄ΠΈ нас ΠΆΠ΄Ρ‘Ρ‚ Ρ€Π°Π·Β­Π³ΠΎΒ­Π²ΠΎΡ€ о клас­сах, ΠΎΠ±ΡŠΒ­Π΅ΠΊΒ­Ρ‚Π°Ρ… и всём ΠΎΡΡ‚Π°Π»ΡŒΒ­Π½ΠΎΠΌ Π²Π°ΠΆΒ­Π½ΠΎΠΌ в ООП. ΠšΡ€Π΅Β­ΠΏΠΈΒ­Ρ‚Π΅ΡΡŒ, Π±ΡƒΠ΄Π΅Ρ‚ интСрСсно!

ООП β€” Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅? Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄

ООП Ρ‡Π°Ρ‰Π΅ всСго Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Β«ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Β». Π­Ρ‚ΠΎ самая модная ΠΈ эффСктивная ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° составлСния соврСмСнных, Π³ΠΈΠ±ΠΊΠΈΡ… ΠΈ понятных ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Богласно ΠΌΠΎΠ΄Π΅Π»ΠΈ ООП, ВсСлСнная прСдставляСт ΠΈΠ· сСбя Π½Π°Π±ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ свойствами ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ дСйствия.

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




Π’Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ слово ООП, Π΅Π³ΠΎ объяснСниС простыми словами, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄, происхоТдСниС ΠΈ смысл.
ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ ссылкой Β«Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ООП?Β» с Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ:

И Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° самый интСрСсный ΠΏΠ°Π±Π»ΠΈΠΊ Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅!

Β 

ООП Ρ‡Π°Ρ‰Π΅ всСго Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Β«ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Β». Π­Ρ‚ΠΎ самая модная ΠΈ эффСктивная ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° составлСния соврСмСнных, Π³ΠΈΠ±ΠΊΠΈΡ… ΠΈ понятных ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Богласно ΠΌΠΎΠ΄Π΅Π»ΠΈ ООП, ВсСлСнная прСдставляСт ΠΈΠ· сСбя Π½Π°Π±ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ свойствами ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ дСйствия.

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

ООП в JavaScript | Frontend Stuff

Когда Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ — подразумСваСтся ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ.

Π’ ООП ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прСдставляСт собой Π±Π»ΠΎΠΊ, содСрТащий ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (состояниС / Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹) ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹).

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово

this

  • this — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, свойством ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся функция;
  • this — Π΄Π°Π΅Ρ‚ функциям доступ ΠΊ своСму ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΈ Π΅Π³ΠΎ свойствам;
  • this — ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²;
  • this — ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΊΡ‚ΠΎ мСня Π²Ρ‹Π·Π²Π°Π»?; Ρ‚. Π΅. Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ находится слСва ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ. НапримСр, window.a();
  • this — ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Ρ‚. Π΅. Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, Π³Π΄Π΅ ΠΎΠ½ Π±Ρ‹Π» написан, Π²Π°ΠΆΠ½ΠΎ, Π³Π΄Π΅ ΠΎΠ½ Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½.
const obj = {
  name: 'Alex',
  sing() {
    console.log('a this ', this);
    var anotherFunc = function() {
      console.log('b this ', this);
    }
    anotherFunc();
  }
};

obj.sing();


var b = {
  name: 'jay',
  say() {
    console.log('this is ', this);
  }
}
b.say()


var c = {
  name: 'jay',
  say() {
    return function () {
      console.log('this is ', this);
    }
  }
}
c.say()()


var d = {
  name: 'jay',
  say() {
    
    return () => console.log('this is ', this);
  }
}
d.say()()

Π‘Ρ‚Ρ€Π΅Π»ΠΎΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ this с лСксичСской ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ дСйствия.

const obj = {
  name: 'Alex',
  sing() {
    console.log('a this ', this);
    var anotherFunc = () => {
      console. log('b this ', this);
    }
    anotherFunc();
  }
};

obj.sing();


ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ

  • ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ (prototype) — это экзСмпляр Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
  • __proto__ являСтся ссылкой Π½Π° свойство ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
const obj = {};
obj.__proto__ === Object.prototype 
  • Бвойство prototype ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ функциям, Π² частности, функциям конструктора. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Object создаСт ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.
  • Бвойства proto ΠΈ prototype ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для создания Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ наслСдования свойств ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, начиная с Object ΠΈ Primitive Types.
  • Object.create() ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с Π΅Π³ΠΎ свойством proto, связанным со свойством prototype ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Object. create().
  • Object — это базовая функция (конструктор). ΠšΠΎΡ€Π½Π΅ΠΌ всСго Π² JavaScript являСтся Object, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° самом Π΄Π΅Π»Π΅ являСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

Object ΠΈΠΌΠ΅Π΅Ρ‚ свойство prototype, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ для всСх Π²Π΅Ρ‰Π΅ΠΉ Π² JavaScript, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ JavaScript.

ES6 ΠšΠ»Π°ΡΡΡ‹

  • ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово class Π² JS — синтаксичСский сахар. Под ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ½ всё Π΅Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ½ΠΎΠ΅ наслСдованиС (prototypal inheritance).
  • ЭкзСмпляры класса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом new.
  • ΠœΠ΅Ρ‚ΠΎΠ΄ constructor ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания экзСмпляра state (Π΄Π°Π½Π½Ρ‹Ρ…) Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. State ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ экзСмпляра.
  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² конструктор, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ссылку Π½Π° мСсто Π² памяти Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΌ экзСмплярС класса. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ большС памяти, Ρ‡Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. Π’ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² качСствС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса, экзСмпляры класса ΠΌΠΎΠ³ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ².
  • ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ½ΠΎΠ΅ наслСдованиС (prototypal inheritance) ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΡƒΡŽ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ памяти, Ρ‡Π΅ΠΌ классичСскоС наслСдованиС, благодаря Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ раздСляСт ссылки памяти своих свойств ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° с Ρ‚Π΅ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΎΡ‚ Π½Π΅Π³ΠΎ. Π’ классичСском наслСдовании, экзСмпляры класса ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ ссылки Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ унаслСдованного свойства.

Object.create() vs. Classes

  • Оба Object.create() ΠΈ class ΡΠ²Π»ΡΡŽΡ‚ΡΡ способами создания Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ².
  • НСкоторыС люди ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова constructor, class ΠΈ this, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ ΠΈΠ·-Π·Π° this.
  • Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова constructor, class ΠΈ this, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠ·-Π·Π° Π΅Π³ΠΎ сходства с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками с ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

Private vs. Public vs. Protected

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ классы, идСя private ΠΈ public ΠΏΠΎΠ»Π΅ΠΉ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΠΆΠ½Π°. Π’ JavaScript этого Π½Π΅Ρ‚. Π Π°Π½Π΅Π΅, Ссли Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅ private, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ нСльзя ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈΠ· класса, ΠΌΡ‹ добавляли ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ _ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ программисты Π·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ это private ΠΌΠ΅Ρ‚ΠΎΠ΄. Но, ΠΊ соТалСнию, ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π½Π° самом Π΄Π΅Π»Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚.

Π’ JavaScript Π΅ΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ECMAScript, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для объявлСний ΠΏΠΎΠ»Π΅ΠΉ класса.

Π­Ρ‚ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π½Π°ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Encapsulation (ΠΈΠ»ΠΈ скрытиС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ). Они ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ компилятору, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ полю ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ.

Private — Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ класс Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ полю ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ.
Protected — Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ класс ΠΈ подклассы этого класса Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ полю ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ.
Public — любой класс ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠΎΠ»Π΅ ΠΈΠ»ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄.

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² Javascript Ρ‚Π°ΠΊΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ ΠΏΠΎΠΊΠ° Π½Π΅Ρ‚, для ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TypeScript.

4 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ООП

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

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

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

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ с использованиСм замыкания
const createCounter = () => {
  
  
  let count = 0;

  return ({
    
    
    
    click: () => count += 1,
    getCount: () => count. toLocaleString()
  });
};

const counter = createCounter();

counter.click();
counter.click();
counter.click();

console.log(counter.getCount()); 

Абстракция

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

Всё ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС — это абстракция, ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ всю Ρ‚ΡΠΆΠ΅Π»ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ Π±Π΅Π·Π΄ΡƒΠΌΠ½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ.

МногиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ процСссы ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ снова ΠΈ снова. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π½Π° этапС Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΌΡ‹ ΡƒΠ΄Π°Π»ΠΈΠΌ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, записывая ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, класс ΠΈ Ρ‚. Π”.), присваивая Π΅ΠΌΡƒ имя (ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€) ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΅Π³ΠΎ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·, сколько Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ — это процСсс абстракции. УспСшная абстракция ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся Π½Π°Π±ΠΎΡ€ нСзависимо ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

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

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (ООП). Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ любоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ прСдоставлСнными ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

Π‘Π°ΠΌΠΎ слово ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌ. БущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π°Π½ΠΈΠΉ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Π½ΠΎ идСя Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² способности Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈ ΠΏΡ€ΠΈ этом ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎ-своСму.

Π§Ρ‚ΠΎΠ±Ρ‹ это ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ наслСдованиС.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Coder, пСрСопрСдСляСт ΠΌΠ΅Ρ‚ΠΎΠ΄ say, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹ΠΉ ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Human, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ строку соотвСтствСнно. Π’ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Men, вмСсто пСрСопрСдСлСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° say, наслСдуСт Π΅Π³ΠΎ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π» Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ строку.

class Human {
  constructor(name) {
    this.name = name;
  }

  say() {
    return `Hello, my name is ${this.name}, I like travelling`;
  }
}

class Men extends Human {
  constructor(name) {
    super(name)
  }
  
}

class Coder extends Human {
  constructor(name) {
    super(name)
  }

  say() {
    
    return `Hello, my name is ${this.name}, I like coding`;
  }
}

const alex = new Men('Alex');
const leo = new Coder('Leo');

alex.say() 
leo.say() 

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

НаслСдованиС — это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ базирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ class Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ (наслСдованиС Π½Π° основС ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ°) ΠΈΠ»ΠΈ class (наслСдованиС Π½Π° основС класса). ΠœΡ‹ ΠΈΠ·Π±Π΅Π³Π°Π΅ΠΌ нСобходимости ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄, Π° Ρ‚Π°ΠΊΠΆΠ΅ экономим пространство памяти, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

class Human {
  constructor(name) {
    this.name = name;
  }

  sayMyName() {
    return 'Hello, I am ' + this.name;
  }
}

class Men extends Human {
  constructor(name) {
    super(name)
  }
}
class Coder extends Human {
  constructor(name) {
    super(name)
  }
}

const alex = new Men('Alex');
const leo = new Coder('Leo');

alex. sayMyName() 
leo.sayMyName() 
Prototypal Inheritance

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

Classical Inheritance

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° основС классов, ΠΈΠ»ΠΈ ΠΆΠ΅, ориСнтация Π½Π° классы, — это ΡΡ‚ΠΈΠ»ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (ООП), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ наслСдованиС происходит Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ классов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², вмСсто наслСдования, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

Tight Coupling (сильная ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ) относится ΠΊ Π²ΠΎΠ»Π½ΠΎΠ²Ρ‹ΠΌ эффСктам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ с подклассами (Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ классы), ΠΊΠΎΠ³Π΄Π° вносится ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² супСркласс (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс).

  • Tight Coupling ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π½Π΅ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹ΠΌ эффСктам для подклассов.
  • Tight Coupling ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄Π΅.
  • Π₯рупкая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ систСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы (супСрклассы) ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Β«Ρ…Ρ€ΡƒΠΏΠΊΠΈΠΌΠΈΒ», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, казалось Π±Ρ‹, бСзопасныС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классом, ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ сбоям Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов.
  • ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π³ΠΎΡ€ΠΈΠ»Π»Ρ‹ с Π±Π°Π½Π°Π½ΠΎΠΌ относится ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ наслСдования слишком ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ супСркласса. Β«Π‘ΡƒΠ΄Ρ‚ΠΎ Ρ‚Π΅Π±Π΅ Π½ΡƒΠΆΠ΅Π½ Π±Π°Π½Π°Π½, Π° Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΡˆΡŒ Π±Π°Π½Π°Π½ Π² ΠΏΡ€ΠΈΠ΄Π°Ρ‡Ρƒ с Π³ΠΎΡ€ΠΈΠ»Π»ΠΎΠΉ Π² дТунглях».
  • ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ наслСдованиС Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ прСвосходного прСдвидСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ наслСдования.

осваивай Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ языки прямо сСйчас

ООП ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ – ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ всСх ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’Π°ΠΊ Π»ΠΈ это Π½Π° самом Π΄Π΅Π»Π΅?

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ людям приходится Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ слоТныС абстракции ΠΈ бСспорядочныС Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΎΠ±Ρ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½Ρ‹Ρ… измСнСниям. Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π΄Ρ€Π°Π³ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ врСмя ΠΈ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» тратится Π½Π° обдумывания «абстракций» ΠΈ «шаблонов проСктирования» вмСсто Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ Ρ†Π΅Π»ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ софта состоит Π² написании Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π—Π°Π±Π°Π³ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΈ Π½Π΅Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ. А Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ надёТности ΠΊΠΎΠ΄Π° – простота. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, главная Π·Π°Π΄Π°Ρ‡Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² – сниТСниС слоТности ΠΊΠΎΠ΄Π°.

Β«ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ…Β»

– ЭдсгСр Π’ΠΈΠ±Π΅ ДСйкстра, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ структурного программирования.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ создавалось с ΠΎΠ΄Π½ΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ: ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, Π½Π΅ сущСствуСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° прСвосходства ООП Π½Π°Π΄ чистым ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

Π“ΠΎΡ€ΡŒΠΊΠ°Ρ ΠΏΡ€Π°Π²Π΄Π° состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ООП Ρ‚Π΅Ρ€ΠΏΠΈΡ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ Π² СдинствСнной поставлСнной Π΅ΠΌΡƒ Π·Π°Π΄Π°Ρ‡Π΅. Оно выглядит Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π½Π° Π±ΡƒΠΌΠ°Π³Π΅, Π³Π΄Π΅ Ρƒ нас чистыС ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Ρ…, собак, людСй ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Всё это Ρ€ΡƒΡˆΠΈΡ‚ΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста слоТности прилоТСния. ВмСсто пониТСния слоТности ΠΎΠ½ΠΎ поощряСт бСспорядочноС совмСстноС использованиС измСняСмого состояния ΠΈ вносит Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ с Π΅Π³ΠΎ многочислСнными шаблонами проСктирования. ООП услоТняСт Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ тСстированиС.

МногиС Π½Π΅ согласятся, Π½ΠΎ ΠΏΡ€Π°Π²Π΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ соврСмСнноС ООП Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΎΡΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Оно Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΠΏΠΈΡ€Π°Π»ΠΎΡΡŒ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ институты (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Haskell/FP). Π£ ООП Π½Π΅Ρ‚ дСсятилСтий строгих Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… исслСдований. Лямбда-исчислСния ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ основу для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. Π£ ООП Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π±Π»ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΠΊ этому. По Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ счёту, ООП «просто ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒΒ».

ООП-ΠΊΠΎΠ΄ Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования Π½Π°ΠΌ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ Π²Π²ΠΎΠ΄Π΅. Π’ качСствС ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°: 2 + 2 ΠΈΠ»ΠΈ calculator.Add(2, 2) Π΄Π°ΡŽΡ‚ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ 4, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠ³Ρƒ Π΄Π°Ρ‚ΡŒ 3, 5 ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ 1004. Зависимости ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Calculator ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСний Π² Ρ‚ΠΎΠ½ΠΊΠΎΠΉ, Π½ΠΎ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ ΠΌΠ°Π½Π΅Ρ€Π΅.

Β«C++ – уТасный [ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ] язык… ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎ C ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ люди Π½Π΅ ΠΎΠ±Π»Π°ΠΆΠ°ΡŽΡ‚ΡΡ с ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ идиотской «ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ модСлью»c&@p.Β» – Линус Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ, ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ Linux.

Линус Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ извСстСн своСй ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΎΠΉ Π² адрСс C++ ΠΈ ООП. Он ΠΏΡ€Π°Π² Π²Β ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΈ программистов. Π§Π΅ΠΌ мСньшС Π²Ρ‹Π±ΠΎΡ€Π° Ρƒ программиста, Ρ‚Π΅ΠΌ Π³ΠΈΠ±Ρ‡Π΅ становится Π΅Π³ΠΎ ΠΊΠΎΠ΄. Π’ Ρ†ΠΈΡ‚Π°Ρ‚Π΅ Π²Ρ‹ΡˆΠ΅ Линус Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΊΠ°ΠΊ Π±Π°Π·Ρƒ для ΠΊΠΎΠ΄Π°.

Многим Π½Π΅ нравятся Π·Π½Π°ΠΊΠΈ ограничСния скорости Π½Π° Π΄ΠΎΡ€ΠΎΠ³Π΅, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для прСдотвращСния нСсчастных случаСв. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π³Π»ΡƒΠΏΡ‹Π΅ дСйствия.

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠΎΠ³Π°Ρ‚ΡŒ ΡΠ½ΠΈΠΆΠ°Ρ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

  1. ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования.
  2. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ изоляции состояний.
  3. Высокого ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ сигнал/ΡˆΡƒΠΌ.

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

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

НСкоторыС люди склонны ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ слоТной ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π°ΡƒΡ‡Π½ΠΎΠΉ срСдС, ΠΈ которая Π½Π΅ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Π° для Β«Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°Β». ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, это Π½Π΅ Ρ‚Π°ΠΊ!

Π”Π°, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ΄ собой сильноС матСматичСскоС основаниС ΠΈ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ своими корнями Π² лямбда-исчислСния. Но Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ΄Π΅ΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ Π² Π½Ρ‘ΠΌ, ΠΊΠ°ΠΊ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΡΠ»Π°Π±ΠΎΡΡ‚ΡŒ мСйнстримных языков программирования. Ѐункция – это основная абстракция Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. ΠŸΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π°ΡŽΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΊΠΎΠ΄Π°, Π½Π΅Π²ΠΈΠ΄Π°Π½Π½ΠΎΠ΅ Π² ООП.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ справляСтся с Π·Π°Π΄Π°Ρ‡Π΅ΠΉ написания Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΠ³ΠΎ софта. ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π΄Π΅Π±Π°Π³Π³Π΅Ρ€Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ исчСзаСт. Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ своСму ΠΊΠΎΠ΄Ρƒ ΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

НаконСц, Ссли Π²Ρ‹ ΡƒΠΌΠ΅Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹ ΡƒΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈ

ΠŸΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ программирования: Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ Π² Ρ‡Ρ‘ΠΌ различия | GeekBrains

Как Π½ΠΎΠ²ΠΈΡ‡ΠΊΡƒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ²

https://d2xzmw6cctk25h. cloudfront.net/post/1106/og_image/9e7d7916e93fd701e8ca8a0163da017c.png

Когда программист Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ язык β€” знакомится с Π΅Π³ΠΎ синтаксисом, ΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ простыС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, β€” ΠΎΠ½, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ задумываСтся ΠΎ Ρ‚ΠΎΠΌ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅ программирования Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Волько ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ осознаниС, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Π² структурном ΠΏΠ»Π°Π½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚Ρƒ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ, которая нравится, удаётся Π½Π΅ всСгда: Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ это зависит ΠΎΡ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ситуации Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Π΅Π³ΠΎ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΠΉ, ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΡ‚ языка.

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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

НаиболСС распространённая Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°. Π­Ρ‚ΠΎ ΠΏΠΎΠ΄Π²ΠΈΠ΄ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ программирования β€” ΠΎΠ½ΠΎ основано Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²Π°Ρ… ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Π΅, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ½Π° ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΈ это ΡƒΠ΄ΠΎΠ±Π½ΠΎ для ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Новичков Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΏΡƒΠ³Π°Π΅Ρ‚ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ООП, Π½ΠΎ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Π½Π΅ Ρ‚Π°ΠΊ слоТно, ΠΊΠ°ΠΊ каТСтся. Π’ своё врСмя эта идСя оказалась вирусной: ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ классам, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² качСствС дСйствий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ произвСсти Π½Π°Π΄ Π½ΠΈΠΌ. Много спСциалистов ΠΏΠΎ Computer Science ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ прСимущСство здСсь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ программисту, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΌΡƒ ООП, Π»Π΅Π³ΠΊΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ происходит Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Достаточно ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ дСйствия ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π›Π΅Π³Ρ‡Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ООП Π² Python, послоТнСС β€” Π² C++. Но Ссли Π² этих языках Ρƒ программиста Π΅Ρ‰Ρ‘ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠ²ΠΈΠ»ΡŒΠ½ΡƒΡ‚ΡŒ ΠΎΡ‚ ООП (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Python Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅), Ρ‚ΠΎ Π² Java ΠΈ C# всСгда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ классы, ΠΎΠ΄Π½ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ нСдостаточно.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

По распространённости Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° программирования Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ мСсто послС ООП. Π­Ρ‚ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΈΠ΄Π΅ΠΉ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ программирования: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° создаётся ΠΊΠ°ΠΊ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈ Π² ΠΈΡ‚ΠΎΠ³Π΅ Π΄Π°Ρ‘Ρ‚ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Β 

ΠœΠ΅ΠΆΠ΄Ρƒ послСдоватСлями Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ, оказавшимися Π² ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², всСгда разгораСтся бСсконСчный Ρ…ΠΎΠ»ΠΈΠ²Π°Ρ€ с обвинСниями Π² «ООП/ЀП Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ·Π³Π°Β». Но Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΈ программисты, Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ любой ΠΈΠ· ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² Π² зависимости ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

НаиболСС Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ΠΉ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования язык β€” Haskell. Π’ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΠΎΠ½ примСняСтся Ρ€Π΅Π΄ΠΊΠΎ, Π½ΠΎ Π±ΡƒΠ΄Ρ‚ΠΎ создан для красивых Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π² Π΄ΡƒΡ…Π΅ ЀП β€” поэтому Haskell стал ΠΊΡƒΠ»ΡŒΡ‚ΠΎΠ²Ρ‹ΠΌ срСди ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… программистов, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΡ… эту ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ.

Π’ ЀП ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ состоит ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ прописано, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π° Π²Ρ…ΠΎΠ΄Π΅, Π° Ρ‡Ρ‚ΠΎ β€” Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π°Ρ‚ΡŒ Π½Π° Π²Ρ…ΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π’Π°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСтся, запуская Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° β€” Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Π° тСстированиС упрощаСтся. Всё ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ дСйствия, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π½Π΅ зависят ΠΎΡ‚ внСшнСго состояния. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° становится Π±ΠΎΠ»Π΅Π΅ прСдсказуСмым, Π° Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты β€” ΠΌΠ΅Π½Π΅Π΅ вСроятными.

Помимо ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования, Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹. НСкоторыС ΠΈΠ· Π½ΠΈΡ… ΡƒΠΆΠ΅ вытСснСны Π±ΠΎΠ»Π΅Π΅ соврСмСнными ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°ΠΌΠΈ. Но Π΅ΡΡ‚ΡŒ ΠΈ спСцифичСскиС ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ситуаций. РасскаТСм ΠΏΡ€ΠΎ нСсколько самых распространённых.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ программирования. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ здСсь Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌ порядкС ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π½ΡΡŽΡ‚ состояниС памяти. ПослС примСнСния всСх ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π΄Π°Ρ‘Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ примСняСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² классичСских языках Π²Ρ€ΠΎΠ΄Π΅ C ΠΈ Pascal, Π½ΠΎ ΠΈ Π² самых соврСмСнных. НапримСр, Π² Go, Π³Π΄Π΅ ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈ ООП, Π½ΠΎ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ, Π½ΠΎ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ тяТСлСС ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π° ΠΈΡ… основС слоТныС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹.

ΠœΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

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

ΠžΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

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

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ этой ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, ΠΈ для этого Π½Π΅ придётся Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ с ООП, Ρ‚Π°ΠΊ ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ соврСмСнными ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°ΠΌΠΈ программирования.

ЛогичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ЛогичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” это ΠΏΠΎΠ΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ. Основан Π½Π° Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΊΡ‚ΠΎΠ² ΠΈ логичСских ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ эту ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ Π·Π°Π»ΠΎΠΆΠ΅Π½Π° Π² языкС Prolog β€” ΠΎΠ½ позволяСт Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ прСдлоТСния Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΊΡ‚ΠΎΠ² ΠΈ Π½Π°Π±ΠΎΡ€Π° ΠΏΡ€Π°Π²ΠΈΠ». Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Prolog Π½Π°Ρ‡Π°Π»ΠΈ Π΅Ρ‰Ρ‘ Π² 1970 Π³ΠΎΠ΄Ρƒ, ΠΈ Ρ†Π΅Π»ΡŒΡŽ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ СстСствСнный язык. Π›ΠΎΠ³ΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ срСдство Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ сСмантику. Если Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ фактичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области, ΠΌΠΎΠΆΠ½ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π΄Π°Ρ‡Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ схСмС «вопрос β€” ΠΎΡ‚Π²Π΅Ρ‚Β».

Π₯отя ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, эти ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ Π½Π΅ стали Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌΠΈ монополистами. НС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ с Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ пСрСносС части Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π½Π° ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ β€” Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ станСт какая-Ρ‚ΠΎ новая, Π΅Ρ‰Ρ‘ Π½Π΅ созданная ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π±Π»ΠΈΠΆΠ΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ языками, ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ вас Π½Π° бСсплатный Π²Π΅Π±ΠΈΠ½Π°Ρ€ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования». На Π½Ρ‘ΠΌ Π²Ρ‹ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ΡΡŒ Π² основы профСссии ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΌΠΈΡ€Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Бамоизоляция заканчиваСтся β€” самоС врСмя ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρƒ ΠΌΠ΅Ρ‡Ρ‚Ρ‹ ΠΈ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅! ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΠΈ с 1 ΠΏΠΎ 10 июля 2020 Π³. Π΄Π°Ρ€ΠΈΠΌ скидку 40% ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π° всС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ обучСния GeekBrains. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π·Π΄ΠΎΡ€ΠΎΠ²Ρ‹ ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹! πŸ™‚

Β 

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ понятия ООП — ΠŸΡ€ΠΈΠ·Π½Π°ΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… языков

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

Β  Β ΠŸΠΠ ΠΠ›Π›Π•Π›Π˜Π—Πœ — это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

Β 
Β  Β Π•ΡΡ‚ΡŒ систСмы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ событий ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… случаях ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ мощности ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ рСсурсы ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСссора. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ситуаций СстСствСнно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈΠ»ΠΈ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ Π½Π° многопроцСссорном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅.Β 
ΠŸΡ€ΠΎΡ†Π΅ΡΡ (ΠΏΠΎΡ‚Π΅ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅) — это Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ Π΅Π΄ΠΈΠ½ΠΈΡ†Π° дСйствия Π² систСмС. КаТдая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ управлСния, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ систСма ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²: Π²Π΅ΠΊ ΠΎΠ΄Π½ΠΈΡ… Π½Π΅Π΄ΠΎΠ»Π³ΠΈΠΉ, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΆΠΈΠ²ΡƒΡ‚ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСго сСанса Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы. РСальная ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ достигаСтся лишь Π½Π° многопроцСссорных систСмах, Π° систСмы с ΠΎΠ΄Π½ΠΈΠΌ процСссором ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π° счСт Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² дСлСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

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

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

Β  Β Π§Π΅ΠΌ ΠΆΠ΅ сущСствСнно отличаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ тСхнология ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ? Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° этот вопрос ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Градия Π‘ΡƒΡ‡Π°:
Β  Β ΠžΠ‘ΠͺΠ•ΠšΠ’ΠΠž-ΠžΠ Π˜Π•ΠΠ’Π˜Π ΠžΠ’ΠΠΠΠžΠ• ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π• — это мСтодология программирования, основанная Π½Π° прСдставлСнии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π²ΠΈΠ΄Π΅ совокупности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся экзСмпляром ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ класса, Π° классы ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ наслСдования.

Β  Β Π’ соотвСтствии с этим ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ всС языки программирования ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ. Бтрауструп ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ» Ρ‚Π°ΠΊ: «Π΅ΡΠ»ΠΈ срок ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‚ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ срСдства для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ стиля программирования. .. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ стиля Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π² языкС ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этим стилСм. Если написаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² стилС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… усилий ΠΈΠ»ΠΈ ΠΎΠ½ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ совсСм, Ρ‚ΠΎ этот язык Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ трСбованиям ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования». ВСорСтичСски Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° имитация ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… языках, Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ Pascal ΠΈ Π΄Π°ΠΆΠ΅ CLOS ΠΈΠ»ΠΈ ассСмблСр, Π½ΠΎ это ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ.

Β  Β Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° наслСдования, ΠΈ всСх ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Ρ‚Π΅ΠΊΠ°ΡŽΡ‚ ΠΈΠ· этого. НаслСдованиС ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ (ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚Π΅Ρ†/ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ), ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ позаимствуСт ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΡƒΡŽ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ИспользованиС наслСдования ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ появлСнию Ρ‚Π°ΠΊΠΈΡ… понятий ΠΊΠ°ΠΊ класс, иСрархия «is-a» ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ.

Β  Β ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ наслСдования позволяСт ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ абстракций, Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΌΠ΅Π½Π΅Π΅ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π·Π° счСт Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΎΠ±Ρ‰ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ (структуру ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅) ΠΈ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΅Π΅, Π° занСсти Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΊΠΎ всСм этим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ. ΠŸΡ€ΠΈ отсутствии наслСдования, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ станСт ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ, ΠΈ всСгда Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ «ΠΈΠ· нуля». Π’ качСствС Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΠΎΠ±Ρ‰Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ стал класс, ΠΊΠ°ΠΊ новая Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ абстракция языка. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ классов стали ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ «is-a». Π’ наслСдствСнной ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ общая Ρ‡Π°ΡΡ‚ΡŒ структуры ΠΈ повСдСния сосрСдоточСна Π² Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅ΠΌ супСрклассС. БупСрклассы ΠΏΡ€ΠΈ этом ΠΎΡ‚Π±ΠΈΠ²Π°ΡŽΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅, Π° подклассы — Π±ΠΎΠ»Π΅Π΅ спСциализированы абстракции, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‡Π»Π΅Π½Ρ‹ супСркласса ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Ρ‹, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ Π΄Π°ΠΆΠ΅ спрятанныС. Π‘Π΅Π· наслСдования Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π½Π°ΠΉΠΏΠΎΡ‚ΡƒΠΆΠ½Ρ–ΡˆΠΈΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

О Π΄Ρ€ΡƒΠΆΠ±Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² с ООП

ΠšΠ°ΠΌΡ€Π°Π΄ @ViIvanov Π² своСм Π±Π»ΠΎΠ³Π΅ поднял интСрСсный вопрос ΠΎ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Ρ… Ρ‚ΠΈΠΏΠ°Ρ… ΠΈ ООП. По сути, это Π±Ρ‹Π» Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ ΠΌΠΎΠ΅ΠΌΡƒ посту «ПишСм простой Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ RoslynΒ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ я упомянул, Ρ‡Ρ‚ΠΎ структуры ΠΏΠ»ΠΎΡ…ΠΎ Π΄Ρ€ΡƒΠΆΠ°Ρ‚ с ООП. ВячСслав высказал ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π·ΡƒΠΌΠ½ΡƒΡŽ ΠΌΡ‹ΡΠ»ΡŒ, Ρ‡Ρ‚ΠΎ наслСдованиС Π½Π΅ являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ООП, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π² этой части Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… Π³Ρ€Π°ΠΆΠ΄Π°Π½ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ сорта. Ну Ρ‡Ρ‚ΠΎ ΠΆ, ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ мою ΠΌΡ‹ΡΠ»ΡŒ ΠΏΠΎΠ³Π»ΡƒΠ±ΠΆΠ΅.

НачнСм с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Π΅ΠΌ ΠΆΠ΅ для мСня являСтся ΠΈ Π½Π΅ являСтся ООП. МоС ИМΠ₯О Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ООП, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Ρ†Π΅Π»ΠΎΠΌ, основано Π½Π° Π΄Π²ΡƒΡ… ΠΊΠΈΡ‚Π°Ρ… – абстракции ΠΈ инкапсуляции (Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° инкапсуляции, ΠΊΠ°ΠΊ выразился ВячСслав). Абстракция позволяСт Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ сущСствСнныС аспСкты повСдСния, Π° инкапсуляция являСтся Ρ‚Π΅ΠΌ инструмСнтом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ подробности ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ с Π³Π»Π°Π· Π΄ΠΎΠ»ΠΎΠΉ.

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Π² Ρ‡Π΅ΠΌ выраТаСтся абстракция ΠΈ инкапсуляция Π² ΠΌΠΎΠ΄Π½Ρ‹Ρ… Π½Ρ‹Π½Ρ‡Π΅ ОО языках, Ρ‚ΠΈΠΏΠ° C#.

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

Абстракция ΠΈ инкапсуляция ΠΈΠ³Ρ€Π°ΡŽΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² Π±ΠΎΡ€ΡŒΠ±Π΅ со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ – ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… Π½Π° Π±ΠΎΠ»Π΅Π΅ высоком ΡƒΡ€ΠΎΠ²Π½Π΅, Π½Π΅ вдаваясь Π²ΠΎ второстСпСнныС Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ свои Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π½Π΅ затрагивая ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ класса ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π½Π΅ ΠΌΠ°Π»ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² Π±ΠΎΡ€ΡŒΠ±Π΅ со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ, вСдь ΠΎΠ½ прячСт ΠΎΡ‚ своих ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΈ слоТности Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Но ΠΈΠ½ΠΎΠ³Π΄Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Π²ΡΠ·Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ класса, Π½ΠΎ ΠΈ ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… классов Π² Ρ†Π΅Π»ΠΎΠΌ.

По сути, наслСдованиС пСрСводят Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ ΠΈ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. Класс Dictionary скрываСт подробности Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π° IDictionary скрываСт Ρ†Π΅Π»ΠΎΠ΅ сСмСйство Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ, Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²Π°, Π° Π½Π΅ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ просто Π΅Ρ‰Π΅ Π½Π΅ появились Π½Π° свСт. ΠšΠ»ΠΈΠ΅Π½Ρ‚ Dictionary Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎ дСталях Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ класса, Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ IDictionary Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π½Π°Π΅Ρ‚, с Ρ‡Π΅ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»ΠΎ.

НаслСдованиС являСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ элСмСнтом, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ самым простым ΠΈ эффСктивным.

По сути, наслСдованиС ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ косвСнности ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ ΡΠ»Π°Π±ΡƒΡŽ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ (low coupling) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ способами: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ad-hoc ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° (строготипизированной ΡƒΡ‚ΠΈΠ½ΠΎΠΉ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ) ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΎΠ².

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ структурам ΠΈ ΠΈΡ… связи с ООП. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹, ΠΊΠ°ΠΊ извСстно, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ двумя ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ особСнностями (Π² контСкстС ООП):

Β· ΠžΡ‚ Π½ΠΈΡ… нСльзя ΠΎΡ‚Π½ΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ (хотя ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ интСрфСйсы) ΠΈ

Β· Π£ Π½ΠΈΡ… всСгда Π΅ΡΡ‚ΡŒ конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (Ρ€Π΅Ρ‡ΡŒ ΠΎ C# ΠΈ VB)

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•
Π—Π΄Π΅ΡΡŒ ΠΈ Π΄Π°Π»Π΅Π΅ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ «конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΒ» для структур. Говоря Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, default(CustomStruct) ΠΈΠ»ΠΈ new CustomStruct() Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ-Ρ‚ΠΎ являСтся конструктором ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. По сути, это способ создания экзСмпляра структуры с Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΌΠΈ значСниями всСх Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅ΠΉ. Но, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ приТился, я Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ.

ΠŸΠ΅Ρ€Π²Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ структур Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСсколько ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ООП-ΡˆΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ наслСдования ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠ΅ использованиС структур Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ интСрфСйсов. Но, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ наслСдованиС ΠΈ ΠΏΡ€Π°Π²Π΄Π° Π½Π΅ Ρ€Π°Π²Π½ΠΎ ООП, Ρ‚ΠΎ с этим ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΆΠΈΡ‚ΡŒ.

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

Если конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Ρ‚ΠΈΠΏΠ° DateTime, Ρ‚ΠΎ всС Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. А Ссли Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚? Π’ΡƒΡ‚, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° структуры ΠΈΠΌ Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π”Π°, это Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π½ΠΎ для этого ΠΊΠ»ΠΈΠ΅Π½Ρ‚ нашСй структуры Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠ½Ρ‹ΠΌ Π·Π½Π°Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ этого Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. А это, Π½ΠΈΡ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ отсутствиС Ρ‚ΠΎΠ³ΠΎ самого сокрытия ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ характСристикой ООП.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования | PCMag

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° языка программирования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ связанная с Π½ΠΈΠΌΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° (Β«ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹Β») ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Π΅ сущности, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈΒ». БСгодняшняя Π½ΠΎΡ€ΠΌΠ° — языки ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (ООП), Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ C ++ ΠΈ Java, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ» для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ управлСния ΠΈΠΌΠΈ. Π”Π°Π½Π½Ρ‹Π΅ хранятся Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ рСляционной Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Ссли Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ структуру. Π‘ΠΌ. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ O-R ΠΈ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ основныС особСнности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ ΠΈΡ… ΠΎΡ‚ языков, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ ООП: инкапсуляция, наслСдованиС ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ обСспСчиваСт ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ
Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ созданиС Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΈ опрСдСляСмыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ «классами», Π° ΠΎΠ΄ΠΈΠ½ экзСмпляр класса являСтся Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌΒ». НапримСр, Π² систСмС расчСта Π·Π°Ρ€Π°Π±ΠΎΡ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹ классом ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Manager, Π° Pat ΠΈ Jan ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ двумя экзСмплярами (двумя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ) класса Manager.Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ обСспСчиваСт Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ хранятся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ.

НаслСдованиС ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Β«Π—Π½Π°Π½ΠΈΠ΅Β» Π²Π½ΠΈΠ·
ΠšΠ»Π°ΡΡΡ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² иСрархиях, ΠΈ наслСдованиС позволяСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ структуру ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Π²Π½ΠΈΠ· ΠΏΠΎ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² слоТныС систСмы трСбуСтся мСньшС программирования. Если шаг добавляСтся Π²Π½ΠΈΠ·Ρƒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅, связанныС с этим ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ шагом.ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ пСрСдаСтся ΠΏΠΎ наслСдству. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ считаСтся основным прСимущСством ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

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

Π―Π·Ρ‹ΠΊΠΈ ООП
SIMULA, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для модСлирования повСдСния систСмы Π² ΠΊΠΎΠ½Ρ†Π΅ 1960-Ρ… Π³ΠΎΠ΄ΠΎΠ², Π±Ρ‹Π» ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языком. Π’ 1970-Ρ… Smalltalk ΠΎΡ‚ Xerox Π±Ρ‹Π» ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языком программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ использовался для создания графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса (см. Xerox Star). ACTOR ΠΈ Eiffel Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π½ΡŒΡˆΠ΅ Π±Ρ‹Π»ΠΈ языками ООП.

БСгодня популярными ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ языками ΡΠ²Π»ΡΡŽΡ‚ΡΡ C ++, C #, Java, JavaScript, Visual Basic.NET ΠΈ Python.НиТС приводится сравнСниС основных Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² ООП с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Π‘ΠΌ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π‘Π£Π‘Π”.

  ООП Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ 

 класс ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ + ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

 Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° + ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

 Π΄Π°Π½Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° (ΠΏΠΎΠ»Π΅)

 функция ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

 Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сообщСния

 ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ структуру
 

РСляционноС ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

ВмСсто ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† сотрудников, ΠΎΡ‚Π΄Π΅Π»ΠΎΠ² ΠΈ долТностСй класс сотрудников содСрТит Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ для всСх сотрудников.ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ подкласс (ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€, ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ ΠΈ Ρ‚. Π”.) Π˜ΠΌΠ΅Π΅Ρ‚ свои собствСнныС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ наслСдуСт всС ΠΎΡ‚ класса сотрудников. ИзмСнСния, внСсСнныС Π² класс сотрудников, Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ подкласс.

Ruby OOP — Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅?

Π­Ρ‚Π° Π³Π»Π°Π²Π° даст Π²Π°ΠΌ ΠΎΠ±Ρ‰Π΅Π΅ прСдставлСниС ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ВсС эти Ρ‚Π΅ΠΌΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ….

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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π±Ρ‹Π» способ создания ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² для Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠΈ, Π½Π΅ затрагивая всю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Им Π½ΡƒΠΆΠ΅Π½ Π±Ρ‹Π» способ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ области ΠΊΠΎΠ΄Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΡΡ‚Π°Ρ‚ΡŒ взаимодСйствиСм мноТСства ΠΌΠ΅Π»ΠΊΠΈΡ… частСй, Π° Π½Π΅ ΠΎΠ΄Π½ΠΈΠΌ массивным Π±Π»ΠΎΠΊΠΎΠΌ зависимости.

Π’ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² ООП. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ познакомимся с Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

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

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ прСимущСство создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ программисту ΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ Π½Π° Π½ΠΎΠ²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ абстракции. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ прСдставлСны ΠΊΠ°ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π° ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ программист пытаСтся ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ — это ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс. НапримСр, Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ move , ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅ΠΌΡƒ любой Ρ‚ΠΈΠΏ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ совмСстимый ΠΌΠ΅Ρ‚ΠΎΠ΄ move .ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡˆΠΊΡƒ, ΠΌΠ΅Π΄ΡƒΠ·Ρƒ ΠΈΠ»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π°ΠΆΠ΅ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΈΠ»ΠΈ ΠΏΠΎΠ΅Π·Π΄. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ позволяСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° Π²Ρ‹Π·ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

«Поли» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΠΌΠ½ΠΎΠ³ΠΎΒ», Π° Β«ΠΌΠΎΡ€Ρ„ΠΈΠ½Π³Β» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«Ρ„ΠΎΡ€ΠΌΡ‹Β». ООП Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π² использовании ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ написанного ΠΊΠΎΠ΄Π° для Π½ΠΎΠ²Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ наслСдования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ruby, Π³Π΄Π΅ класс наслСдуСт ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ супСрклассом . Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Ruby-программистам Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы с большой Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ подклассы для Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ повСдСния.

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΡƒΡŽ структуру ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Ruby — ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Module . ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° классы Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ содСрТат ΠΎΠ±Ρ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Однако Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ модуля. ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ смСшан с классом, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° include . Π­Ρ‚ΠΎ называСтся миксином . ПослС смСшивания Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, объявлСнноС Π² этом ΠΌΠΎΠ΄ΡƒΠ»Π΅, становится доступным для класса ΠΈ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠœΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ всСх Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² Π² дСйствии Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ….

Π’ сообщСствС Ruby Π²Ρ‹ часто ΡΠ»Ρ‹ΡˆΠΈΡ‚Π΅ Ρ„Ρ€Π°Π·Ρƒ: Β«Π’ Ruby всС являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ!Β». Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ ΠΈΠ·Π±Π΅Π³Π°Π»ΠΈ этого, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ — это Π±ΠΎΠ»Π΅Π΅ слоТная Ρ‚Π΅ΠΌΠ°, ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ синтаксисС Ruby, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Ρ‹ Π½Π°Ρ‡Π½Π΅Ρ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ….

Π­Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Π½Π΅ совсСм ΠΏΡ€Π°Π²Π΄Π°; Π½Π΅ всС Π² Ruby являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. Однако всС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ , являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ: ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ числа, строки, массивы ΠΈ Π΄Π°ΠΆΠ΅ классы ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.Однако Π΅ΡΡ‚ΡŒ нСсколько Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ: Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π±Π»ΠΎΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

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

  irb: 001> "ΠΏΡ€ΠΈΠ²Π΅Ρ‚" .class
=> Π‘Ρ‚Ρ€ΠΎΠΊΠ°
irb: 002> "ΠΌΠΈΡ€".класс
=> Π‘Ρ‚Ρ€ΠΎΠΊΠ°
  

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

Ruby опрСдСляСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ своих ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² классах . Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ классах ΠΊΠ°ΠΊ ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… схСмах Ρ‚ΠΎΠ³ΠΎ, ΠΈΠ· Ρ‡Π΅Π³ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ.Для опрСдСлСния класса ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ синтаксис, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠœΡ‹ замСняСм def Π½Π° class ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ соглашСниС ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ… CamelCase для создания ΠΈΠΌΠ΅Π½ΠΈ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ слово , ΠΊΠΎΠ½Π΅Ρ† , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. ИмСна Ρ„Π°ΠΉΠ»ΠΎΠ² Ruby Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² snake_case ΠΈ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ имя класса. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ имя Ρ„Π°ΠΉΠ»Π° — good_dog.rb , Π° имя класса — GoodDog .

  класс GoodDog
ΠΊΠΎΠ½Π΅Ρ†

sparky = GoodDog.new
  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали экзСмпляр нашСго класса GoodDog ΠΈ сохранили Π΅Π³ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ sparky .Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠœΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Sparky являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈΠ»ΠΈ экзСмпляром класса GoodDog . Π’Π΅ΡΡŒ этот Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ экзСмпляра ΠΈΠ· класса называСтся instantiation , поэтому ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ создали экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ sparky ΠΈΠ· класса GoodDog . Π’Ρ‹ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ½Π΅Ρ‚Π΅ ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ООП, Π½ΠΎ здСсь Π²Π°ΠΆΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ возвращаСтся ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° класса new .ВзглянитС Π½Π° рисунок 3, Ρ‡Ρ‚ΠΎΠ±Ρ‹ наглядно ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса просто. Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТныС классы, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ модулях.

Как ΠΌΡ‹ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ Ρ€Π°Π½Π΅Π΅, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ — это Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ достиТСния ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° Π² Ruby. ΠœΠΎΠ΄ΡƒΠ»ΡŒ — это Π½Π°Π±ΠΎΡ€ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… классах Ρ‡Π΅Ρ€Π΅Π· миксины . ΠœΠΎΠ΄ΡƒΠ»ΡŒ Β«ΠΏΠΎΠ΄ΠΌΠ΅ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡΒ» ΠΊ классу с использованиСм Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° include .Допустим, ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² нашСм классС GoodDog Π±Ρ‹Π» ΠΌΠ΅Ρ‚ΠΎΠ΄ speak , Π½ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ speak. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΌΡ‹ это сдСлаСм.

  ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Speak
  def Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ (Π·Π²ΡƒΠΊ)
    ставит Π·Π²ΡƒΠΊ
  ΠΊΠΎΠ½Π΅Ρ†
ΠΊΠΎΠ½Π΅Ρ†

класс GoodDog
  Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π“ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ
ΠΊΠΎΠ½Π΅Ρ†

class HumanBeing
  Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π“ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ
ΠΊΠΎΠ½Π΅Ρ†

sparky = GoodDog.new
sparky.speak ("Арф!") # => Арф!
bob = HumanBeing.new
bob.speak ("ΠŸΡ€ΠΈΠ²Π΅Ρ‚!") # => ΠŸΡ€ΠΈΠ²Π΅Ρ‚!
  

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ GoodDog , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ Sparky , Ρ‚Π°ΠΊ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ HumanBeing , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ bob , ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΊ экзСмпляру speak . ΠΌΠ΅Ρ‚ΠΎΠ΄.Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π° счСт «подмСшивания» модуля Speak . Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΌΡ‹ скопировали ΠΌΠ΅Ρ‚ΠΎΠ΄ speak Π² классы GoodDog ΠΈ HumanBeing .

Когда Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠ°ΠΊ Ruby ΡƒΠ·Π½Π°Π΅Ρ‚, Π³Π΄Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄? Ruby ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ поиска, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½ слСдуСт ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ² ΠΏΡƒΡ‚ΡŒ поиска ΠΌΠ΅Ρ‚ΠΎΠ΄Π° для нашСго класса GoodDog . ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ancestors для любого класса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ поиска ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

  ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π“ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅
  def Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ (Π·Π²ΡƒΠΊ)
    ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ "# {Π·Π²ΡƒΠΊ}"
  ΠΊΠΎΠ½Π΅Ρ†
ΠΊΠΎΠ½Π΅Ρ†

класс GoodDog
  Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π“ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ
ΠΊΠΎΠ½Π΅Ρ†

class HumanBeing
  Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π“ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ
ΠΊΠΎΠ½Π΅Ρ†

ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ "--- ΠΏΡ€Π΅Π΄ΠΊΠΈ GoodDog ---"
ставит GoodDog.ancestors
ставит ''
ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ "--- ΠŸΡ€Π΅Π΄ΠΊΠΈ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°-сущСства ---"
ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ HumanBeing.ancestors
  

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выглядит Ρ‚Π°ΠΊ:

  --- ΠŸΡ€Π΅Π΄ΠΊΠΈ GoodDog ---
Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ пСс
Π“ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ
ΠžΠ±ΡŠΠ΅ΠΊΡ‚
Π―Π΄Ρ€ΠΎ
BasicObject

--- ЧСловСчСскиС ΠΏΡ€Π΅Π΄ΠΊΠΈ ---
Π§Π΅Π»ΠΎΠ²Π΅ΠΊ
Π“ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ
ΠžΠ±ΡŠΠ΅ΠΊΡ‚
Π―Π΄Ρ€ΠΎ
BasicObject
  

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Speak находится прямо ΠΌΠ΅ΠΆΠ΄Ρƒ нашими ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ классами (Ρ‚.Π΅., GoodDog ΠΈ HumanBeing ) ΠΈ класс Object , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поставляСтся с Ruby. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ «НаслСдованиС» Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° поиска ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с миксинами ΠΈ наслСдованиСм классов.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Speak Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² классС GoodDog , ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ мСстом, ΠΊΡƒΠ΄Π° ΠΎΠ½ смотрит, являСтся ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Speak . Π­Ρ‚ΠΎ продолТаСтся Π² упорядочСнном, Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌ порядкС, ΠΏΠΎΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½, ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ останСтся мСст, Π³Π΄Π΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΊΠ°Ρ‚ΡŒ.

Π­Ρ‚ΠΎ Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ ООП Π² Ruby. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°Ρ€Π°Ρ… Π³Π»Π°Π² ΠΌΡ‹ углубимся Π² Π΄Π΅Ρ‚Π°Π»ΠΈ.

Π§Π΅Ρ‚Ρ‹Ρ€Π΅ столпа ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования

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

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡƒΠ³Π»ΡƒΠ±ΠΈΡ‚ΡŒΡΡ Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ столпа ООП, я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… основных тСрминологиях.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ : экзСмпляр класса / Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса

Класс : это модСль ΠΈΠ»ΠΈ стандарт возмоТностСй Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ

ΠœΠ΅Ρ‚ΠΎΠ΄: ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ состояниС класса, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠΎ всСм экзСмплярам класса

ЭкзСмпляр : ΠΎΠ½ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅ΠΌ ΠΎΠ± этом Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ…: Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆ конструкции автомобиля — это описаниС класса, всС Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ, ΠΈΠ·Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΈΠ· этого Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ°, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ этого класса.Π’Π°ΡˆΠ° машина, созданная ΠΏΠΎ этому Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΡƒ, являСтся экзСмпляром этого класса.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ рассмотрСли эти ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования: инкапсуляция, абстракция, наслСдованиС ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ.

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

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

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ выполняСтся, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ частноС состояниС Π²Π½ΡƒΡ‚Ρ€ΠΈ класса. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ этому ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ, вмСсто этого ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ список общСдоступных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.ΠžΠ±ΡŠΠ΅ΠΊΡ‚ управляСт своим собствСнным состояниСм с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Ссли это явно Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСдоставлСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. МнС нравится Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎΠ± инкапсуляции Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ людСй ΠΈ ΠΈΡ… собак. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ это, инкапсулируя всю Β«ΡΠΎΠ±Π°Ρ‡ΡŒΡŽΒ» Π»ΠΎΠ³ΠΈΠΊΡƒ Π² класс Dog. «БостояниС» собаки находится Π² частных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…: ΠΈΠ³Ρ€ΠΈΠ²ΠΎΡΡ‚ΡŒ, Π³ΠΎΠ»ΠΎΠ΄ ΠΈ энСргия, ΠΈ каТдая ΠΈΠ· этих ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ свои ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ поля.

БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ частный ΠΌΠ΅Ρ‚ΠΎΠ΄: bark (). Класс собак ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ это, ΠΊΠΎΠ³Π΄Π° Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ собакС, ΠΊΠΎΠ³Π΄Π° Π»Π°ΡΡ‚ΡŒ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ общСдоступныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ sleep (), play () ΠΈ eat (), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ доступны Π΄Ρ€ΡƒΠ³ΠΈΠΌ классам. КаТдая ΠΈΠ· этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ измСняСт Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ состояниС класса Dog ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ bark (), ΠΊΠΎΠ³Π΄Π° это происходит, частноС состояниС ΠΈ общСдоступныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ.

Абстракция

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

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

НаслСдованиС — это ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ / всС свойства Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.НапримСр, Ρ€Π΅Π±Π΅Π½ΠΎΠΊ наслСдуСт Ρ‡Π΅Ρ€Ρ‚Ρ‹ своих Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ. ΠŸΡ€ΠΈ наслСдовании Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования являСтся большим прСимущСством. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ класса. Π’ Java ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ наслСдования: ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ΅, мноТСствСнноС, ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅, иСрархичСскоС ΠΈ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠ΅. НапримСр, Apple — это Ρ„Ρ€ΡƒΠΊΡ‚, поэтому ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ класс Fruit ΠΈ Π΅Π³ΠΎ подкласс с ΠΈΠΌΠ΅Π½Π΅ΠΌ Apple. НашС яблоко ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ свойства класса Fruit. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ классификациями ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΈΠ½ΠΎΠ³Ρ€Π°Π΄, Π³Ρ€ΡƒΡˆΠ°, ΠΌΠ°Π½Π³ΠΎ ΠΈ Ρ‚. Π”. Π€Ρ€ΡƒΠΊΡ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ класс ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π·Ρ€Π΅Π»Ρ‹Π΅ завязи растСния, мясистыС, содСрТащиС большоС сСмя Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΠ»ΠΈ мноТСство ΠΊΡ€ΠΎΡˆΠ΅Ρ‡Π½Ρ‹Ρ… сСмян.Подкласс Apple ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ эти свойства ΠΎΡ‚ Fruit ΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ свойствами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… подклассов Fruit, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ красный, ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΉ, Π²Ρ‹Π΅ΠΌΡ‡Π°Ρ‚Ρ‹ΠΉ Π½Π°Π²Π΅Ρ€Ρ…Ρƒ.

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

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ, поэтому Π½Π΅Ρ‚ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ со смСшСниСм Ρ‚ΠΈΠΏΠΎΠ². ΠŸΡ€ΠΈ этом ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ подкласс сохраняСт свои собствСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ / ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‚Π°ΠΊΠΈΠΌΠΈ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ. Если Π±Ρ‹ Ρƒ нас Π±Ρ‹Π» супСркласс Mammal, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ mammalSound ().Подклассами ΠΌΠ»Π΅ΠΊΠΎΠΏΠΈΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ собаки, ΠΊΠΈΡ‚Ρ‹, слоны ΠΈ лошади. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ своя собствСнная итСрация Π·Π²ΡƒΠΊΠ° ΠΌΠ»Π΅ΠΊΠΎΠΏΠΈΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ (Π»Π°ΠΉ собаки, Ρ‰Π΅Π»Ρ‡ΠΎΠΊ ΠΊΠΈΡ‚Π°).

ΠŸΠžΠ”Π ΠžΠ‘ΠΠ•Π•: ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ GraphQL ΠΈ REST API, ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ исслСдованиС UX, Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ сходства ΠΈ кластСризация, Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ схСмы

классов (ООП) | БлСстящая Π²ΠΈΠΊΠΈ ΠΏΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΈ Π½Π°ΡƒΠΊΠ΅

БозданиС класса

Π’ Python классы ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом class , Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт имя класса.ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ class опрСдСляСт Π½ΠΎΠ²Ρ‹ΠΉ класс Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ def опрСдСляСт Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ простой класс, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Brilliant.

  класс brilliant ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚):
  

ΠœΠ΅Ρ‚ΠΎΠ΄ конструктора

ПослС объявлСния ΠΈΠΌΠ΅Π½ΠΈ класса программист Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ конструктора . Π’ Python это обозначаСтся __init __ () .Ѐункция __init__ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ self Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π° Π·Π°Ρ‚Π΅ΠΌ любоС количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎ ТСланию программиста. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π΅ΠΌ блСстящих ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, программист Ρ…ΠΎΡ‡Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ имя, возраст ΠΈ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Имя __init __ () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Β«ΠΌΠ΅Ρ‚ΠΎΠ΄Π° конструктора» класса. Π₯отя класс являСтся ΠΏΠ»Π°Π½ΠΎΠΌ для Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, программисту ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ значСния этого Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ функциям.

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ конструктор создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, запускаСт ΠΊΠΎΠ΄ Π² конструкторС ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π­Ρ‚ΠΎ строка user = brilliantUser (‘Mursalin’, 17, 4). НСзависимо ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ класса конструктор всСгда называСтся __init__ .

Пока Ρƒ нас

  класс brilliant ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚):
    def __init __ (я, имя, возраст, Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³):
  

Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΠΎΠ΅ опрСдСляСт ΠΌΠ΅Ρ‚ΠΎΠ΄ для класса brilliantUsers.ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… классу.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ‚Π΅Π»ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° __init__

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ ΠΈ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΈΡ… с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ экзСмпляром класса, Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ __init__ создайтС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: self.variableName = variableName .

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, связанный с классами, — это Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² . Атрибуты — это характСристики ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.ΠœΠ΅Ρ‚ΠΎΠ΄ __init __ () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ — это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² классС, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ — это ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² классС.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ класса начинаСтся со ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-экзСмпляр. По соглашСнию это называСтся «я».

Π’ Python ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ для ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² являСтся self . ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ self ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…-Ρ‡Π»Π΅Π½ΠΎΠ². Π’Π½ΡƒΡ‚Ρ€ΠΈ класса ΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π»ΡŽΠ±Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ значСния Π² зависимости ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ экзСмпляра класса, ΠΊΠ°ΠΊ self.Имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ . Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ color для car_1 ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ color для car_2 , ΠΈ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ машинС своС собствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° , Π½Π°ΠΌ понадобится self .

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

  self.name = name
self.age = возраст
self.rating = Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³
  

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ создаСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅-Ρ‡Π»Π΅Π½Ρ‹ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, созданного конструктором.ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅-Ρ‡Π»Π΅Π½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с self , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ-Ρ‡Π»Π΅Π½Π°ΠΌΠΈ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, Π° Π½Π΅ просто ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅.

Π’ Ρ†Π΅Π»ΠΎΠΌ класс для описания блСстящих ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ выглядит Ρ‚Π°ΠΊ:

  класс brilliant ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚):
    def __init __ (я, имя, возраст, Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³):
      self.name = имя
      self.age = возраст
      self.rating = Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³

# ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ блСстящий ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ


user = brilliantUser ('ΠœΡƒΡ€ΡΠ°Π»ΠΈΠ½', 17, 4)
  

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экзСмпляра

ЭкзСмпляр — это особый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, созданный ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ класса.Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляры класса, Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ класс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ имя класса ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Π»ΡŽΠ±Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__ — Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ имя , возраст ΠΈ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ .

  user = brilliantUser ('ΠœΡƒΡ€ΡΠ°Π»ΠΈΠ½', 17, 4)
  

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ создаСм Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса brilliantUser . Или, Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΌΡ‹ создаСм экзСмпляр класса brilliantUser .

ООП (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅

ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Β». ООП (Π½Π΅ Упс!) ΠžΡ‚Π½ΠΎΡΠΈΡ‚ΡΡ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ программирования, основанной Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° функциях ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ…. Π­Ρ‚ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ соврСмСнных языков программирования, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Java, C / C ++ ΠΈ PHP, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ языками, Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ старыС языки программирования Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ вСрсии.

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

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

ОбновлСно: 2 ноября 2007 Π³.

TechTerms — ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ тСхничСских Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ²

Π­Ρ‚Π° страница содСрТит тСхничСскоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ООП.Он ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ООП, ΠΈ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² Π² словарС TechTerms.

ВсС опрСдСлСния Π½Π° Π²Π΅Π±-сайтС TechTerms составлСны Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ тСхничСски Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ простыми для понимания. Если Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ООП ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ ссылки для цитирования. Если Π²Ρ‹ считаСтС, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ слСдуСт ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ TechTerms, ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ элСктронноС письмо Π² TechTerms!

ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ Π½Π° рассылку TechTerms, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΠ·Π±Ρ€Π°Π½Π½Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ ΠΈ тСсты прямо Π² свой ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик.Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΏΠΎΡ‡Ρ‚Ρƒ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ ΠΈΠ»ΠΈ СТСнСдСльно.

ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚? (Π£Ρ‡Π΅Π±Π½ΠΈΠΊΠΈ ΠΏΠΎ Java β„’> Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ языка Java> ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования)

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ — ΠΊΠ»ΡŽΡ‡ ΠΊ пониманию ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ . ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π²ΠΎΠΊΡ€ΡƒΠ³ прямо сСйчас, ΠΈ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ мноТСство ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: Π²Π°ΡˆΡƒ собаку, ваш стол, ваш Ρ‚Π΅Π»Π΅Π²ΠΈΠ·ΠΎΡ€, ваш вСлосипСд.

Π Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π²Π΅ характСристики: всС ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ состояниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ .Π£ собак Π΅ΡΡ‚ΡŒ состояниС (имя, окрас, ΠΏΠΎΡ€ΠΎΠ΄Π°, Π³ΠΎΠ»ΠΎΠ΄) ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (Π»Π°ΠΉ, Π²Π·ΠΌΠ°Ρ…, виляниС хвостом). ВСлосипСды Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ состояниС (тСкущая ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π°, тСкущая частота вращСния ΠΏΠ΅Π΄Π°Π»Π΅ΠΉ, тСкущая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ) ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ частоты вращСния ΠΏΠ΅Π΄Π°Π»Π΅ΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΎΠ²). ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ состояния ΠΈ повСдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π° — ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

НайдитС ΠΌΠΈΠ½ΡƒΡ‚ΠΊΡƒ прямо сСйчас, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² нСпосрСдствСнной близости ΠΎΡ‚ вас. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π·Π°Π΄Π°ΠΉΡ‚Π΅ сСбС Π΄Π²Π° вопроса: Β«Π’ ΠΊΠ°ΠΊΠΈΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… состояниях ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚?Β» ΠΈ «КакоС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚?Β».ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ свои наблюдСния. По ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ это Π΄Π΅Π»Π°Π΅Ρ‚Π΅, Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π° Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΠΎ слоТности; Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Π°Ρ Π»Π°ΠΌΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… состояния (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ) ΠΈ Π΄Π²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… повСдСния (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ), Π½ΠΎ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π΄ΠΈΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ состояния (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, тСкущая Π³Ρ€ΠΎΠΌΠΊΠΎΡΡ‚ΡŒ, тСкущая станция) ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ , Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π³Ρ€ΠΎΠΌΠΊΠΎΡΡ‚ΡŒ, ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π³Ρ€ΠΎΠΌΠΊΠΎΡΡ‚ΡŒ, ΠΈΡΠΊΠ°Ρ‚ΡŒ, ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ). Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. ВсС эти наблюдСния ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π° пСрСводятся Π² ΠΌΠΈΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°: ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ состоят ΠΈΠ· состояния ΠΈ связанного повСдСния. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ сохраняСт своС состояниС Π² полях (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках программирования) ΠΈ раскрываСт своС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках программирования). ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ состояниСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ слуТат основным ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ для связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Π‘ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ состояния ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ выполнСния всСх взаимодСйствий с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° извСстно ΠΊΠ°ΠΊ инкапсуляция Π΄Π°Π½Π½Ρ‹Ρ… — Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

Рассмотрим вСлосипСд, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ВСлосипСд, смодСлированный ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

ΠŸΡ€ΠΈΠΏΠΈΡΡ‹Π²Π°Ρ состояниС (тСкущая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, тСкущая частота вращСния ΠΏΠ΅Π΄Π°Π»Π΅ΠΉ ΠΈ тСкущая ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π°) ΠΈ прСдоставляя ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для измСнСния этого состояния, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сохраняСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ внСшний ΠΌΠΈΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. НапримСр, Ссли Ρƒ вСлосипСда Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 6 ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡, ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΠΈΡ‚ΡŒ любоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ мСньшС 1 ΠΈΠ»ΠΈ большС 6.

ОбъСдинСниС ΠΊΠΎΠ΄Π° Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄Π°Π΅Ρ‚ ряд прСимущСств, Π² Ρ‚ΠΎΠΌ числС:

  1. ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ: исходный ΠΊΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написан ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ нСзависимо ΠΎΡ‚ исходного ΠΊΠΎΠ΄Π° для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².ПослС создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π²Π½ΡƒΡ‚Ρ€ΠΈ систСмы.
  2. Π‘ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ: ΠΏΡ€ΠΈ взаимодСйствии Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΄Π΅Ρ‚Π°Π»ΠΈ Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ скрытыми ΠΎΡ‚ внСшнСго ΠΌΠΈΡ€Π°.
  3. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΊΠΎΠ΄Π°: Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡƒΠΆΠ΅ сущСствуСт (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, написан Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π­Ρ‚ΠΎ позволяСт спСциалистам Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ / Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ / ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ слоТныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ для запуска Π² своСм собствСнном ΠΊΠΎΠ΄Π΅.
  4. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ: Ссли ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ окаТСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· своСго прилоТСния ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² качСствС Π΅Π³ΠΎ Π·Π°ΠΌΠ΅Π½Ρ‹. Π­Ρ‚ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΡƒΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ мСханичСских ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΡ€Π΅. Если Π±ΠΎΠ»Ρ‚ сломаСтся, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π° , Π° Π½Π΅ всю ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ООП (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅)?

ОбновлСно: 30.06.2019 компаниСй Computer Hope

Π‘ΠΎΠ·Π΄Π°Π½ΠΎ Аланом КаСм, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ , Ρ‚Π°ΠΊΠΆΠ΅ извСстноС ΠΊΠ°ΠΊ ООП ΠΈΠ»ΠΈ ООП , прСдставляСт собой ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ языка программирования.Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ структурирован ΠΊΠ°ΠΊ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ свойства ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° быстро ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности, Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

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

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ языкС программирования ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… концСпциях.

  • Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ — Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° связанных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…) вмСстС Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ части ΠΊΠΎΠ΄Π°.
  • Абстракция — ΠŸΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самоС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
  • НаслСдованиС — УстранСниС ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡƒΡ‚Π΅ΠΌ наслСдования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… классов.
  • ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ — ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² зависимости ΠΎΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ класса.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ OOPL?

OOPL (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования ) — это язык программирования, основанный Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования, описанной Π²Ρ‹ΡˆΠ΅.ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков программирования ΡΠ²Π»ΡΡŽΡ‚ΡΡ C ++, C #, Java, Python, Simula ΠΈ Smalltalk.

ΠžΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ООП

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

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

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

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

Класс, ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ сокращСния, ΠžΠ±ΡŠΠ΅ΠΊΡ‚, ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, Π’Π΅Ρ€ΠΌΠΈΠ½Ρ‹ программирования

.

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

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