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

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

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

Бсылка остаСтся пустой, ΠΏΠΎΠΊΠ° Π½Π°Π΄ Π½Π΅ΠΉ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ дСйствия, - Ρ‚Π°ΠΊΠΎΠ²ΠΎ ΠΎΠ±Ρ‰Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ссылки ΠΌΠΎΠΆΠ½ΠΎ, создав, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π’ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ make_book это дСлаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


make_book is

-- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° BOOK3 ΠΈ присоСдинСниС Π΅Π³ΠΎ ΠΊ source.

do

create source

end


Π­Ρ‚ΠΎ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ инструкции создания: create x , Π³Π΄Π΅ x - Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ (enclosing) класса ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅, локальная ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π”Π°Π»Π΅Π΅ эта базовая нотация Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π°.

Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ x, имСнованная Π² инструкции (Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ source), называСтся Ρ†Π΅Π»ΡŒΡŽ (target) инструкции создания.

Данная Ρ„ΠΎΡ€ΠΌΠ° извСстна ΠΊΠ°ΠΊ "базовая инструкция создания". Другая Ρ„ΠΎΡ€ΠΌΠ°, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ класса, скоро появится. Π’ΠΎΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ дСйствия Π±Π°Π·ΠΎΠ²ΠΎΠΉ инструкции создания:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±Π°Π·ΠΎΠ²ΠΎΠΉ инструкции создания

Π­Ρ„Ρ„Π΅ΠΊΡ‚ инструкции создания Π²ΠΈΠ΄Π° create x , Π³Π΄Π΅ Ρ‚ΠΈΠΏ Ρ†Π΅Π»ΠΈ x являСтся ссылочным Ρ‚ΠΈΠΏΠΎΠΌ, основанном Π½Π° классС C, состоит Π² Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ‚Ρ€Π΅Ρ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… дСйствий:

[x]. (C1) Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ экзСмпляра C(Π½Π°Π±ΠΎΡ€Π° ΠΏΠΎΠ»Π΅ΠΉ, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ C). ΠŸΡƒΡΡ‚ΡŒ OC - это Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр.

[x]. (C2) Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ поля OC ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ стандартными значСниями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

[x]. (C3) ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ значСния x (ссылки) ΠΊ OC.

На этапС C1 создаСтся экзСмпляр C. На этапС C2 ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ значСния всСх ΠΏΠΎΠ»Π΅ΠΉ, зависящиС ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°:

ЗначСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Для ссылок Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - пустая ссылка.

Для ΠΏΠΎΠ»Π΅ΠΉ BOOLEAN Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - False.

Для ΠΏΠΎΠ»Π΅ΠΉ CHARACTER Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - символ null.

Для чисСл (Ρ‚ΠΈΠΏΠΎΠ² INTEGER, REAL ΠΈΠ»ΠΈ DOUBLE) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - ноль Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ Π΄Π°Π½Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ прСдставлСнии.

Π˜Ρ‚Π°ΠΊ, для Ρ†Π΅Π»ΠΈ source Ρ‚ΠΈΠΏΠ° BOOK3 Π² соотвСтствии с объявлСниСм класса


class BOOK3 feature

title: STRING

date, page_count: INTEGER

author: WRITER

end


Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ инструкции создания create source, выполняСмой ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ make_book класса QUOTATION, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΉ Π½Π° рис.8.10.

Рис. 8.10.  Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚

ПослС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ значСния цСлочислСнных ΠΏΠΎΠ»Π΅ΠΉ Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ. БсылочноС ΠΏΠΎΠ»Π΅ author ΠΈ ΠΏΠΎΠ»Π΅ title Ρ‚ΠΈΠΏΠ° STRING, содСрТат пустыС ссылки. Π’ΠΈΠΏ STRING, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ говорится Π² ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, двойствСнСн, - фактичСски являясь ссылочным Ρ‚ΠΈΠΏΠΎΠΌ, ΠΎΠ½ рассматриваСтся Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ситуациях ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ. (О строках см. Π»Π΅ΠΊΡ†ΠΈΡŽ 13)

ΠžΠ±Ρ‰Π°Ρ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π°

Π’Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ происходящих событий. Для рассмотрСнного Π²Ρ‹ΡˆΠ΅ экзСмпляра BOOK3 происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

[x]. (B1) Π‘ΠΎΠ·Π΄Π°Π½ экзСмпляр QUOTATION. ΠŸΡƒΡΡ‚ΡŒ Q_OBJ - этот экзСмпляр ΠΈ имССтся ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ a, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ссылка, присоСдинСнная ΠΊ Q_OBJ.

[x]. (B2) Бпустя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя послС B1 Π²Ρ‹Π·ΠΎΠ² Π²ΠΈΠ΄Π° a.make_book ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ make_book с Q_OBJ Π² качСствС Ρ†Π΅Π»ΠΈ.

ΠŸΡ€Π°Π²ΠΎΠΌΠ΅Ρ€Π΅Π½ вопрос - ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ создан сам Q_OBJ (шаг B1)? Π­Ρ‚ΠΎ, оставляя ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΎΡ‚ΠΎΠ΄Π²ΠΈΠ³Π°Π΅Ρ‚ Π΅Π΅ Π²Π³Π»ΡƒΠ±ΡŒ. Но ΠΊ этому ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ ΠΌΡ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° этот вопрос: всС возвращаСтся ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ - Π‘ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ Π’Π·Ρ€Ρ‹Π²Ρƒ. Для выполнСния систСмы Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ½Π°Π±Π΄ΠΈΡ‚ΡŒ Π΅Π΅ ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ классом ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ этого класса, Π½Π°Π·Π²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ создания. Π’ Π½Π°Ρ‡Π°Π»Π΅ выполнСния автоматичСски создаСтся ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ - ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ - экзСмпляр ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ класса. ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся СдинствСнным ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Π½Π΅ создаваСмым инструкциями ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ тСкста; ΠΎΠ½ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ·Π²Π½Π΅, ΠΊΠ°ΠΊ objectus ex machine (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΡ‚ ΠΌΠ°ΡˆΠΈΠ½Ρ‹). Начав с ΠΎΠ΄Π½ΠΎΠ³ΠΎ, ΠΏΡ€ΠΎΠ²ΠΈΠ΄Π΅Π½ΠΈΠ΅ΠΌ посланного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π΄Π°Π»Π΅Π΅ ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ инструкции создания. ΠŸΠ΅Ρ€Π²ΠΎΠΉ выполняСмой ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ являСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° создания, автоматичСски примСняСмая ΠΊ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. НС всСгда, Π½ΠΎ Ρ‡Π°Ρ‰Π΅ всСго ΠΎΠ½Π° содСрТит ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½Ρƒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ создания, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ Π½Π°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Π³Ρ€Π°Π½Π΄ΠΈΠΎΠ·Π½ΠΎΠ³ΠΎ Ρ„Π΅ΠΉΠ΅Ρ€Π²Π΅Ρ€ΠΊΠ°, процСсса, ΡΠΎΠ·Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², сколько Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ.

Для Ρ‡Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явноС созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²?

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ОбъявлСниС сущности


b: BOOK3


Π½Π΅ Π²Π»Π΅Ρ‡Π΅Ρ‚ Π·Π° собой созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²ΠΎ врСмя выполнСния, это происходит, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΊΠΈΠΉ элСмСнт систСмы Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ


create b


Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π Π°Π·Π²Π΅ объявлСния b нСдостаточно для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°? Π§Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ Π² объявлСнии, Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ создаСтся?

Достаточно ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ Ρ€Π°Π·ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ для понимания Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ объявлСния ΠΈ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° являСтся СдинствСнно Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - reductio ad absurdum (Π΄ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎ абсурда). ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°Ρ‡Π°Ρ‚Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° объявлСния ΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ создаСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Но это экзСмпляр класса BOOK3, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ author ссылочного Ρ‚ΠΈΠΏΠ° WRITER, Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΠΎΠ»Π΅ author - ссылка, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π­Ρ‚ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ вновь содСрТит ссылочныС поля, трСбуСтся ΠΎΠΏΡΡ‚ΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΈ начинаСтся Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ рСкурсивного создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π­Ρ‚ΠΎΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅Π»Π΅Π½ для Ρ‚Π°ΠΊΠΈΡ… классов ΠΊΠ°ΠΊ PERSON1, содСрТащих ссылки Π½Π° сСбя:


class PERSON1 feature

name: STRING

loved_one, landlord: PERSON1

end


ПоявлСниС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ экзСмпляра PERSON1 ΠΏΠΎΠ²Π»Π΅Ρ‡Π΅Ρ‚ Π·Π° собой созданиС Π΄Π²ΡƒΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… loved_one ΠΈ landlord ) ΠΈ начнСтся бСсконСчный Ρ†ΠΈΠΊΠ». Π’Π°ΠΊΠΈΠ΅ прямыС ΠΈΠ»ΠΈ косвСнныС цикличСскиС ссылки Π½Π΅ экзотика - ΠΎΠ½ΠΈ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹.

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ слСдуСт ΠΈΠ· обсуТдСния Ρ€ΠΎΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° модСлирования. Если для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ссылочного поля Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‚ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ возмоТности Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ пустыС ссылки ΠΈ мноТСствСнныС ссылки Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. И Ρ‚ΠΎ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для рСалистичного модСлирования систСм:

[x]. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях трСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ссылка Π½Π΅ Π±Ρ‹Π»Π° связана Π½ΠΈ с ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ пустая ссылка author для обозначСния нСизвСстного Π°Π²Ρ‚ΠΎΡ€Π°.

[x]. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… случаях, Π² соотвСтствии с модСлью Π΄Π²Π΅ ссылки Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ присоСдинСны ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. (Π‘ΠΌ. рис.8.7) Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с цикличСскими ссылками присутствовали поля loved_one Π΄Π²ΡƒΡ… пСрсон PERSON1, присоСдинСнныС ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. НС ΠΈΠΌΠ΅Π»ΠΎ Π±Ρ‹ смысла созданиС своСго ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· этих ΠΏΠΎΠ»Π΅ΠΉ. ВсС, Ρ‡Ρ‚ΠΎ трСбуСтся, - это опСрация присваивания (рассмотрСна Π΄Π°Π»Π΅Π΅ Π² этой Π»Π΅ΠΊΡ†ΠΈΠΈ) для присоСдинСния ссылки ΠΊ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. Π’ Π΅Ρ‰Π΅ большСй стСпСни это сообраТСниС ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ для ссылки Π½Π° сСбя (ΠΏΠΎΠ»Π΅ landlord Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅).

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ управлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ присоСдиняСт ссылку нСявно. Он создаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· инструкции создания (ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ клонирования, Ρ‚ΠΎΠΆΠ΅ явныС), инициализируя ΠΈΡ… ссылочныС поля пустыми ссылками. Π­Ρ‚ΠΈ поля, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒ присоСдинСнными ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ явных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ этими полями.

Π’ дискуссии ΠΎ наслСдовании Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ инструкция создания ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ синтаксис create {T}x для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‡Π΅ΠΉ Ρ‚ΠΈΠΏ T являСтся наслСдником Ρ‚ΠΈΠΏΠ° объявлСнного для x. (ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠ΅ созданиС, см.Π»Π΅ΠΊΡ†ΠΈΡŽ 14)

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ создания

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

ΠŸΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Для использования ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΠ΅ΠΌ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ класс ΡΠ½Π°Π±Π΄ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ нСсколькими ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ создания. Π’Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ пСрСчислСны Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом creation Π² Π½Π°Ρ‡Π°Π»Π΅ класса ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ feature. Π‘Ρ…Π΅ΠΌΠ° Ρ‚Π°ΠΊΠΎΠ²Π°: