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

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

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

-- Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ c Π² ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°.

require

write_open: open_for_write

external

"C" alias "_char_write";

ensure

one_more: count = old count + 1

end



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

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹

ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ случаСв ΠΈ достаточСн для Ρ†Π΅Π»Π΅ΠΉ описания нашСй ΠΊΠ½ΠΈΠ³ΠΈ. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ уточнСния:

[x]. НСкоторыС внСшниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ элСмСнты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ макросами. Они ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΈΠ΄ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² ОО-ΠΌΠΈΡ€Π΅, Π½ΠΎ любой ΠΈΡ… Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ вставку Ρ‚Π΅Π»Π° макроса Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ Π²Ρ‹Π·ΠΎΠ²Π°. Π­Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠ΅ΠΉ ΠΈΠΌΠ΅Π½ΠΈ языка (ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "C:[macro]...").

[x]. НСобходимо Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΠ· "динамичСски присоСдиняСмых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ" (DLL), доступных Π² Windows ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° DLL загруТаСтся динамичСски Π²ΠΎ врСмя ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°. Имя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ динамичСски Π² ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ выполнСния. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° DLL Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ способ статичСской спСцификации ΠΈΠΌΠ΅Π½ΠΈ, Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ динамичСский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… классов DYNAMIC_LIBRARY ΠΈ DYNAMIC_ROUTINE. Π­Ρ‚ΠΈ классы ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ врСмя выполнСния, создавая ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ динамичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

[x]. НСобходима ΠΈ связь Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΌΡƒ ПО ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. НапримСр, графичСской систСмС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° (callback mechanism), Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ класса.

ВсС эти возмоТности ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ОО-срСдС, описанной Π² послСднСй Π»Π΅ΠΊΡ†ΠΈΠΈ. Однако ΠΈΡ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ обсуТдСниС - это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€.

ИспользованиС Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ОО-ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, помогая ΡΠΎΡ‡Π΅Ρ‚Π°Ρ‚ΡŒ староС ПО с Π½ΠΎΠ²Ρ‹ΠΌ. Π›ΡŽΠ±ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ проСктирования ПО, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, написанный Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках. Π’Ρ€ΡƒΠ΄Π½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ всСго ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ПО, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ с этой ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ начинаСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС.

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΡΡ‚ΡŒ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΌΠΈΡ€Ρƒ - Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ скромности: Π°Π²Ρ‚ΠΎΡ€Ρ‹ Π½ΠΎΠ²Ρ‹Ρ… инструмСнтов Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ Ρ€Π°Π½Π΅Π΅ имСвшимся возмоТностям.

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

Π­Ρ‚Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° обСспСчиваСт ясный интСрфСйс ΠΌΠ΅ΠΆΠ΄Ρƒ ОО-ΠΌΠΈΡ€ΠΎΠΌ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°ΠΌΠΈ. Для ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² внСшняя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° - это просто ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° Π‘ _char_write ΠΎΠ±Ρ€Π΅Π»Π° статус ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (feature) класса, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π° прСдусловиСм ΠΈ постусловиСм ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° стандартноС имя put. ВозмоТности, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ ΠΎΠΏΠΈΡ€Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° Π½Π΅ ОО-ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π½ΠΎΠ²ΡƒΡŽ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ абстрактных Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ участники ОО-ΠΌΠΈΡ€Π° Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠ°ΠΊ Π·Π°ΠΊΠΎΠ½Π½Ρ‹Ρ… Π³Ρ€Π°ΠΆΠ΄Π°Π½ сообщСства, ΠΈ ΠΈΡ… Π½ΠΈΠ·ΠΊΠΎΠ΅ происхоТдСниС Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ упоминаСтся Π² "изысканном общСствС". ("Π˜Π·Ρ‹ΡΠΊΠ°Π½Π½ΠΎΠ΅ общСство" Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ бСсклассовоС.)

ОО-ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ (re-architecturing)

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

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

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

Π­Ρ‚Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ ОО-пСрСстройкой (object-oriented re-architecturing) Π΄Π°Π΅Ρ‚ интСрСсноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ сохранСния Ρ†Π΅Π½Π½Ρ‹Ρ… свойств ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ПО, готовя Π΅Π³ΠΎ ΠΊ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌΡƒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡŽ ΠΈ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ.

Однако для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ условия:

[x]. НСобходимо ΡΡƒΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ абстракции для старого ПО, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‡ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»ΠΎ с абстракциями Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° Π½Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Но Π² этом ΠΈ состоит Π·Π°Π΄Π°Ρ‡Π° - ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ старыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π½ΠΎΠ²Ρ‹Π΅ классы. Если с Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ абстракций Π½Π΅ удастся ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ, Ρ‚ΠΎ никакая ОО-пСрСстройка Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚.

[x]. НаслСдуСмоС ПО Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ качСства. ΠŸΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΠΎΠ΅ ΡΡ‚Π°Ρ€ΡŒΠ΅ остаСтся ΡΡ‚Π°Ρ€ΡŒΠ΅ΠΌ - Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ…ΡƒΠΆΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ скрыто ΠΏΠΎΠ΄ слоями абстракции.

Π­Ρ‚ΠΈ Π΄Π²Π° трСбования частично сходны, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ качСство любого ПО Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни опрСдСляСтся качСством Π΅Π³ΠΎ структуры.

Когда ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшний ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для построСния интСрСсного ОО-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, основанного Π½Π° ΠΏΡ€Π΅ΠΆΠ½ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ…. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ срСды, описанной Π² послСднСй Π»Π΅ΠΊΡ†ΠΈΠΈ.

[x]. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Vision (Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π»Π΅ΠΊΡ†ΠΈΠΈ 14 курса "ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования") Π΄Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΡƒΡŽ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ графичСскиС прилоТСния для ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ с ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ пСрСкомпиляции. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅, ΠΎΠ½Π° основана Π½Π° "Ρ€ΠΎΠ΄Π½Ρ‹Ρ…" ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π²ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Π’ΠΎΡ‡Π½Π΅Π΅, Π΅Π΅ Π½ΠΈΠΆΠ½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ инкапсулируСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ.

[x]. Другая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Math, обСспСчиваСт ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ€ возмоТностСй числСнных вычислСний Π² Ρ‚Π°ΠΊΠΈΡ… областях ΠΊΠ°ΠΊ тСория вСроятностСй, статистика, числСнноС ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ ΠΈ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ уравнСния, Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ уравнСния, оптимизация, быстроС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π€ΡƒΡ€ΡŒΠ΅, Π°Π½Π°Π»ΠΈΠ· Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ ΠΎΠ½Π° основана Π½Π° коммСрчСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ NAG ΠΎΡ‚ Nag Ltd., Oxford, Π½ΠΎ обСспСчиваСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ОО-интСрфСйс. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° скрываСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Сю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ абстрактныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, понятныС ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΡƒ, Ρ„ΠΈΠ·ΠΈΠΊΡƒ ΠΈΠ»ΠΈ экономисту, прСдставлСнныС классами: INTEGRATOR, BASIC_MATRIX, DISCRETE_FUNCTION, EXPONENTIAL_DISTRIBUTION. ΠŸΡ€Π΅ΠΊΡ€Π°ΡΠ½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‚ΡΡ благодаря качСству Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ - NAG Π°ΠΊΠΊΡƒΠΌΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ сотни Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎ-Π»Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ числСнных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². К Π½Π΅ΠΌΡƒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ОО-прСимущСства: классы, скрытиС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, мноТСствСнноС наслСдованиС, утвСрТдСния, систСматичСская ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок Ρ‡Π΅Ρ€Π΅Π· ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ситуации, согласованноС ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅.

Π­Ρ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ для сочСтания Π»ΡƒΡ‡ΡˆΠΈΡ… Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

Вопрос совмСстимости: Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΈΠ»ΠΈ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹Π΅ языки?

ВСорСтичСски, ΠΌΠ°Π»ΠΎ ΠΊΡ‚ΠΎ Π½Π΅ согласится с ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ скромности ΠΈΠ»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ОО-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌΠΈ ΠΈ старым ПО. ΠŸΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° выбираСтся ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ.

МногиС языки - самыми извСстными ΡΠ²Π»ΡΡŽΡ‚ΡΡ Objective-C, C++, Java, Object Pascal ΠΈ Ada 95 - пошли ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ добавлСния ОО-конструкций Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΠΉ Π½Π΅ ОО-язык. Они извСстны ΠΊΠ°ΠΊ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹Π΅ языки (hybrid languages) - см. Π»Π΅ΠΊΡ†ΠΈΡŽ 17 курса "ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования".

Π’Π΅Ρ…Π½ΠΈΠΊΠ° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ, описанная Π²Ρ‹ΡˆΠ΅, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°Π»Π°ΡΡŒ Π½Π° Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈ ОО-пСрСстройкС. Π­Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ: Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² совмСстимости ПО Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ языка ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ, ΠΌΠΎΠ³ΡƒΡ‰ΠΈΠΌΠΈ Ρ€Π°ΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ с ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.