Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 52

Автор Π‘Π΅Ρ€Ρ‚Ρ€Π°Π½ ΠœΠ΅ΠΉΠ΅Ρ€

На рис. 7.4 Π΄Π°Π½Π° рассмотрСнная Π²Ρ‹ΡˆΠ΅ классификация, прСдставлСнная Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²Π°:

Рис. 7.4.  ΠšΠ»Π°ΡΡΠΈΡ„икация ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² класса ΠΏΠΎ ΠΈΡ… Ρ€ΠΎΠ»ΠΈ

Π­Ρ‚Π° классификация являСтся внСшнСй, основанной Π½Π° Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ выглядит для ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ Π΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

МоТно ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΡƒΡŽ Π² качСствС основного критСрия способ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π² классС:

Рис. 7.5.  ΠšΠ»Π°ΡΡΠΈΡ„икация ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² класса ΠΏΠΎ способу Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π£Π½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ доступ

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

ΠžΡ‚Π²Π΅Ρ‚ зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, с ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ - Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Π°Π²Ρ‚ΠΎΡ€Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса POINT ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, создавшСго класс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ POINT. Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ΠΈ функциями ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π²Π°ΠΆΠ½Π° ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ смысл. Π•ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅ Π² памяти ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ доступны Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ вычислСний. Но Π·Π°ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΎΡΠΎΠ·Π½Π°Π²Π°Ρ‚ΡŒ эту Ρ€Π°Π·Π½ΠΈΡ†Ρƒ, Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ ошибкой. ΠšΠ»ΠΈΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ значСниям x ΠΈΠ»ΠΈ ρ для Ρ‚ΠΎΡ‡ΠΊΠΈ p1, Π½Π΅ Π·Π°Π±ΠΎΡ‚ΡΡΡŒ ΠΈ Π½Π΅ имСя ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ запросы.

РСшСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π΄Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ доступа (Uniform Access principle), Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² дискуссии ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ (лСкция 3). ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ доступа ΠΊ свойствам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ, Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это свойство Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ - Π² памяти ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСний (Π² пространствС ΠΈΠ»ΠΈ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π² Π²ΠΈΠ΄Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹). Π­Ρ‚ΠΎΠΌΡƒ Π²Π°ΠΆΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ для обращСния ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ класса. Π’Π°ΠΊ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° x ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° p1 Π±ΡƒΠ΄Π΅Ρ‚ всСгда Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π² Π²ΠΈΠ΄Π΅:


p1.x


Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, осущСствляСтся Π»ΠΈ доступ ΠΊ полю Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ выполняСтся ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

ΠŸΡ€ΠΈ использовании Ρ‚Π°ΠΊΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для запросов Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΈ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹. Команда Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ, запрос с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ доступа Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для гарантирования автономности ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ПО. Он Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΎ создатСля класса свободно ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π΅ создавая ΠΏΠΎΠΌΠ΅Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ. (БМ. "ИспользованиС ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ для докумСнтирования: краткая Ρ„ΠΎΡ€ΠΌΠ° класса", лСкция 11)

Pascal, C ΠΈ Ada Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‚ этот ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, прСдоставляя Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ для Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ для доступа ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ. Π­Ρ‚ΠΎ объяснимо для Ρ‚Π°ΠΊΠΈΡ… Π½Π΅ ОО-языков (хотя Π΅Ρ‰Π΅ Π² 1966 Π³. синтаксис Algol W ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠ° Pascal удовлСтворял этому ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ). Π‘ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Π΅ языки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ C++ ΠΈ Java, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ этому ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ. ΠžΡ‚Ρ…ΠΎΠ΄ ΠΎΡ‚ этого ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ измСнСния внСсСнныС Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ прСдставлСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ полярной систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΊ Π΄Π΅ΠΊΠ°Ρ€Ρ‚ΠΎΠ²ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Π΅) ΠΏΠΎΠ²Π»Π΅ΠΊΡƒΡ‚ Π·Π° собой Π½Π΅Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΡ… клиСнтских классов. Π­Ρ‚ΠΎ являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ.

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

Класс POINT

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° вСрсия исходного тСкста класса POINT. Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с Π΄Π²ΡƒΡ… Ρ‚ΠΈΡ€Π΅ "--", ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° строки. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ содСрТат пояснСния, ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ тСкста, ΠΈ Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° сСмантику класса.


indexing

description: "Π’ΠΎΡ‡ΠΊΠ° Π½Π° плоскости"

class POINT feature

x, y: REAL

-- Абсцисса ΠΈ ΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°

rho: REAL is

-- РасстояниС Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ (0, 0)

do

Result := sqrt (x^2 + y^2)

end

theta: REAL is

-- ΠŸΠΎΠ»ΡΡ€Π½Ρ‹ΠΉ ΡƒΠ³ΠΎΠ»

do

-- ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ΡΡ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС упраТнСния (ΡƒΠΏΡ€. Π£7.3)

end

distance (p: POINT): REAL is

-- РасстояниС Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ p

do

Result := sqrt ((x - p.x)^2 + (y- p.y)^2)

end

translate (a, b: REAL) is

-- ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π½Π° a ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ, b ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ

do

x := x + a

y := y + b

end

scale (factor: REAL) is

-- ИзмСнСниС расстояния Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π² factor Ρ€Π°Π·

do

x := factor * x

y := factor * y

end

rotate (p: POINT; angle: REAL) is

-- ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²ΠΎΠΊΡ€ΡƒΠ³ p Π½Π° ΡƒΠ³ΠΎΠ» angle

do

-- ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ΡΡ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС упраТнСния (ΡƒΠΏΡ€. Π£7.3)

end

end


НСкоторыС аспСкты ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ тСкста Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΠΉ.

Класс Π² основном состоит ΠΈΠ· прСдлоТСния, ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом feature. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, присутствуСт ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ indexing Π΄Π°ΡŽΡ‰Π΅Π΅ ΠΎΠ±Ρ‰Π΅Π΅ описаниС (description), ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ для понимания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ класса, Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π²Π»ΠΈΡΡŽΡ‰Π΅Π΅ Π½Π° сСмантику исполнСния. ПозднСС Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Ρ‚Ρ€ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… прСдлоТСния: inherit - для наслСдования; creation - ΠΏΡ€ΠΈ нСобходимости использования ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ конструктора; invariant - для объявлСния ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² класса. Π‘ΡƒΠ΄Π΅Ρ‚ рассмотрСна Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² класс Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ feature.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ соглашСния

Класс POINT дСмонстрируСт ряд ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…. НСобходимо ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ основныС соглашСния.

РаспознаваниС Π²ΠΈΠ΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ x ΠΈ y ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ относящиСся ΠΊ Ρ‚ΠΈΠΏΡƒ REAL Π±Π΅Π· ассоциированного Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ содСрТат конструкции Π²ΠΈΠ΄Π°


is

do

... Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ...

end


ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Ρ‡Ρ‚ΠΎ являСтся ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ rho, theta ΠΈ distance Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚ΠΈΠΏΠ° REAL Π²ΠΎ всСх Ρ‚Ρ€Π΅Ρ… случаях, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΎ Π² ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡΡ… Π²ΠΈΠ΄Π°


rho: REAL is ...


Π­Ρ‚ΠΎ опрСдСляСт ΠΈΡ… ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π”Π²Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, translate ΠΈ scale, Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° (объявлСниС Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ конструкциСй: T, Π³Π΄Π΅ T Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΈΠΏ) ΠΈ, соотвСтствСнно, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ x ΠΈ y ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ, Π° rho ΠΈ theta функциями, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ класс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для прСдставлСния Ρ‚ΠΎΡ‡ΠΊΠΈ Π΄Π΅ΠΊΠ°Ρ€Ρ‚ΠΎΠ²Ρƒ систСму ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

Π’Π΅Π»ΠΎ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡƒ

Π’Π΅Π»ΠΎ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ do) прСдставляСт собой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ инструкций. МоТно Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ инструкции ΠΈ объявлСния Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой Π² традициях Algol-Pascal, Π½ΠΎ это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π”Π°Π»Π΅Π΅ с Ρ†Π΅Π»ΡŒΡŽ упрощСния Ρ‚ΠΎΡ‡ΠΊΠ° с запятой Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ элСмСнтами Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… строках, Π½ΠΎ всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… инструкций ΠΈΠ»ΠΈ объявлСний Π² ΠΎΠ΄Π½ΠΎΠΉ строкС. (Π‘ΠΌ. "Π’ΠΎΠΉΠ½Π° Π²ΠΎΠΊΡ€ΡƒΠ³ Ρ‚ΠΎΡ‡Π΅ΠΊ с запятой", лСкция 8 курса "ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования")

Π’ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… класса POINT всС инструкции ΡΠ²Π»ΡΡŽΡ‚ΡΡ присваиваниями Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π’ Π΄Π°Π½Π½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ для обозначСния присваивания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ символ ":=" Ρ‚Π°ΠΊΠΆΠ΅ слСдуя соглашСниям, принятым Π² Algol ΠΈ Pascal. Π­Ρ‚ΠΎΡ‚ символ нСльзя ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с символом равСнства "=", примСняСмым, ΠΊΠ°ΠΊ ΠΈ Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, Π² опСрациях сравнСния.

Π”Ρ€ΡƒΠ³ΠΎΠ΅ соглашСниС ΠΎ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ касаСтся использования коммСнтария ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡƒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π£ΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с Π΄Π²ΡƒΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΡ€Π΅ "--". Они ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² любом мСстС, Π³Π΄Π΅, ΠΏΠΎ мнСнию Π°Π²Ρ‚ΠΎΡ€Π°, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡƒΡ‚ принСсти ΠΏΠΎΠ»ΡŒΠ·Ρƒ. ΠžΡΠΎΠ±ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ ΠΈΠ³Ρ€Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡƒ (header comment). Π’ соотвСтствии с ΠΎΠ±Ρ‰ΠΈΠΌ стилСвым ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ послС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова is с отступом ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ класса POINT. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡƒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.