Thanks to visit codestin.com
Credit goes to github.com

Skip to content

A guide-note to OOP principles and an example of their application in python

Notifications You must be signed in to change notification settings

octarinered/OOP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

OOP - Object Oriented Programming

Examples of using OOP (in file .py) used comments in English

Настоящая ΡΡ‚Π°Ρ‚ΡŒΡ Π±Ρ‹Π»Π° написана с использованиСм Java, я Π΄ΠΎΠ±Π°Π²ΠΈΠ» Ruby, Python ΠΈ C#

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ООП?

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП) β€” мСтодология программирования, основанная Π½Π° прСдставлСнии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π²ΠΈΠ΄Π΅ совокупности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся экзСмпляром ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ класса, Π° классы ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ наслСдования.

  • ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² качСствС основных логичСских конструктивных элСмСнтов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π° Π½Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹;
  • ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся экзСмпляром ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ класса
  • классы ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ.

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

Богласно ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅ ООП ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° состоит ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ…ΡΡ сообщСниями. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ состояниСм, СдинствСнный способ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° - ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ Π΅ΠΌΡƒ сообщСниС, Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ собствСнноС состояниС.

к оглавлСнию

НазовитС основныС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП.

  • Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ - сокрытиС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.
  • НаслСдованиС - созданиС Π½ΠΎΠ²ΠΎΠΉ сущности Π½Π° Π±Π°Π·Π΅ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ.
  • ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ - Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ для ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ сущности.
  • Абстракция - Π½Π°Π±ΠΎΡ€ ΠΎΠ±Ρ‰ΠΈΡ… характСристик.
  • ΠŸΠΎΡΡ‹Π»ΠΊΠ° сообщСний - Ρ„ΠΎΡ€ΠΌΠ° связи, взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ сущностями.
  • ΠŸΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅- всС Ρ‡Ρ‚ΠΎ пСрСчислСно Π²Ρ‹ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΊΠΎΠ΄Π°.

Π­Ρ‚ΠΎ СдинствСнно Π²Π΅Ρ€Π½Ρ‹ΠΉ порядок ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ ООП, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ каТдая ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅.

к оглавлСнию

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «инкапсуляция»?

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ – это свойство систСмы, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с Π½ΠΈΠΌΠΈ, Π² классС ΠΈ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΎΡ‚ΠΊΡ€Ρ‹Π² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ использовании.

ЦСль инкапсуляции β€” ΡƒΠΉΡ‚ΠΈ ΠΎΡ‚ зависимости внСшнСго интСрфСйса класса (Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы) ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ малСйшСС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² классС Π½Π΅ Π²Π»Π΅ΠΊΠ»ΠΎ Π·Π° собой ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ внСшнСго повСдСния класса.

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

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

class SomePhone:

    def __init__(self, year, company):
        self.year = year
        self.company = company

    def openConnection(self):
        //findComutator
        //openNewConnection...
    
    def call(self):
        openConnection()
        return "Π’Ρ‹Π·Ρ‹Π²Π°ΡŽ Π½ΠΎΠΌΠ΅Ρ€"
   
    def ring(self):
        return "Π”Π·Ρ‹Π½ΡŒ-Π΄Π·Ρ‹Π½ΡŒ"
    

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ' __ ' (private Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках) Π΄Π΅Π»Π°Π΅Ρ‚ доступными поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ private полям ΠΈΠ· Π²Π½Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΈ Π½Π΅Ρ‚ возмоТности Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Π‘ΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ доступа ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ openConnection, оставляСт Π½Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊ свободному измСнСнию Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с нашим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΌΡ‹ оставляСм ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ call ΠΈ ring, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΡ‚ΠΎΡ€, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ становящийся ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Ρ‚Π°ΠΊΠΆΠ΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° инкапсуляции, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ссли ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ доступ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ – ΠΎΠ½ станСт бСсполСзным.

к оглавлСнию

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «наслСдованиС»?

НаслСдованиС – это свойство систСмы, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ класс Π½Π° основС ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ с частично ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΈΠΌΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.

Класс, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ производится наслСдованиС, называСтся ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌ, Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΈΠ»ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ. Новый класс – ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ, наслСдником ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классом.

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

Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ ΠΌΠΎΠ΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ряд Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ: сСдан, унивСрсал ΠΈ ΠΌΠ°Π»ΠΎΠ»ΠΈΡ‚Ρ€Π°ΠΆΠ½Ρ‹ΠΉ хэтч-бэк. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ собираСмся ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ с нуля, Π°, взяв Π·Π° основу ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅, внСсём ряд конструктивных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. НапримСр, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π³ΠΈΠ΄Ρ€ΠΎΡƒΡΠΈΠ»ΠΈΡ‚Π΅Π»ΡŒ руля ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ Π·Π°Π·ΠΎΡ€Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΡ€Ρ‹Π»ΡŒΡΠΌΠΈ ΠΈ ΠΊΡ€Ρ‹ΡˆΠΊΠΎΠΉ ΠΊΠ°ΠΏΠΎΡ‚Π°, поставим ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ‚ΡƒΠΌΠ°Π½Π½Ρ‹Π΅ Ρ„ΠΎΠ½Π°Ρ€ΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Ρ„ΠΎΡ€ΠΌΠ° ΠΊΡƒΠ·ΠΎΠ²Π°.

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания класса смартфон с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ наслСдования. ВсС бСспроводныС Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΡ‚ аккумуляторных Π±Π°Ρ‚Π°Ρ€Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ рСсурс Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² часах. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ это свойство Π² класс бСспроводных Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²:

       
 class WirelessPhone:
    __hour = 0

    def __init__(self, year, hour):
        super(year)
        self.hour = hour
    
    def output(self):
        return self.hour
    

Π‘ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρ‹ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ свойства бСспроводного Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² этот класс Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² call ΠΈ ring:

class CellPhone(WirelessPhone):  
    def CellPhone(self, year, hour):
        super(year, hour)
    
    def call(self, outputNumber):
        return "Π’Ρ‹Π·Ρ‹Π²Π°ΡŽ Π½ΠΎΠΌΠ΅Ρ€ " + outputNumber
   

    def ring(self, inputNumber):
        return "Π’Π°ΠΌ Π·Π²ΠΎΠ½ΠΈΡ‚ Π°Π±ΠΎΠ½Π΅Π½Ρ‚ " + inputNumber

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, класс смартфон, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ классичСских сотовых Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму. Π’ смартфон ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой, Ρ€Π°ΡΡˆΠΈΡ€ΡΡ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ΄Π° класс ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

class Smartphone(CellPhone):

    __operationSystem = ""

    def Smartphone(self, year, hour, operationSystem) 
        super(year, hour)
        self.operationSystem = operationSystem
    
    
    def install(self, program){
        return "Π£ΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽ " + program + "для" + self.operationSystem
   

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, для описания класса Smartphone ΠΌΡ‹ создали совсСм Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ класс с Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. ИспользованиС этого ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ООП позволяСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ объСм ΠΊΠΎΠ΄Π°, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΈ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ программисту.

к оглавлСнию

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Β«ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΒ»?

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ – это свойство систСмы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ интСрфСйсом Π±Π΅Π· ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ΅ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ структурС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

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

Π›ΡŽΠ±ΠΎΠ΅ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ воТдСнию Π½Π΅ ΠΈΠΌΠ΅Π»ΠΎ Π±Ρ‹ смысла, Ссли Π±Ρ‹ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Π½Π°ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉΡΡ Π²ΠΎΠ΄ΠΈΡ‚ΡŒ, скаТСм, ВАЗ 2106 Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΡ‚ΠΎΠΌ Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ВАЗ 2110 ΠΈΠ»ΠΈ BMW X3. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ смог Π±Ρ‹ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ пСдаль Π³Π°Π·Π° находится Π»Π΅Π²Π΅Π΅ ΠΏΠ΅Π΄Π°Π»ΠΈ Ρ‚ΠΎΡ€ΠΌΠΎΠ·Π°, Π° вмСсто руля – дТойстик.

Всё Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ основныС элСмСнты управлСния автомобиля ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ дСйствия. Π’ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π°Π»Π΅Π²ΠΎ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€ΡƒΠ»ΡŒ, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΌ Π³ΠΈΠ΄Ρ€ΠΎΡƒΡΠΈΠ»ΠΈΡ‚Π΅Π»ΡŒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Если Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ Π½Π°Π΄ΠΎ Π΄ΠΎΠ΅Ρ…Π°Ρ‚ΡŒ с Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄ΠΎ Π΄ΠΎΠΌΠ°, Ρ‚ΠΎ ΠΎΠ½ сядСт Π·Π° Ρ€ΡƒΠ»ΡŒ автомобиля ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ дСйствия, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΈΠΏ автомобиля ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚. По сути, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ интСрфСйс, Π° Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΡƒΡΡΡŒ ΠΎΡ‚ сущности автомобиля, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ с этим интСрфСйсом. Если Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŽ прСдстоит Π΅Ρ…Π°Ρ‚ΡŒ ΠΏΠΎ Π½Π΅ΠΌΠ΅Ρ†ΠΊΠΎΠΌΡƒ Π°Π²Ρ‚ΠΎΠ±Π°Π½Ρƒ, ΠΎΠ½, вСроятно Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ быстрый Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ с Π½ΠΈΠ·ΠΊΠΎΠΉ посадкой, Π° Ссли прСдстоит Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈΠ· ΠΎΡ‚Π΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°Ρ€Π°Π»ΡŒΠ½ΠΈΠΊΠ° Π² Π“ΠΎΡ€Π½ΠΎΠΌ АлтаС послС доТдя, скорСС всСго, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½ УАЗ с армСйскими мостами. Но, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, интСрфСйс останСтся ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Π°Ρ пСрСмСнная, это пСрСмСнная, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ значСния Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π° полиморфная функция, это функция Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ являСтся ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

  • ad hoc, функция Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΏΠΎ Ρ€Π°Π·Π½ΠΎΠΌΡƒ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, функция draw() β€” рисуСт ΠΏΠΎ Ρ€Π°Π·Π½ΠΎΠΌΡƒ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²);
  • парамСтричСский, функция Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, функция add() β€” ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΊΠ»Π°Π΄Π΅Ρ‚ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ элСмСнты Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²).

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π² ООП, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ интСрфСйсом Π±Π΅Π· ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ устройствС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, называСтся ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

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

class User:
    __name = ""

    def User(self, name):
        self.name = name
    

    def callAnotherUser(self, number, phone):
        phone.call(number)
   

Π’Π΅ΠΏΠ΅Ρ€ΡŒ опишСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ². Одна ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²:

class ThomasEdisonPhone(AbstractPhone):

    def ThomasEdisonPhone(self, year):
        super(year)
    

    def call(self, outputNumber):
        print("Π’Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Ρ€ΡƒΡ‡ΠΊΡƒ")
        print("Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π°, сэр")
    

    def ring(self, inputNumber):
        return "Π’Π΅Π»Π΅Ρ„ΠΎΠ½ Π·Π²ΠΎΠ½ΠΈΡ‚"
    

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ стационарный Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½:

class Phone(AbstractPhone):

    def Phone(self, year):
        super(year)
    
    def call(self, outputNumber)
        return "Π’Ρ‹Π·Ρ‹Π²Π°ΡŽ Π½ΠΎΠΌΠ΅Ρ€" + outputNumber
    
    def ring(self, inputNumber)
        return "Π’Π΅Π»Π΅Ρ„ΠΎΠ½ Π·Π²ΠΎΠ½ΠΈΡ‚"
  

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΊΡ€ΡƒΡ‚ΠΎΠΉ Π²ΠΈΠ΄Π΅ΠΎΡ‚Π΅Π»Π΅Ρ„ΠΎΠ½:

class VideoPhone(AbstractPhone): 

    def VideoPhone(self, year)
        super(year)
    

    def call(self, outputNumber) 
        return "ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Π½Π°Π» для Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π° " + outputNumber
    

    def ring(int inputNumber) 
        return "Π£ вас входящий Π²ΠΈΠ΄Π΅ΠΎΠ²Ρ‹Π·ΠΎΠ²..." + inputNumber
    

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ main() ΠΈ протСстируСм ΠΌΠ΅Ρ‚ΠΎΠ΄ callAnotherUser:

firstPhone = ThomasEdisonPhone(1879)
phone = Phone(1984)
videoPhone = VideoPhone(2018)
ser = User("АндрСй")
user.callAnotherUser(224466, firstPhone)
# Π’Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Ρ€ΡƒΡ‡ΠΊΡƒ
# Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π°, сэр
user.callAnotherUser(224466, phone)
# Π’Ρ‹Π·Ρ‹Π²Π°ΡŽ Π½ΠΎΠΌΠ΅Ρ€ 224466
user.callAnotherUser(224466, videoPhone)
# ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Π½Π°Π» для Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π° 224466

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ‹Π·ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° user, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° call Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° callAnotherUser производился динамичСски Π½Π° основании ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² процСссС выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ этом ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ основноС прСимущСство ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° – Π²Ρ‹Π±ΠΎΡ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² процСссС выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… классов Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ², ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅, ΠΌΡ‹ использовали ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² – ΠΏΡ€ΠΈΠ΅ΠΌ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ измСняСтся рСализация ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, опрСдСлСнная Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ классС, Π±Π΅Π· измСнСния сигнатуры ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. По сути это являСтся Π·Π°ΠΌΠ΅Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² подклассС, вызываСтся ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

к оглавлСнию

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «абстракция»?

АбстрагированиС – это способ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΎΠ±Ρ‰ΠΈΡ… характСристик ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΠ· рассмотрСния частныС ΠΈ Π½Π΅Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅. БоотвСтствСнно, абстракция – это Π½Π°Π±ΠΎΡ€ всСх Ρ‚Π°ΠΊΠΈΡ… характСристик.

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

# Abstract class
from abc import ABC, abstractmethod
class Animal(ABC):
    # Abstract method (does not have a body)
    @abstractmethod
    def animalSound():
        pass

    # Regular method
    def sleep():
        return "Zzz"
 

# Subclass (inherit from Animal)
class Pig(Animal):
    def animalSound():
        # The body of animalSound() is provided here
        return "The pig says: wee wee"
   
if __name__ == "__main__":
    myPig = Pig() # Create a Pig object
    myPig.animalSound()
    myPig.sleep()
    

к оглавлСнию

Π§Ρ‚ΠΎ прСдставляСт собой Β«ΠΎΠ±ΠΌΠ΅Π½ сообщСниями»?

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚, посылая ΠΈ получая сообщСния. Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ β€” это запрос Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ дСйствия, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ дСйствия. Π’ ООП посылка сообщСния (Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°) β€” это СдинствСнный ΠΏΡƒΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Β«ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒΒ» Π½Π° это сообщСниС, Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄. Π’Π°ΠΊ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ свои ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈ сами ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ сообщСния Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ. ОбмСн сообщСниями рСализуСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ динамичСских Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ·Π΄Π½Π΅ΠΌΡƒ ΡΠ²ΡΠ·Ρ‹Π²Π°Π½ΠΈΡŽ (extreme late binding).

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

к оглавлСнию

РасскаТитС ΠΏΡ€ΠΎ основныС понятия ООП: «класс», Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Β», «интСрфСйс».

Класс – это способ описания сущности, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ состояниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, зависящСС ΠΎΡ‚ этого состояния, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° для взаимодСйствия с Π΄Π°Π½Π½ΠΎΠΉ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ (ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚).

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния программирования класс ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΏΠΎΠ»Π΅ΠΉ, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², Ρ‡Π»Π΅Π½ΠΎΠ² класса) ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ (ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²).

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния структуры ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, класс являСтся слоТным Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ….

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ (экзСмпляр) – это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΡŒ класса, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ состояниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ опрСдСляСмоС классом. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ значСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с этими значСниями Π½Π° основС ΠΏΡ€Π°Π²ΠΈΠ», Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Π² классС.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ – это Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса, доступных для использования. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠΎΠΌ класса Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ Π½Π°Π±ΠΎΡ€ всСх Π΅Π³ΠΎ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² совокупности с Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ². По сути, интСрфСйс спСцифицируСт класс, Ρ‡Ρ‘Ρ‚ΠΊΠΎ опрСдСляя всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ дСйствия Π½Π°Π΄ Π½ΠΈΠΌ.

к оглавлСнию

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ прСимущСства ΠΈ нСдостатки ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ?

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π²ΠΏΠΎΠ»Π½Π΅ СстСствСнна, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° чСловСчСскоС восприятиС ΠΌΠΈΡ€Π°, Π° Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.
  • ΠšΠ»Π°ΡΡΡ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ конструированиС ΠΈΠ· ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΡ… простыми инструмСнтами, Ρ‡Ρ‚ΠΎ позволяСт Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.
  • Π”Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π½ΠΈΠΌΠΈ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, ΠΈ ΠΎΠ½ΠΈ Π½Π΅ разносятся ΠΏΠΎ всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΊΠ°ΠΊ Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ Π² случаС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ программирования, Π° ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ вмСстС. Локализация ΠΊΠΎΠ΄Π° ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΈ удобство сопровоТдСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.
  • Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ позволяСт привнСсти свойство ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ распараллСливаниС выполнСния Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими исполнитСлями ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ вСрсий ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹Π΅ систСмы.
  • ИспользованиС ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° оказываСтся ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ:
    • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½Π΅ различая Π²ΠΈΠ΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ сущСствСнно ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄. НовыС Π²ΠΈΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚.
    • ИзмСнСнии повСдСния Π²ΠΎ врСмя исполнСния. На этапС исполнСния ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π΄Ρ€ΡƒΠ³ΠΈΠΌ, Ρ‡Ρ‚ΠΎ позволяСт Π»Π΅Π³ΠΊΠΎ, Π±Π΅Π· измСнСния ΠΊΠΎΠ΄Π°, Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.
    • Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с наслСдниками. Алгоритмы ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡƒΠΆΠ΅ смогут Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ с ΠΎΠ΄Π½ΠΈΠΌ Π²ΠΈΠ΄ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
    • ВозмоТности ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ нСзависимыС ΠΎΡ‚ прилоТСния части ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡ€Π° ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… классов, ΠΈΠ»ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² дальнСйшСм Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ Π·Π° счСт добавлСния частСй, спСцифичных для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ прилоТСния.
  • ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΊΠΎΠ΄Π°:
    • БокращаСтся врСмя Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π΄Π°Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π·Π°Π΄Π°Ρ‡Π°ΠΌ.
    • ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ использования ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ содСрТат Π³ΠΎΡ€Π°Π·Π΄ΠΎ мСньшС ошибок, Ρ‡Π΅ΠΌ вновь Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅, вСдь ΠΎΠ½ΠΈ ΡƒΠΆΠ΅ Π½Π΅ Ρ€Π°Π· ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°Π»ΠΈΡΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅.
    • Когда Π½Π΅ΠΊΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сразу нСсколькими ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ, вносимыС Π² Π΅Π³ΠΎ ΠΊΠΎΠ΄, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ влияниС ΠΈ Π½Π° мноТСство Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с Π½ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.
    • Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° опираСтся Π½Π° стандартныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π΅Π΅ структура ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс становятся Π±ΠΎΠ»Π΅Π΅ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Π΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ использованиС.

НСдостатки:

  • Π’ слоТных иСрархиях классов поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ с Ρ€Π°Π·Π½Ρ‹Ρ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ. И Π½Π΅ всСгда Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ фактичСски относятся ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡƒ классу.
  • Код для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСния ΠΈΠ½ΠΎΠ³Π΄Π° Β«Ρ€Π°Π·ΠΌΠ°Π·Π°Π½Β» ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ (ΠΈΠ½Π°Ρ‡Π΅ говоря, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сообщСния Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ, Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ описаны Π² Ρ€Π°Π·Π½Ρ‹Ρ… классах).
  • Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ классов - Π·Π°Π΄Π°Ρ‡Π° Π±ΠΎΠ»Π΅Π΅ трудная, Ρ‡Π΅ΠΌ это Π±Ρ‹Π»ΠΎ Π² случаС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ любой ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½ΠΎ ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Π² ΠΊΠ°ΠΊΠΎΠΌ контСкстС ΠΎΠ½ вызываСтся.
  • ΠΠ΅ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈ нСэкономноС распрСдСлСния памяти Π½Π° этапС выполнСния (ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΈΠ·Π΄Π΅Ρ€ΠΆΠ΅ΠΊ Π½Π° динамичСскоС связываниС ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π½Π° этапС выполнСния).
  • Излишняя ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Часто содСрТится большС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‡Π΅ΠΌ это Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. А ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ лишниС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹, ΠΎΠ½ΠΈ становятся ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹ΠΌ Π³Ρ€ΡƒΠ·ΠΎΠΌ.

к оглавлСнию

Π§Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ООП выраТСния «являСтся» ΠΈ Β«ΠΈΠΌΠ΅Π΅Ρ‚Β»?

«являСтся» ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ наслСдованиС. Β«ΠΈΠΌΠ΅Π΅Ρ‚Β» ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π°ΡΡΠΎΡ†ΠΈΠ°Ρ†ΠΈΡŽ (Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ).

к оглавлСнию

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠ΅ΠΉ?

Ассоциация ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ связь ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ ΠΈ агрСгация β€” частныС случаи ассоциации Β«Ρ‡Π°ΡΡ‚ΡŒ-Ρ†Π΅Π»ΠΎΠ΅Β».

АгрСгация ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ связаны Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ Β«part-ofΒ» (Ρ‡Π°ΡΡ‚ΡŒ). ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ Π±ΠΎΠ»Π΅Π΅ строгий Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ Β«part-ofΒ» накладываСтся условиС, Ρ‡Ρ‚ΠΎ экзСмпляр «части» ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎ Ρ†Π΅Π»ΠΎΠ΅ (ΠΈΠ»ΠΈ Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ), Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π² случаС Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ экзСмпляр «части» ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² нСсколько Ρ†Π΅Π»Ρ‹Ρ….

НапримСр, ΠΊΠ½ΠΈΠ³Π° состоит ΠΈΠ· страниц, ΠΈ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Ρ€Π²Π°Ρ‚ΡŒ страницу ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ Π²Π»ΠΎΠΆΠΈΡ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ‡Π΅Ρ‚ΠΊΠΎ привязаны ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅, поэтому это композиция. Π’ Ρ‚ΠΎΠΆΠ΅ врСмя ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·ΡΡ‚ΡŒ ΠΈ пСрСнСсти ΠΊΠ½ΠΈΠ³Ρƒ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ - это ΡƒΠΆΠ΅ агрСгация.

к оглавлСнию

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ статичСскоС ΠΈ динамичСскоС связываниС?

ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΊ Ρ‚Π΅Π»Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° называСтся связываниСм. Если связываниС проводится компилятором (ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ) ΠΏΠ΅Ρ€Π΅Π΄ запуском ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚ΠΎ ΠΎΠ½ΠΎ называСтся статичСским ΠΈΠ»ΠΈ Ρ€Π°Π½Π½ΠΈΠΌ связываниСм (early binding).

Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΠΎΠ·Π΄Π½Π΅Π΅ связываниС (late binding) это связываниС, ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ нСпосрСдствСнно Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ПозднСС связываниС Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ динамичСским (dynamic) ΠΈΠ»ΠΈ связываниСм Π½Π° стадии выполнСния (runtime binding). Π’ языках, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ·Π΄Π½Π΅Π΅ связываниС, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ опрСдСлСния фактичСского Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, для Π²Ρ‹Π·ΠΎΠ²Π° подходящСго ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π˜Π½Π°Ρ‡Π΅ говоря, компилятор Π½Π΅ Π·Π½Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² опрСдСляСт Π΅Π³ΠΎ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Ρ‚Π΅Π»ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ·Π΄Π½Π΅Π³ΠΎ связывания зависит ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ языка, Π½ΠΎ Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ какая-Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация.

Для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Java ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ·Π΄Π½Π΅Π³ΠΎ (динамичСского) связывания, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π±Ρ‹Π» объявлСн ΠΊΠ°ΠΊ final (ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ final ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ).

к оглавлСнию

About

A guide-note to OOP principles and an example of their application in python

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages