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

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

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

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


ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ поля

Оба Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° класса POINT относятся ΠΊ Ρ‚ΠΈΠΏΡƒ REAL. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ поля прямого экзСмпляра POINT содСрТат Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ»Π΅ΠΉ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· "Π±Π°Π·ΠΎΠ²Ρ‹Ρ…" Ρ‚ΠΈΠΏΠΎΠ². Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ эти Ρ‚ΠΈΠΏΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ классы, Π° ΠΈΡ… экзСмпляры ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ значСния ΠΈΠ· ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ². К Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ (ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ, встроСнным)Ρ‚ΠΈΠΏΠ°ΠΌ относятся:

[x]. BOOLEAN, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… экзСмпляра, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌ значСниям true ΠΈ false;

[x]. CHARACTER, экзСмпляры ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ символы;

[x]. INTEGER, экзСмпляры ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ†Π΅Π»Ρ‹Π΅ числа;

[x]. REAL ΠΈ DOUBLE, экзСмпляры ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности.

Π’ΠΈΠΏ STRING, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ символов, Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС рассматриваСтся ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ. Π”Π°Π»Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ½ относится ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ. ("Π‘Ρ‚Ρ€ΠΎΠΊΠΈ", см. Π»Π΅ΠΊΡ†ΠΈΡŽ 13)

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° записи ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² исходных тСкстах. БоглашСния просты:

[x]. Для Ρ‚ΠΈΠΏΠ° BOOLEAN Π΄Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… экзСмпляра ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ True ΠΈ False.

[x]. ЭкзСмпляр CHARACTER Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ символ Π² апострофах: 'A'.

[x]. ЭкзСмпляр STRING обозначаСтся ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ символов Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… апострофах: "Π­Ρ‚ΠΎ строка".

[x]. Для обозначСния экзСмпляра INTEGER ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ: 34, -675, +4.

[x]. Для экзСмпляров REAL ΠΈΠ»ΠΈ DOUBLE Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ обычная нотация: 3.5 ΠΈΠ»ΠΈ -0.05, Ρ‚Π°ΠΊ ΠΈ ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ прСдставлСниС: -5.e-2.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ прСдставлСниС ΠΊΠ½ΠΈΠ³ΠΈ - класс BOOK

Рассмотрим класс с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²:


class BOOK1 feature

title: STRING

date, page_count: INTEGER

end


Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ экзСмпляр класса выглядит Ρ‚Π°ΠΊ:

Рис. 8.2.  ΠžΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΊΠ½ΠΈΠ³Ρƒ

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ нас Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ интСрСсуСт структура ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚ΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ классов Π±ΡƒΠ΄ΡƒΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ, Π° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС обсуТдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ записям ΠΈΠ»ΠΈ структурам Π² языках Pascal ΠΈ C. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ этих языков выраТаСтся Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, благодаря Π½Π°Π»ΠΈΡ‡ΠΈΡŽ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² скрытия ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ классов Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ нСпосрСдствСнно ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ значСния полям Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ Pascal ΠΈ Π² C с Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ синтаксичСскими различиями допустимо объявлСниС записи с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ присваиваниСм (Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: НСдопустимая нотация! Волько для обсуТдСния.):


b1: BOOK1

...

b1.page_count := 355


Π—Π΄Π΅ΡΡŒ Π²ΠΎ врСмя выполнСния полю page_count ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, присоСдинСнного ΠΊ b1, присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 355. Для классов такая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ допускаСтся. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ классов Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ поля ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±Ρ‹Π»ΠΎ Π±Ρ‹ насмСшкой Π½Π°Π΄ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ скрытия ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’ этом случаС тСрял Π±Ρ‹ смысл Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½Ρ‹ΠΉ экспорт, управляСмый Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ класса. Π’ ОО-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ модификация Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ допустима Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ класса, добавляСмых Π² Ρ‚ΠΎΠΌ случаС, Ссли Π°Π²Ρ‚ΠΎΡ€ класса Ρ€Π΅ΡˆΠΈΡ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ своим ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ. Π”Π°Π»Π΅Π΅ такая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π² класс BOOK1.

Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ присваиваний Π²ΠΈΠ΄Π° b1.page_count := 355 Π² C++ ΠΈ Java ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ограничСния, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°Ρ… внСдрСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π² контСкст языка C.

Π‘Π°ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Java ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ программист ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΡ€Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ общСдоступного поля, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ поля ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚Π΅ΠΌ нСпосрСдствСнного присваивания. МногиС Π°Π²Ρ‚ΠΎΡ€Ρ‹ языков вводят Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‚: "Π½Π΅ Π΄Π΅Π»Π°ΠΉΡ‚Π΅ этого". Π›ΠΎΠ³ΠΈΡ‡Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΠ΅ ограничСния.


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

ΠŸΠΈΡΠ°Ρ‚Π΅Π»ΠΈ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ Ρ‚ΠΈΠΏΡ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ класс WRITER для описания Π°Π²Ρ‚ΠΎΡ€Π° ΠΊΠ½ΠΈΠ³ΠΈ:


class WRITER feature

name, real_name: STRING

birth_year, death_year: INTEGER

end


Рис. 8.3.  ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Β«ΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΒ»

Бсылки

Π§Π°Ρ‰Π΅ всСго Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с полями, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. НапримСр, ΠΊΠ½ΠΈΠ³Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π°Π²Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставлСн экзСмпляром класса WRITER.

МоТно ввСсти понятиС ΠΏΠΎΠ΄ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии класса BOOK2 Π΅Π³ΠΎ экзСмпляры содСрТат ΠΏΠΎΠ»Π΅, ΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ - экзСмпляром класса WRITER.

Рис. 8.4.  Π”Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Β«ΠΊΠ½ΠΈΠ³Π°Β» с ΠΏΠΎΠ΄ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Β«ΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΒ»

Π’Π°ΠΊΠΎΠ΅ понятиС ΠΏΠΎΠ΄ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, нСсомнСнно, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΈ Π΄Π°Π»Π΅Π΅ Π² этой Π»Π΅ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ классы.

Но это Π½Π΅ совсСм Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ экзСмплярС BOOK2 приходится Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ Π°Π²Ρ‚ΠΎΡ€Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ΄ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ нСприСмлСмости Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

[x]. РасходуСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ. МоТно привСсти Π² качСствС Π±ΠΎΠ»Π΅Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… людСй. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² качСствС ΠΏΠΎΠ΄ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ странС граТданства. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡΠ»Π΅Π½Π½ΠΎΡΡ‚ΡŒ насСлСния Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ число стран.

[x]. Π‘ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ такая Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π½Π΅ обСспСчиваСт раздСлСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’ΠΏΠΎΠ»Π½Π΅ СстСствСнно ΠΆΠ΅Π»Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ внСсСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ WRITER ΠΏΠΎΠ²Π»Π΅ΠΊΠ»ΠΎ Π·Π° собой автоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² - ΠΊΠ½ΠΈΠ³ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΡ€Π°.

Π›ΡƒΡ‡ΡˆΠΈΠΌ являСтся Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, прСдставлСнноС Π½Π° рис.8.5 . Оно основано Π½Π° Π½ΠΎΠ²ΠΎΠΉ вСрсии класса, BOOK3.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр BOOK3 Π² ΠΏΠΎΠ»Π΅ author содСрТит ссылку (reference) Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° WRITER. НСтрудно Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅: ссылка

Бсылка это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. Она ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пустой (void) ΠΈΠ»ΠΈ присоСдинСнной (attached).

ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½Π°Ρ ссылка ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (присоСдинСна ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ).

Рис. 8.5.  Π”Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Β«ΠΊΠ½ΠΈΠ³Π°Β» со ссылками Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Β«ΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΒ»

На рис.8.5 ΠΎΠ±Π° поля author экзСмпляров BOOK3 присоСдинСны ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ экзСмпляру WRITER. Π—Π΄Π΅ΡΡŒ ΠΈ Π΄Π°Π»Π΅Π΅ ссылки, присоСдинСнныС ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ стрСлками. На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ графичСскоС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ пустой ссылки, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ нСизвСстного Π°Π²Ρ‚ΠΎΡ€Π°.

Рис. 8.6.  ΠžΠ±ΡŠΠ΅ΠΊΡ‚, содСрТащий ΠΏΡƒΡΡ‚ΡƒΡŽ ссылку (Π ΠΎΠΌΠ°Π½ «Кандид» (Candide) ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎ)

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ссылки Π½Π΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Если ссылка Π½Π΅ пуста, Ρ‚ΠΎ ΠΎΠ½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ абстрактноС имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

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

ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ссылок ΠΎΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ выраТаСтся Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. Они Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² Pascal ΠΈ Ada (Π½ΠΎ Π½Π΅ Π² C). Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ данная ссылка ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ связана Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Тизнью - ΠΊΠΎΠ΄ Π³ΠΎΡ€ΠΎΠ΄Π° ΠΈΠΌΠ΅Π΅Ρ‚ смысл Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π±ΠΎΡ€Π΅ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹Ρ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ². Он ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅, Π½ΠΎ Π½ΠΈΠΊΠΎΠΌΡƒ Π½Π΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄Ρ‹.