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

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

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

ΠŸΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»

Из рассмотрСнных ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΏΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ:

[x]. ΠŸΡ€ΡΠΌΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (Direct Mapping).

[x]. ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ интСрфСйсов (Few Interfaces).

[x]. Блабая ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ интСрфСйсов (Small interfaces - weak coupling).

[x]. Π―Π²Π½Ρ‹Π΅ интСрфСйсы (Explicit Interfaces).

[x]. Π‘ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (инкапсуляция) (Information Hiding).

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ касаСтся ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ внСшнСй систСмой ΠΈ ПО. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΊΠ°ΡΠ°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ - ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой. Для получСния Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ управляСмый ΠΈ строгий ΠΌΠ΅Ρ‚ΠΎΠ΄ обСспСчСния ΠΌΠ΅ΠΆΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… связСй.

ΠŸΡ€ΡΠΌΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

Π›ΡŽΠ±Π°Ρ прикладная систСма стрСмится ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ потрСбности Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΉ области. Если имССтся Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ модСль для описания этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΉ области, Ρ‚ΠΎ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ структуры ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ описываСмой модСлью Π½Π° структуру систСмы. Из этого слСдуСт ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ:

ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ структура, создаваСмая Π² процСссС конструирования ПО, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ совмСстимой с ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ структурой, создаваСмой Π² процСссС модСлирования ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΉ области.

Π­Ρ‚Π° рСкомСндация слСдуСт, Π² частности, ΠΈΠ· Π΄Π²ΡƒΡ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

[x]. ΠΠ΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΡΡ‚ΡŒ: отслСТиваниС ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ структуры ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² структурС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ ΠΎΡ†Π΅Π½ΠΊΡƒ ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ послСдствия ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

[x]. ДСкомпозиция: Ссли ΡƒΠΆΠ΅ Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½Π° нСкоторая Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Π°Π½Π°Π»ΠΈΠ·Ρƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ структуры ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΉ области, Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ²ΠΈΡ‚ΡŒΡΡ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ для разбиСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ интСрфСйсов

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ ΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠ° Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠΎΠ² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Ρ‰Π΅Π΅ число ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»ΠΎΠ², ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»ΠΈ систСмы:

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ связь с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ мСньшим числом Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

Бвязь ΠΌΠ΅ΠΆΠ΄Ρƒ модулями ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами. ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° (Ссли ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ), совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ ΠœΠΈΠ½ΠΈΠΌΡƒΠΌΠ° Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠΎΠ² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ число Ρ‚Π°ΠΊΠΈΡ… связСй.

Рис. 3.7.  Π’ΠΈΠ΄Ρ‹ структур ΠΌΠ΅ΠΆΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… связСй

Π’ систСмС, составлСнной ΠΈΠ· n ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, число ΠΌΠ΅ΠΆΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… связСй Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ n-1, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС (A), Ρ‡Π΅ΠΌ ΠΊ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ n (n - 1)/2, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС (B).

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

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ (A) Π½Π° послСднСм рисункС ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ минимального числа связСй, n-1, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ вСсьма Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ структуры: ΠΎΠ΄ΠΈΠ½ основной ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π½ΠΈΠΌ. Но ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ "дСмократичСскиС" структуры, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ (C), содСрТащиС ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ число связСй. Π’ этой схСмС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ нСпосрСдствСнно общаСтся с двумя блиТайшими сосСдями, Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ власти здСсь Π½Π΅Ρ‚. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ каТСтся сначала Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π½Π΅ согласуСтся с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ модСлью нисходящСго проСктирования. Но ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ, Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌ. Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΈΠ΄ структуры, ΠΊ созданию ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚ΡŒΡΡ ОО-ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈ Π΅Π³ΠΎ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ.

Блабая ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ интСрфСйсов

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Π‘Π»Π°Π±ΠΎΠΉ связности интСрфСйсов относится ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π° Π½Π΅ ΠΊ числу связСй:

Если Π΄Π²Π° модуля ΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой, Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ мСньшим объСмом ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π˜Π½ΠΆΠ΅Π½Π΅Ρ€-элСктрик сказал Π±Ρ‹, Ρ‡Ρ‚ΠΎ ΠΊΠ°Π½Π°Π»Ρ‹ связи ΠΌΠ΅ΠΆΠ΄Ρƒ модулями Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ полосу пропускания:

Рис. 3.8.  ΠšΠ°Π½Π°Π» связи ΠΌΠ΅ΠΆΠ΄Ρƒ модулями

Π’Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π‘Π»Π°Π±ΠΎΠΉ связности интСрфСйсов слСдуСт, Π² частности, ΠΈΠ· ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² нСпрСрывности ΠΈ защищСнности.

Особо ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся конструкция ΠΈΠ· языка Fortran, знакомая Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ читатСлям ΠΊΠ°ΠΊ "ΠΎΠ±Ρ‰ΠΈΠΉ Π±Π»ΠΎΠΊ для мусора" ("garbage common block"). ΠžΠ±Ρ‰ΠΈΠΌ Π±Π»ΠΎΠΊΠΎΠΌ Π² Fortran'Π΅ являСтся Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π²ΠΈΠ΄Π°:


COMMON /ΠΎΠ±Ρ‰Π΅Π΅_имя/ пСрСмСнная1 : пСрСмСннаяn.


ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, пСрСчислСнныС Π² Π±Π»ΠΎΠΊΠ΅, доступны Π²ΠΎ всСх модулях, содСрТащих Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ COMMON с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΎΠ±Ρ‰ΠΈΠΌ_ΠΈΠΌΠ΅Π½Π΅ΠΌ. НСрСдко Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Fortran'Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ содСрТит ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ COMMON с пСрСчислСниСм всСх сущСствСнных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ массивов, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ нСпосрСдствСнно ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

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

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ языками с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ структурами, ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ затруднСния. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π±Π»ΠΎΡ‡Π½ΠΎΠΉ структуры, Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π² языкС Algol ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ, Π² Π±ΠΎΠ»Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅, Π² языкС Pascal, ΠΌΠΎΠΆΠ½ΠΎ "Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ" Π±Π»ΠΎΠΊΠΈ, содСрТащиСся Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°Ρ€ begin ... end, Π²Π½ΡƒΡ‚Ρ€ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ². К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π»ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ свои собствСнныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ смысл лишь Π² синтаксичСском контСкстС (syntactic scope) этого Π±Π»ΠΎΠΊΠ°. НапримСр:


local -- Начало Π±Π»ΠΎΠΊΠ° B1

x, y: INTEGER

do

... ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π±Π»ΠΎΠΊΠ° B1 ...

local -- Начало Π±Π»ΠΎΠΊΠ° B2

z: BOOLEAN

do

... ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π±Π»ΠΎΠΊΠ° B2 ...

end -- ΠšΠΎΠ½Π΅Ρ† Π±Π»ΠΎΠΊΠ° B2

local -- Начало Π±Π»ΠΎΠΊΠ° B3

y, z: INTEGER

do

... ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π±Π»ΠΎΠΊΠ° B3 ...

end -- ΠšΠΎΠ½Π΅Ρ† Π±Π»ΠΎΠΊΠ° B3

... ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π±Π»ΠΎΠΊΠ° B1 (ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅) ...

end -- ΠšΠΎΠ½Π΅Ρ† Π±Π»ΠΎΠΊΠ° B1


ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ x доступна для всСх ΠΊΠΎΠΌΠ°Π½Π΄ Π² этом Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ области дСйствия Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с ΠΈΠΌΠ΅Π½Π΅ΠΌ z (ΠΎΠ΄Π½Π° Ρ‚ΠΈΠΏΠ° BOOLEAN, другая Ρ‚ΠΈΠΏΠ° INTEGER) ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ B2 ΠΈ B3 соотвСтствСнно. Подобно x, пСрСмСнная y объявлСна Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π»ΠΎΠΊΠ° B1, Π½ΠΎ Π΅Π΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π±Π»ΠΎΠΊΠ° B3, Π³Π΄Π΅ другая пСрСмСнная с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ‚ΠΈΠΏΠΎΠΌ локально ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ самой Π±Π»ΠΈΠΆΠ½Π΅ΠΉ внСшнСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ y. Π’ Pascal'Π΅ этот Π²ΠΈΠ΄ Π±Π»ΠΎΡ‡Π½ΠΎΠΉ структуры сущСствуСт лишь для Π±Π»ΠΎΠΊΠΎΠ², связанных с ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ ΠΈ функциями).3.4)

ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π±Π»ΠΎΡ‡Π½ΠΎΠΉ структуры, эквивалСнтом "мусорного" ΠΎΠ±Ρ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ° Fortran'Π° являСтся объявлСниС всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π° самом Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ (глобальном) ΡƒΡ€ΠΎΠ²Π½Π΅. Π’ языках Π½Π° основС языка Π‘ Ρ‚Π°ΠΊΠΈΠΌ эквивалСнтом являСтся объявлСниС всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… внСшними (external). (О кластСрах см. Π»Π΅ΠΊΡ†ΠΈΠΈ 10 курса "ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования". ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° влоТСнности рассматриваСтся Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ "АрхитСктурная Ρ€ΠΎΠ»ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ³ΠΎ экспорта (selective exports)".)

ИспользованиС Π±Π»ΠΎΡ‡Π½ΠΎΠΉ структуры являСтся ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ, Π½ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π‘Π»Π°Π±ΠΎΠΉ связности Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠΎΠ². По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²ΠΎΠ·Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ примСнСния Π΅Π΅ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Π΄Π°Π»Π΅Π΅ Π² этом курсС. Π―Π·Ρ‹ΠΊ Simula - ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ориСнтированная производная ΠΎΡ‚ Algol'Π° - ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±Π»ΠΎΡ‡Π½ΡƒΡŽ структуру классов. ΠžΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы являСтся излишнСй ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… возмоТностСй, обСспСчиваСмых ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ наслСдования. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния содСрТит Ρ‚Ρ€ΠΈ уровня: систСма являСтся Π½Π°Π±ΠΎΡ€ΠΎΠΌ кластСров; кластСр являСтся Π½Π°Π±ΠΎΡ€ΠΎΠΌ классов; класс являСтся Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² (attributes) ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (routines)). ΠšΠ»Π°ΡΡ‚Π΅Ρ€Ρ‹ скорСС ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ срСдство, Ρ‡Π΅ΠΌ лингвистичСская конструкция, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎ позволяСт Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ систСму Π½Π° любоС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ число ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ; Π½ΠΎ классы, ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΡƒΡŽ ΠΏΠ»ΠΎΡΠΊΡƒΡŽ (flat) структуру, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ Π½Π° любом ΠΈΠ· этих ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΈΠ·Π»ΠΈΡˆΠ½Π΅ΠΌΡƒ ΡƒΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡŽ.

Π―Π²Π½Ρ‹Π΅ интСрфСйсы

Π§Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ являСтся Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ шагом ΠΊ ΡƒΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΡŽ Ρ‚ΠΎΡ‚Π°Π»ΠΈΡ‚Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° Π² общСствС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ: трСбуСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡŽΠ±Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π³ΠΎΠ²ΠΎΡ€Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΈΡΡŒ лишь нСсколькими участниками ΠΈ Π±Ρ‹Π»ΠΈ нСмногословными; Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π³ΠΎΠ²ΠΎΡ€Ρ‹ Π±Ρ‹Π»ΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΈ гласными!