Бпонсорский ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»

🧱 SOLID-ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹: Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹. Π Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΠΎ Π±ΡƒΠΊΠ²Π°ΠΌ

Π‘ΠΏΠΎΠΉΠ»Π΅Ρ€: ΠΊ ΠΈΠ³Ρ€Π΅ Metal Gear Solid ΠΏΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚.
🧱 SOLID-ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹: Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹. Π Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΠΎ Π±ΡƒΠΊΠ²Π°ΠΌ

SOLID – это какая-Ρ‚ΠΎ ΠΈΠ³Ρ€Π°?

НС совсСм. SOLID – ΠΏΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π΄Π°ΡŽΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΏΠΎ Π±ΡƒΠΊΠ²Π°ΠΌ:

S (The Single Responsibility Principle) – ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π΅Π΄ΠΈΠ½ΠΎΠΉ отвСтствСнности, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ класс Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈ Ρƒ класса Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° для измСнСния. Если класс Π·Π°Π΄Π°Π΅Ρ‚ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ двиТСния ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ‚ΠΎ этот класс Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π½Π° нСзависимыС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΡƒΡŽ связью.

O (The Open Closed Principle) – ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ открытости/замкнутости. Если понадобилось Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊ классу, Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ класс Π½Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ, Π° создаСм наслСдника класса с Π½ΠΎΠ²Ρ‹ΠΌΠΈ возмоТностями. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρƒ нас Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ класс Π±Π΅Π· измСнСния самого класса.

L (The Liskov Substitution Principle) – ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ подстановки Лисков, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ возмоТности замСняСмости экзСмпляров ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌΠΈ словами: Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ…. ΠŸΡƒΡΡ‚ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ класс ΠŸΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΌΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρƒ, высоту ΠΈ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс ΠšΠ²Π°Π΄Ρ€Π°Ρ‚. ΠšΠ²Π°Π΄Ρ€Π°Ρ‚ – Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, Π½ΠΎ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ сторонами. Класс ΠšΠ²Π°Π΄Ρ€Π°Ρ‚ наслСдуСтся ΠΎΡ‚ класса ΠŸΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ ΠΈ пСрСопрСдСляСт Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: подставляСм значСния – всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Но Ссли ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс ΠŸΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π² качСствС интСрфСйса, Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅ΠΌ с классом ΠšΠ²Π°Π΄Ρ€Π°Ρ‚, ΠΌΡ‹ Ρ€Π°Π·ΠΎΠΌ измСняСм ΠΎΠ±Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, создаСтся ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс для ΠΎΠ±ΠΎΠΈΡ… классов ΠΈ вмСсто наслСдования ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот самый интСрфСйс.

I (The Interface Segregation Principle) – ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ раздСлСния интСрфСйсов. Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ узкоспСциализированныС интСрфСйсы ΠΈ Π½Π΅ Π²Ρ‹Π½ΡƒΠΆΠ΄Π°ΠΉΡ‚Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… интСрфСйсов. Допустим Π΅ΡΡ‚ΡŒ класс Auto с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π°Ρ†ΠΈΠΉ для всСх Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ. Если ΠΌΡ‹ наслСдуСмся ΠΎΡ‚ интСрфСйса, Ρ‚ΠΎ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² Π½Π΅ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ описаны Π² классС-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ΅. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ классы ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΡ‹ раздСляСм интСрфСйсы.

D (The Dependency Inversion Principle) – ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ инвСрсии зависимостСй. Бущности Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ абстракций, Π° Π½Π΅ ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ. Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ класс HTTPService с Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ запроса ΠΈ высокоуровнСвый класс HTTP, Π² конструктор ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. ПослС Ρ‡Π΅Π³ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π½Π°Ρ€ΡƒΡˆΠ°Π΅ΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ инвСрсии зависимости: высокоуровнСвый модСль зависит ΠΎΡ‚ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΡ‹ создаСм ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΅Π³ΠΎ Π² высокоуровнСвый интСрфСйс. Π’Π΅ΠΏΠ΅Ρ€ΡŒ наш класс Π½Π΅ зависит ΠΎΡ‚ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ модуля.

Π― Ρ‚Π°ΠΊ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΈ Π½Π΅ понял, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ доступно?

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ. 20 января ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ бСсплатный Π²Π΅Π±ΠΈΠ½Π°Ρ€ Β«ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ использования SOLID Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅Β», Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассказали ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… SOLID. Π’ΠΎΡ‚ запись Π²Π΅Π±ΠΈΠ½Π°Ρ€Π°:

Π‘Π»ΠΎΠ²Π°, слова, слова… SOLID-ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Π½ΡƒΠΆΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‡ΡƒΠ²ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ сСбя ΡƒΠΌΠ½Ρ‹ΠΌ? Какой ΠΏΡ€ΠΎΡ„ΠΈΡ‚?

SOLID-ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Π½ΡƒΠΆΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ. Π—Π½Π°Π½ΠΈΠ΅ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ смыслов, стоящих Π·Π° Π½ΠΈΠΌΠΈ, Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ инструмСнтарий Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ конкурСнтноспособным.

Π§Π΅ΠΌ дальшС Π² лСс, Ρ‚Π΅ΠΌ большС Π΄Ρ€ΠΎΠ²

Помимо SOLID-ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ², Ρ€Π°Π·Ρ€Π°Π±Ρƒ пригодятся ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования, тСстированиС, Π²ΠΈΠ΄Ρ‹ слоТности, абстракции ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

ΠšΡΡ‚Π°Ρ‚ΠΈ, 15 фСвраля стартуСт наш курс «АрхитСктуры ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования», Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ:

  • ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π΅ ΡΠ½ΠΈΠΆΠ°Ρ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ развития ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°;
  • ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты Π½Π° Mock-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…;
  • ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ SOLID ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках;
  • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ CI ΠΈ IoC ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹.

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для старта?

Для старта достаточно Π·Π½Π°Ρ‚ΡŒ любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования: Python, Java, PHP, C++, JavaScript, C# ΠΈ Π΄Ρ€.

Π˜Π³Ρ€Π° стоит свСч?

Π”Π°, бСзусловно. Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ знания Π½Π° Π·Π΅ΠΌΠ»Π΅ Π½Π΅ Π²Π°Π»ΡΡŽΡ‚ΡΡ.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

Π’ΠΠšΠΠΠ‘Π˜Π˜

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ вакансию
Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ C++
Москва, ΠΏΠΎ ΠΈΡ‚ΠΎΠ³Π°ΠΌ собСсСдования

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•