Π‘Π°ΠΊΠ°Π»Π°Π²Ρ€
Π”ΠΈΠΏΠ»ΠΎΠΌΠ½Ρ‹Π΅ ΠΈ курсовыС Π½Π° Π·Π°ΠΊΠ°Π·

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° «Поисковая систСма Π½Π° основС Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Β»

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Абстракция — Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ это ΠΏΡ€ΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ характСристик, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΎΡ‚ Π²ΡΠ΅Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‡Π΅Ρ‚ΠΊΠΎ опрСдСляя Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹. Основная идСя состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ способ использования составных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ Π±ΠΎΠ»Π΅Π΅ простых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ абстракция раздСляСт способ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° «Поисковая систСма Π½Π° основС Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Β» (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅
  • 1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ
  • 2. ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ тСория
    • 2.1 ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования
    • 2.2 ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ сохраняСмости
    • 2.3 ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования
  • 3. Π₯ΠΎΠ΄ выполнСния
    • 3.1 Π’Ρ‹Π±ΠΎΡ€ языка программирования ΠΈ ΡΡ€Π΅Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прилоТСния
    • 3.2 РСализация основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ООП
    • 3.3 РСализация ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°
    • 3.4 ИспользованиС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° сохраняСмости
    • 3.5 ОписаниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса
  • Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
  • Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А. Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

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

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ «ΠŸΠΎΠΈΡΠΊΠΎΠ²Π°Ρ систСма Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†».

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ графичСский ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс. Π―Π·Ρ‹ΠΊΠΈ программирования — C++, C#, Java, PHP5.

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ трСбования:

— ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 2 основных «ΠΊΠΈΡ‚Π°»);

— ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° сохраняСмости;

— ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° проСктирования.

2. ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ тСория

3.1 ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования

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

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ — свойство языка программирования, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ?), Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π½ΠΈΠΌ посрСдством прСдоставляСмого интСрфСйса (ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Ρ‡Π»Π΅Π½ΠΎΠ²), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΈ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½Ρ‹Π΅ для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π΄Π°Π½Π½Ρ‹Π΅. ΠŸΡ€ΠΈ этом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ прСдоставляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ спСцификация (интСрфСйс) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· этот интСрфСйс. РСализуСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова: public. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. РСализуСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов: private, protected, internal. Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (наряду с Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΠ΅ΠΉ, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ). Π‘ΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ цСлСсообразно ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… случаях: ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½Π°Ρ локализация ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ нСобходимости Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π² ΠΊΠΎΠ΄Π΅ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ для Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ измСнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ) ΠΈ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ послСдствий ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

НаслСдованиС — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (наряду с ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΠ΅ΠΉ, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ ΠΈ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΠ΅ΠΉ), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ класс Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ), ΠΏΡ€ΠΈ этом свойства ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Π·Π°ΠΈΠΌΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹ΠΌ классом. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, класс-наслСдник Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ класса (Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс). Π­Ρ‚ΠΎ позволяСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ класса-наслСдника Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ наслСдованиС Класс, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ наслСдованиС, называСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΈΠ»ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ (Π°Π½Π³Π». base class). ΠšΠ»Π°ΡΡΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ, наслСдниками ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ классами (Π°Π½Π³Π». derived class). Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ абстрактныС классы.

Абстрактный класс — это класс, содСрТащий хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΎΠ½ ΠΎΠΏΠΈΡΠ°Π½ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΈΠΌΠ΅Π΅Ρ‚ поля, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для нСпосрСдствСнного создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡ‚ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ‚Π½ΠΎΠ³ΠΎ класса ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов, наслСдованных ΠΎΡ‚ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ‚Π½ΠΎΠ³ΠΎ. НапримСр, абстрактным классом ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс «ΡΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊ Π²ΡƒΠ·Π°», ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ классы «Π°ΡΠΏΠΈΡ€Π°Π½Ρ‚», «ΠΏΡ€ΠΎΡ„Сссор» ΠΈ Ρ‚. Π΄. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ классы ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠ΅ поля ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»Π΅ «Π³ΠΎΠ΄ роТдСния»), Ρ‚ΠΎ ΡΡ‚ΠΈ Ρ‡Π»Π΅Π½Ρ‹ класса ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ описаны Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ классС. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ классов «Π°ΡΠΏΠΈΡ€Π°Π½Ρ‚», «ΠΏΡ€ΠΎΡ„Сссор», Π½ΠΎ Π½Π΅Ρ‚ смысла ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ класса «ΡΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊ Π²ΡƒΠ·Π°».

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС ΠŸΡ€ΠΈ мноТСствСнном наслСдовании Ρƒ ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ°. Π’ ΡΡ‚ΠΎΠΌ случаС класс наслСдуСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ всСх ΠΏΡ€Π΅Π΄ΠΊΠΎΠ². Достоинства Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΉ гибкости. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² C++. Из Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Python ΠΈ Π­ΠΉΡ„Π΅Π»ΡŒ. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС поддСрТиваСтся Π² ΡΠ·Ρ‹ΠΊΠ΅ UML. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС — ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ источник ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΈΠ·-Π·Π° наличия ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΈΠΌΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² ΠΏΡ€Π΅Π΄ΠΊΠ°Ρ…. Π’ ΡΠ·Ρ‹ΠΊΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ наслСдники C++ (Java, C# ΠΈ Π΄Ρ€.), ΠΎΡ‚ ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ³ΠΎ наслСдования Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ интСрфСйсов. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ всСгда ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· использования Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°. Однако, Ссли такая Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ всС-Ρ‚Π°ΠΊΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π°, Ρ‚ΠΎ, для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² использования наслСдованных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ видимости — «:» — для Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ родитСля. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ наличия ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΈΠΌΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² ΠΏΡ€Π΅Π΄ΠΊΠ°Ρ… Π±Ρ‹Π»Π° прСдпринята Π² ΡΠ·Ρ‹ΠΊΠ΅ Π­ΠΉΡ„Π΅Π»ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈ описании Π½ΠΎΠ²ΠΎΠ³ΠΎ класса Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‡Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½Π°ΡΠ»Π΅Π΄ΡƒΠ΅ΠΌΡ‹Ρ… классов ΠΈ ΠΈΡ… ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ классС. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ соврСмСнных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков программирования (C#, Java, Delphi ΠΈ Π΄Ρ€.) ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ°-ΠΏΡ€Π΅Π΄ΠΊΠ° ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… интСрфСйсов ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ классом. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ позволяСт Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ мноТСствСнноС наслСдованиС — ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйсов Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ явно, Ρ‡Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ошибки ΠΏΡ€ΠΈ наслСдовании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… классов-ΠΏΡ€Π΅Π΄ΠΊΠΎΠ².

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

Π€ΠΎΡ€ΠΌΡ‹ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ чистым ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ Ρ‚Π°ΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°, родствСнныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ замСщСния ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со Π²ΡΠ΅ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² TPerson. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ Π·Π°ΠΌΠ΅Ρ‰Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ тСст «is-A». ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² Π² Π½Π΅ΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ систСмы. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс; ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любого ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ парамСтричСского ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°, функция рСализуСтся для всСх Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ функция Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ричСском ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ парамСтричСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ‚ΠΈΠΏΡ‹.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Если ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ влияСт Π½Π° Π½Π°ΡˆΠ΅ восприятиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ричСскиС ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ влияСт Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ родствСнных классов, откладывая объявлСниС Ρ‚ΠΈΠΏΠΎΠ² Π΄ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. Π’ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ написания ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° примСняСтся парамСтричСский ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, ΠΏΡ€ΠΈ этом Ρ‚ΠΈΠΏ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹. ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ класс для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° слСдуСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ ΡΠΎΠ·Π΄Π°Π΅ΠΌ парамСтричСский Ρ‚ΠΈΠΏ. ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ пСрСопрСдСлСния. АбстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ часто относятся ΠΊ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ. Класс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ этот ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ обСспСчиваСт Π²Ρ‹Π·ΠΎΠ² подходящСй вСрсии ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… классах. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ допускаСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ для Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ-ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° — это частный случай ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ имя ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ количСством ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ Π·Π°Π²ΠΈΡΡΡ‚ ΠΎΡ‚ ΡΠ²ΠΎΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ спСцифичСскими Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

3.1 ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ сохраняСмости

Π‘ΠΎΡ…Ρ€Π°Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ — ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, пСрСТивая ΠΏΠΎΡ€ΠΎΠ΄ΠΈΠ²ΡˆΠΈΠΉ Π΅Π³ΠΎ процСсс, ΠΈ/ΠΈΠ»ΠΈ Π² ΠΏΡ€ΠΎΡΡ‚ранствС, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡΡΡŒ ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ адрСсного пространства.

Π›ΡŽΠ±ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сущСствуСт Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠΈ ΠΆΠΈΠ²Π΅Ρ‚ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π‘ΠΏΠ΅ΠΊΡ‚Ρ€ сохраняСмости ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚:

Β· ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ вычислСния Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Β· Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€.

Β· БобствСнныС (статичСскиС) ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈ создаваСмыС Π΄Π°Π½Π½Ρ‹Π΅.

Β· Π”Π°Π½Π½Ρ‹Π΅, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ сСансами выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Β· Π”Π°Π½Π½Ρ‹Π΅, сохраняСмыС ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Β· Π”Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ трСмя уровнями Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ языки программирования, Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌΠΈ — Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π―Π·Ρ‹ΠΊΠΈ программирования, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ Π² ΠΏΠΎΠ»Π½ΠΎΠΌ объСмС.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

сохраняСмости, ΠΊΠ°ΠΊ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ составной части ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… (OODB). На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… строятся Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ — ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…, индСксированных, иСрархичСских, сСтСвых ΠΈΠ»ΠΈ рСляционных, Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ интСрфСйса, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запросы ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прСвосходит врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΈ использовании ΠΎΠ΄Π½ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ памяти ΠΊΠ°ΠΊ Π² System/38 Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° OODB сущСствСнно упрощаСтся.

Π‘ΠΎΡ…Ρ€Π°Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ — это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° сохранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π’ OODB ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈ ΠΊΠ»Π°ΡΡΡ‹, Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Π­Ρ‚ΠΎ создаСт большиС трудности ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ увСличСния объСма Π΄Π°Π½Π½Ρ‹Ρ…, особСнно, Ссли класс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Π΄Ρ€ΡƒΠ³ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ систСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΏΡ€ΠΈ ΠΈΡ… ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ отводится мСсто Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ‚ся ΠΈ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ находится всю свою Тизнь. Однако для распрСдСлСнных систСм ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пСрСнСсСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΏΡ€ΠΎΡΡ‚ранствС, Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ с ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ нСобходимости ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ прСдставлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ.

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ поисковая систСма

3.1 ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ проСктирования?

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

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ состоит ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… основных элСмСнтов:

1) Имя Бославшись Π½Π° Π½Π΅Π³ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ сразу ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ проСктирования; Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΡΡ‚вия. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌ ΠΈΠΌΠ΅Π½ позволяСт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ высоком ΡƒΡ€ΠΎΠ²Π½Π΅ абстракции. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ словаря ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ вСсти обсуТдСниС с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ, ΡƒΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π² Ρ‚онкостях ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½ систСмы. НахоТдСниС Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… ΠΈΠΌΠ΅Π½ Π±Ρ‹Π»ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°ΠΌΡ‹Ρ… Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ ΠΏΡ€ΠΈ составлСнии ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.

2) Π—Π°Π΄Π°Ρ‡Π° ОписаниС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½. НСобходимо ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈ Π΅Π΅ ΠΊΠΎΠ½Ρ‚Скст. ΠœΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ конкрСтная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° проСктирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ способ прСдставлСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Иногда отмСчаСтся, ΠΊΠ°ΠΊΠΈΠ΅ структуры классов ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎ Π½Π΅Π³ΠΈΠ±ΠΊΠΎΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ условий, ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½.

3) РСшСниС ОписаниС элСмСнтов Π΄ΠΈΠ·Π°ΠΉΠ½Π°, ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΈΠ»ΠΈ рСализация Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ся Π² Π²ΠΈΠ΄Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ — это шаблон, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΉ Π² ΡΠ°ΠΌΡ‹Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… ситуациях. ΠŸΡ€ΠΎΡΡ‚ΠΎ даСтся абстрактноС описаниС Π·Π°Π΄Π°Ρ‡ΠΈ проСктирования ΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ вСсьма ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ сочСтания элСмСнтов (Π² Π½Π°ΡˆΠ΅ΠΌ случаС классов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²).

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

Π’ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ воспринимаСт ΠΊΠ°ΠΊ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ просто ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ.

ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования — это Π½Π΅ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ связанныС списки ΠΈΠ»ΠΈ Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ класса ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ… Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΉ. Но ΡΡ‚ΠΎ ΠΈ Π½Π΅ ΡΠ»ΠΎΠΆΠ½Ρ‹Π΅, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Ρ†Π΅Π»ΠΎΠ³ΠΎ прилоТСния ΠΈΠ»ΠΈ подсистСмы. Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠ΄ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ проСктирования понимаСтся описаниС взаимодСйствия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ², Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ‰Π΅ΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ проСктирования Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ контСкстС.

ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ проСктирования ΠΈΠΌΠ΅Π½ΡƒΠ΅Ρ‚, абстрагируСт ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ аспСкты структуры ΠΎΠ±Ρ‰Π΅Π³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ для создания ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π°. Он Π²Ρ‹Ρ‡Π»Π΅Π½ΡΠ΅Ρ‚ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ классы ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ€Ρ‹, ΠΈΡ… Ρ€ΠΎΠ»ΡŒ ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΡ€ΠΈ описании ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ акцСнтируСтся Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования. АнализируСтся, — ΠΊΠΎΠ³Π΄Π° слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊΠΎΠ²Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ послСдствия примСнСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ любой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ прСдстоит Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ, Π² ΡΠΎΡΡ‚Π°Π² ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C++ (ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π° Smalltalk), ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

Π₯отя, строго говоря, ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΎΠ½ΠΈ основаны Π½Π° ΠΏΡ€Π°ΠΊΡ‚ичСских Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ…, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Ρ… языках ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Ρ‚ΠΈΠΏΠ° Smalltalk ΠΈ C++, C#, Java, Π° Π½Π΅ Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹Ρ… (Pascal, Π‘, Ada ΠΈ Ρ‚. ΠΏ.) ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠΉ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ (CLOS, Dylan, Self).

Π’Ρ‹Π±ΠΎΡ€ языка программирования, бСзусловно, Π²Π°ΠΆΠ΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°Ρ… Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ подразумСваСтся использованиС возмоТностСй Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ языка, ΠΈ ΠΎΡ‚ ΡΡ‚ΠΎΠ³ΠΎ зависит, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ, Π° Ρ‡Ρ‚ΠΎ — Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ.

Как ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования?

ГрафичСских ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ нСдостаточно. Они просто ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ процСсса проСктирования Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ классами ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΈ ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠΈΡΡΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΊ Π½Π΅ΠΌΡƒ. Π’Π°ΠΆΠ½Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°.

ΠŸΡ€ΠΈ описании ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°. ОписаниС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° Ρ€Π°Π·Π±ΠΈΡ‚ΠΎ Π½Π° Ρ€Π°Π·Π΄Π΅Π»Ρ‹, пСрСчислСнныС Π½ΠΈΠΆΠ΅.

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅, сравнСниС ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ².

НазваниС ΠΈ ΠΊΠ»Π°ΡΡΠΈΡ„икация ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° НазваниС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΈ ΡƒΡ€ΠΎΠ²Π½ΡŽ примСнСния:

— ΠΏΠΎ ΡƒΡ€ΠΎΠ²Π½ΡŽ примСнСния ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ дСлятся Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ ΠΊ ΠΊΠ»Π°ΡΡΠ°ΠΌ.

— ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ дСлятся Π½Π° ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅, структурныС ΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ повСдСния.

НазначСниС Π›Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ вопросы: ΠΊΠ°ΠΊΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°, Π΅Π³ΠΎ обоснованиС ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊΡƒΡŽ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ проСктирования ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ.

Π˜Π·Π²Π΅ΡΡ‚Π΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π”Ρ€ΡƒΠ³ΠΈΠ΅ распространСнныС названия ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°, Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ.

ΠœΠΎΡ‚ΠΈΠ²Π°Ρ†ΠΈΡ Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π·Π°Π΄Π°Ρ‡Ρƒ проСктирования ΠΈ Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π΄Π°Π½Π½ΠΎΠΉ структурой класса ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Благодаря ΠΌΠΎΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅, Π±ΠΎΠ»Π΅Π΅ абстрактноС описаниС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°.

ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΡΡ‚ΡŒ ОписаниС ситуаций, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ проСктирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ. РаспознаваниС Ρ‚Π°ΠΊΠΈΡ… ситуаций.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ГрафичСскоС прСдставлСниС классов Π² ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π΅ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, основанной Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ΅ Object Modeling Technique (OMT). МоТно ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ взаимодСйствий для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ запросов ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

Участники ΠšΠ»Π°ΡΡΡ‹ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, задСйствованныС Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π΅ проСктирования, ΠΈ ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ВзаимодСйствиС участников для выполнСния своих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Насколько ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ удовлСтворяСт поставлСнным трСбованиям? Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ примСнСния, компромиссы, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приходится ΠΈΠ΄Ρ‚ΠΈ. КакиС аспСкты повСдСния систСмы ΠΌΠΎΠΆΠ½ΠΎ нСзависимо ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½?

РСализация БлоТности ΠΈ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°. Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹. Π•ΡΡ‚ΡŒ Π»ΠΈ Ρƒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ ΡΠ·Ρ‹ΠΊΠ° программирования?

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°.

Π˜Π·Π²Π΅ΡΡ‚Π½Ρ‹Π΅ примСнСния ВозмоТности примСнСния ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… систСмах. Π”Π°ΡŽΡ‚ΡΡ, ΠΏΠΎ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… областСй.

РодствСнныС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ Бвязь Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² проСктирования с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠΌ. Π’Π°ΠΆΠ½Ρ‹Π΅ различия. ИспользованиС Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° Π² ΡΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ.

3. Π₯ΠΎΠ΄ выполнСния

3.1 Π’Ρ‹Π±ΠΎΡ€ языка программирования ΠΈ ΡΡ€Π΅Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прилоТСния

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прилоТСния мною Π±Ρ‹Π»ΠΈ Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Microsoft Visual Studio ΠΈ ΡΠ·Ρ‹ΠΊ программирования C#.

Microsoft Visual Studio — Π»ΠΈΠ½Π΅ΠΉΠΊΠ° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π½Π° ΡΠ·Ρ‹ΠΊΠ°Ρ… C#, C++ VisualBasic ΠΈ Π΄Ρ€., Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… срСдств.

Π”Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ с Π³Ρ€Π°Ρ„ичСским интСрфСйсом, Π² Ρ‚ΠΎΠΌ числС с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Windows Forms, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Π΅Π±-сайты, Π²Π΅Π±-прилоТСния, Π²Π΅Π±-слуТбы ΠΊΠ°ΠΊ Π² Ρ€ΠΎΠ΄Π½ΠΎΠΌ, Ρ‚Π°ΠΊ ΠΈ Π² ΡƒΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΠΎΠΌ ΠΊΠΎΠ΄Π°Ρ… для всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Microsoft Windows, Windows Mobile, Windows CE,.NET Framework, Xbox, Windows Phone.NET Compact Framework ΠΈ Microsoft Silverlight.

Microsoft Visual Studio Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ исходного ΠΊΠΎΠ΄Π° с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ IntelliSense ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΊΠΎΠ΄Π°. ВстроСнный ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ уровня исходного ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΈ ΠΊΠ°ΠΊ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ машинного уровня. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ встраиваСмыС инструмСнты Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² ΡΠ΅Π±Ρ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Ρ„ΠΎΡ€ΠΌ для упрощСния создания графичСского интСрфСйса прилоТСния, Π²Π΅Π±-Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ классов ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ схСмы Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Visual Studio позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ сторонниС дополнСния (ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹) для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ практичСски Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ систСм контроля вСрсий исходного ΠΊΠΎΠ΄Π° (ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Subversion ΠΈ Visual SourceSafe), Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² инструмСнтов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для рСдактирования ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ проСктирования ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках программирования ΠΈΠ»ΠΈ инструмСнтов для ΠΏΡ€ΠΎΡ‡ΠΈΡ… аспСктов процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Team Explorer для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Team Foundation Server).

Мною Π±Ρ‹Π»ΠΈ Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Microsoft Visual Studio ΠΈ ΡΠ·Ρ‹ΠΊ программирования C#, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π² ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ инструмСнт для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Microsoft Windows.

3.2 РСализация основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ООП

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° мною Π±Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π΄Π²Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования — инкапсуляция ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ «PATH» Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ XML-Ρ„Π°ΠΉΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠŸΡ€ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ значСния свойства «XMLPATH» производится ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, сущСствуСт Π»ΠΈ Ρ„Π°ΠΉΠ» ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ. Если Ρ„Π°ΠΉΠ» Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚, Ρ‚ΠΎ ΠΎΠ½ ΡΠΎΠ·Π΄Π°Π΅Ρ‚ся, Π² Ρ„Π°ΠΉΠ» записываСтся информация ΠΎ Π²Π΅Ρ€ΡΠΈΠΈ XML ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ записываСтся ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ элСмСнт с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ. ПослС этого Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ пСрСдаСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ «PATH».

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация свойства:

private static string PATH = «» ;

/// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ имя Ρ„Π°ΠΉΠ»Π° для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΡΠΎΡ…ранСния XML.

public static string XMLPATH

{

get { return main_form.PATH; }

set

{

if (!File.Exists (value))

{

XmlTextWriter writer = new XmlTextWriter (File.Create (value), Encoding. UTF8);

writer.WriteStartDocument ();

writer.WriteStartElement («hashtable»);

writer.WriteStartAttribute («pair_count»);

writer.WriteEndAttribute ();

writer.WriteEndElement ();

writer.Close ();

}

main_form.PATH = value;

}

}

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ интСрфСйс «IModify», ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠΌΠ΅Π½Π° ΠΈ ΡΠΈΠ³Π½Π°Ρ‚ΡƒΡ€Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠ»Π°ΡΡΠ΅ «StringModificator».

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация интСрфСйса ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ Π΅Π³ΠΎ класса

public interface IModify

{

/// ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ Π·Π°ΠΌΠ΅Π½Ρƒ BB-Ρ‚Π΅Π³ΠΎΠ² Π½Π° ΠΊΠΎΠ΄Ρ‹ RTF.

/// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡƒΡŽ строку.

string Modify ();

}

public class StringModificator: IModify

{

private static string TEXT;

public StringModificator (string text)

{

TEXT = text;

}

/// ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ Π·Π°ΠΌΠ΅Π½Ρƒ BB-Ρ‚Π΅Π³ΠΎΠ² Π½Π° ΠΊΠΎΠ΄Ρ‹ RTF.

/// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡƒΡŽ строку.

public string Modify ()

{

TEXT = string. Concat («{\rtf1\ansi\ansicpg1251rn», TEXT);

TEXT = TEXT. Replace («[b]», «{\b «).Replace («[/b]», «}»);

TEXT = TEXT. Replace («[u]», «{\ul «).Replace («[/u]», «}»);

TEXT = TEXT. Replace («[i]», «{\i «).Replace («[/i]», «}»);

TEXT = TEXT. Replace («rn», «\par «);

TEXT = string. Concat (TEXT, «rn}»);

return TEXT;

}

}

3.3 РСализация ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°

ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ «ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€», Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ класса «StringModificator», ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для измСнСния строковых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², выполнСния ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Ρ„орматирования тСкста ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Π½Π° ΡΠΊΡ€Π°Π½ Π² ΠΏΠΎΠ»Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСкста.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°:

public class StringModificator: IModify

{

private static string TEXT;

public StringModificator (string text)

{

TEXT = text;

}

/// ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ Π·Π°ΠΌΠ΅Π½Ρƒ BB-Ρ‚Π΅Π³ΠΎΠ² Π½Π° ΠΊΠΎΠ΄Ρ‹ RTF.

/// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡƒΡŽ строку.

public string Modify ()

{

TEXT = string. Concat («{\rtf1\ansi\ansicpg1251rn», TEXT);

TEXT = TEXT. Replace («[b]», «{\b «).Replace («[/b]», «}»);

TEXT = TEXT. Replace («[u]», «{\ul «).Replace («[/u]», «}»);

TEXT = TEXT. Replace («[i]», «{\i «).Replace («[/i]», «}»);

TEXT = TEXT. Replace («rn», «\par «);

TEXT = string. Concat (TEXT, «rn}»);

return TEXT;

}

}

3.4 ИспользованиС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° сохраняСмости

Для хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ я Π²Ρ‹Π±Ρ€Π°Π» Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ XML (eXtensible Markup Language) Π² ΡΠ²ΡΠ·ΠΈ с Ρ€ΡΠ΄ΠΎΠΌ Π΅Π³ΠΎ прСимущСств Π½Π°Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ способами хранСния Π΄Π°Π½Π½Ρ‹Ρ…, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ.

XML ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ XML ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ дрСвовидная структура хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π₯отя ΠΏΠΎ Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ счСту Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² XML Π½Π΅ ΡΠ»ΠΈΡˆΠΊΠΎΠΌ эффСктивно, Ρƒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ способа хранСния Π΅ΡΡ‚ΡŒ свои прСимущСства. Как ΠΈ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний, самым большим прСимущСством являСтся простота. ДрСвовидная структура — ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятный ΠΈ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ способ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡ‡Ρ‚ΠΈ любой Ρ‚ΠΈΠΏ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ структуры — ΠΎΡ‚ Ρ€Π΅Π»ΡΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ичСских структур — ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСн с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π΅Ρ€Π΅Π²Π° Π΄Π°Π½Π½Ρ‹Ρ… XML. Π”Ρ€ΡƒΠ³ΠΎΠ΅ сущСствСнноС прСимущСство использования XML для хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ XML ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ символов Unicode. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, любой символ любого Π°Π»Ρ„Π°Π²ΠΈΡ‚Π° ΠΌΠΈΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ XML Π½Π° «Π·Π°ΠΊΠΎΠ½Π½ΠΎΠΌ основании».

Для осущСствлСния взаимодСйствия с XML я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π» стандартныС срСдства Ρ€Π°Π±ΠΎΡ‚Ρ‹ с XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ языка программирования C# — Ρ‚Π°ΠΊΠΈΠ΅ классы ΠΊΠ°ΠΊ: XmlDocument, XmlNodeList, XmlTextWriter, XmlElement, XmlAttribute, XmlNode ΠΈ Π΄Ρ€.

Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ созданиС XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, содСрТащСго ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π²Π΅Ρ€ΡΠΈΠΈ XML, ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ элСмСнт с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ:

XmlTextWriter writer = new XmlTextWriter (path, Encoding. UTF8);

writer.WriteStartDocument ();

writer.WriteStartElement («hashtable»);

writer.WriteStartAttribute («pair_count»);

writer.WriteEndAttribute ();

writer.WriteEndElement ();

writer.Close ();

3.5 ОписаниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ построСн с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ стандартных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Windows Forms. На Ρ€ΠΈΡ. 4.5.1 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° главная Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Рисунок 4.5.1 Главная Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ, Π½Π°Π΄ΠΎ просто Π½Π°Ρ‡Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Π² ΠΏΠΎΠ»Π΅ поискового запроса, Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сама ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ Π½Π° Π²Ρ‹Π±ΠΎΡ€ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π² Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡΡ спискС (рис. 4.5.2).

Рисунок 4.5.2 ДСмонстрация поиска ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌΡƒ слову

ПослС Π²Ρ‹Π±ΠΎΡ€Π° Π½ΡƒΠΆΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ стрСлками Π²Π²Π΅Ρ€Ρ…/Π²Π½ΠΈΠ· ΠΈ Π½Π°ΠΆΠ°Ρ‚ия клавиши «Π²Π²ΠΎΠ΄», Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части Ρ„ΠΎΡ€ΠΌΡ‹ отобраТаСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΊΠ»ΡŽΡ‡Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡ (рис. 4.5.3).

Рисунок 4.5.3 ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ ПослС запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π° Π² Π΅Π΅ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ· XML-Ρ„Π°ΠΉΠ»Π°, Π²Ρ‹Π±Ρ€Π°Π² Π² ΠΌΠ΅Π½ΡŽ «Π€Π°ΠΉΠ»» > «Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ· XML…» (рис. 4.5.4).

Рисунок 4.5.4 Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°/сохранСниС XML ΠΈΠ· ΠΌΠ΅Π½ΡŽ «Π€Π°ΠΉΠ»»

Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ Π² ΠΌΠ΅Π½ΡŽ ΠΏΡƒΠ½ΠΊΡ‚Π° «Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ…» появляСтся Ρ„ΠΎΡ€ΠΌΠ° добавлСния ΡΡ‚Π°Ρ‚ΡŒΠΈ (рис. 4.5.5).

Рисунок 4.5.5

ПослС добавлСния ΡΡ‚Π°Ρ‚ΡŒΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ XML-Ρ„Π°ΠΉΠ»Π΅.

Π’Ρ‹Π±Ρ€Π°Π² ΠΏΡƒΠ½ΠΊΡ‚ мСню «Π€Π°ΠΉΠ»» > «Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² XML…» ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΡƒΠΊΠ°Π·Π°Π² ΠΏΡƒΡ‚ΡŒ ΠΊ XML-Ρ„Π°ΠΉΠ»Ρƒ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ Π² ΡΠΎΠΎΡ‚вСтствии с ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ заданиями. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π° написана Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C# Π² ΡΡ€Π΅Π΄Π΅ программирования Microsoft Visual Studio 2010. Мною Π±Ρ‹Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π΄Π²Π° ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… основных «ΠΊΠΈΡ‚Π°», Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° запись ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… XML, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ «ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€», Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ измСнСния строковых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСкста.

1. Π“Π°ΠΌΠΌΠ° Π­., Π₯Π΅Π»ΠΌ Π ., ДТонсон Π ., ВлиссидСс Π”ΠΆ. П75 «ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования. ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования» — БПб: ΠŸΠΈΡ‚Π΅Ρ€, 2001. — 368 с.: ΠΈΠ». (БСрия «Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста»);

2. Π›Π΅ΠΊΡ†ΠΈΠΈ ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅», ΠΏΡ€Π΅Π΄ΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ: Π΄ΠΎΡ†Π΅Π½Ρ‚ ΠΊΠ°Ρ„. ΠŸΠžΠ’Π’ Π‘ΡƒΠ·Π°Π»ΠΎ Π“. Π.

3. Π¨ΠΈΠ»Π΄Π³, Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚ «ΠŸΠΎΠ»Π½Ρ‹ΠΉ справочник ΠΏΠΎ C#». ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ с Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ — М.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ «Π’ΠΈΠ»ΡŒΡΠΌΠ΅», 2004. — 752 с.

4. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° MSDN — http://msdn.microsoft.com/library

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А. Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π€Π°ΠΉΠ» main_form.cs

using System;

using System. Collections;

using System.Collections.Generic;

using System. Diagnostics;

using System. Drawing;

using System. IO;

using System.Windows.Forms;

using System. Xml;

using System. Text;

namespace HashSearchEngine

{

public partial class main_form: Form

{

public interface IModify

{

/// ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ Π·Π°ΠΌΠ΅Π½Ρƒ BB-Ρ‚Π΅Π³ΠΎΠ² Π½Π° ΠΊΠΎΠ΄Ρ‹ RTF.

/// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡƒΡŽ строку.

string Modify ();

}

public class StringModificator: IModify

{

private static string TEXT;

public StringModificator (string text)

{

TEXT = text;

}

/// ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ Π·Π°ΠΌΠ΅Π½Ρƒ BB-Ρ‚Π΅Π³ΠΎΠ² Π½Π° ΠΊΠΎΠ΄Ρ‹ RTF.

/// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡƒΡŽ строку.

public string Modify ()

{

TEXT = string. Concat («{\rtf1\ansi\ansicpg1251rn», TEXT);

TEXT = TEXT. Replace («[b]», «{\b «).Replace («[/b]», «}»);

TEXT = TEXT. Replace («[u]», «{\ul «).Replace («[/u]», «}»);

TEXT = TEXT. Replace («[i]», «{\i «).Replace («[/i]», «}»);

TEXT = TEXT. Replace («rn», «\par «);

TEXT = string. Concat (TEXT, «rn}»);

return TEXT;

}

}

private static string SEARCH_BOX_DEFTEXT;

private static string MAINFORM_HEAD_TEXT;

private static ListBox listbox = new ListBox ();

private static Hashtable HASH = new Hashtable ();

public static Hashtable GETHASH

{

get { return main_form.HASH; }

}

private static string PATH = «» ;

/// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ имя Ρ„Π°ΠΉΠ»Π° для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΡΠΎΡ…ранСния XML.

public static string XMLPATH

{

get { return main_form.PATH; }

set

{

if (value ≠ «»)

if (!File.Exists (value))

{

XmlTextWriter writer = new XmlTextWriter (File.Create (value), Encoding. UTF8);

writer.WriteStartDocument ();

writer.WriteStartElement («hashtable»);

writer.WriteStartAttribute («pair_count»);

writer.WriteEndAttribute ();

writer.WriteEndElement ();

writer.Close ();

}

main_form.PATH = value;

}

}

private void GetAllNodes (ToolStripDropDownButton dropdown)

{

dropdown.DropDownItems.Clear ();

foreach (object O in HASH. Keys)

{

dropdown.DropDownItems.Add (O.ToString ());

}

if (dropdown.DropDownItems.Count > 0)

dropdown.Enabled = true;

}

public static void LoadXML (string path)

{

XmlDocument document = new XmlDocument ();

FileStream stream = new FileStream (path, FileMode. Open);

try

{

document.Load (stream);

stream.Close ();

}

catch (XmlException)

{

stream.Close ();

XmlTextWriter writer = new XmlTextWriter (path, Encoding. UTF8);

writer.WriteStartDocument ();

writer.WriteStartElement («hashtable»);

writer.WriteStartAttribute («pair_count»);

writer.WriteEndAttribute ();

writer.WriteEndElement ();

writer.Close ();

stream = new FileStream (path, FileMode. Open);

document.Load (stream);

stream.Close ();

}

XmlNodeList list = document. GetElementsByTagName («pair»);

if (list.Count > 0) HASH. Clear ();

for (int i = 0; i < list. Count; i++)

{

HASH.Add (list[i]. ChildNodes[0].InnerText, list[i]. ChildNodes[1].InnerText);

}

}

public static void SaveXML (string path)

{

object[] keys = new object[HASH.Count];

HASH.Keys.CopyTo (keys, 0);

XmlTextWriter writer = new XmlTextWriter (path, Encoding. UTF8);

writer.WriteStartDocument ();

writer.WriteStartElement («hashtable»);

writer.WriteStartAttribute («pair_count»);

writer.WriteEndAttribute ();

writer.WriteEndElement ();

writer.Close ();

XmlDocument document = new XmlDocument ();

document.Load (path);

for (int i = 0; i < HASH. Count; i++)

{

XmlElement pair = document. CreateElement («pair»);

XmlAttribute pair_id = document. CreateAttribute («id»);

pair_id.Value = (i + 1).ToString ();

pair.Attributes.Append (pair_id);

XmlElement key = document. CreateElement («key»);

key.InnerText = keys[i]. ToString ();

pair.AppendChild (key);

XmlElement value = document. CreateElement («value»);

value.InnerText = HASH[keys[i]]. ToString ();

pair.AppendChild (value);

document.DocumentElement.AppendChild (pair);

}

if (document.DocumentElement.HasChildNodes)

document.DocumentElement.Attributes[" pair_count" ]. Value = document.DocumentElement.ChildNodes.Count.ToString ();

document.Save (path);

}

public static string AddXMLNode (string add_key, string add_value)

{

try

{

HASH.Add (add_key, add_value);

}

catch (ArgumentException)

{

return «Π‘Ρ‚Π°Ρ‚ΡŒΡ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π°: rnΠšΠ»ΡŽΡ‡ ΡƒΠΆΠ΅ присутствуСт Π² Π₯Сш-Ρ‚Π°Π±Π»ΠΈΡ†Π΅» ;

}

catch (Exception err)

{

return «Π‘Ρ‚Π°Ρ‚ΡŒΡ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π°rnΠ‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅: rn» + err. Message;

}

if (!File.Exists (XMLPATH))

{

XmlTextWriter writer = new XmlTextWriter (XMLPATH, Encoding. UTF8);

writer.WriteStartDocument ();

writer.WriteStartElement («hashtable»);

writer.WriteStartAttribute («pair_count»);

writer.WriteEndAttribute ();

writer.WriteEndElement ();

writer.Close ();

}

XmlDocument document = new XmlDocument ();

document.Load (XMLPATH);

XmlElement pair = document. CreateElement («pair»);

XmlAttribute pair_id = document. CreateAttribute («id»);

int last_child_id = 0;

try

{

int.TryParse (document.DocumentElement.LastChild.Attributes[" id" ]. Value, out last_child_id);

}

catch (NullReferenceException)

{

last_child_id = 0;

}

catch (Exception) { }

pair_id.Value = (last_child_id + 1).ToString ();

pair.Attributes.Append (pair_id);

XmlElement key = document. CreateElement («key»);

key.InnerText = add_key;

pair.AppendChild (key);

XmlElement value = document. CreateElement («value»);

value.InnerText = add_value;

pair.AppendChild (value);

document.DocumentElement.AppendChild (pair);

if (document.DocumentElement.HasChildNodes)

document.DocumentElement.Attributes[" pair_count" ]. Value = document.DocumentElement.ChildNodes.Count.ToString ();

document.Save (XMLPATH);

return «Π‘Ρ‚Π°Ρ‚ΡŒΡ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π°» ;

}

public main_form ()

{

InitializeComponent ();

listbox.Size = new Size (search_text.Width, 0);

listbox.Margin = new System.Windows.Forms.Padding (0, 0, 0, 0);

listbox.Font = search_text.Font;

listbox.Parent = listbox_panel;

listbox_panel.Hide ();

SEARCH_BOX_DEFTEXT = search_text.Text;

MAINFORM_HEAD_TEXT = this. Text;

}

private void main_form_Load (object sender, EventArgs e)

{

listbox.MouseClick += new MouseEventHandler (listbox_MouseClick);

allNodes_toolStripDropDownButton.Enabled = false;

allNodes_toolStripDropDownButton.DropDownItems.Clear ();

}

#region Бобытия MenuStrip

// **************************************************************************

private void Π²Ρ‹Ρ…ΠΎΠ΄ToolStripMenuItem_Click (object sender, EventArgs e)

{

Application.Exit ();

}

private void ΠΎΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ToolStripMenuItem_Click (object sender, EventArgs e)

{

about_form_RamGec about = new about_form_RamGec ();

about.ShowDialog ();

}

private void Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΡΡ‚Π°Ρ‚ΡŒΡŽToolStripMenuItem_Click (object sender, EventArgs e)

{

if (XMLPATH == «»)

{

OpenFileDialog file_path = new OpenFileDialog ();

file_path.Filter = «XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ (*.xml)|*.xml» ;

if (file_path.ShowDialog () == System.Windows.Forms.DialogResult.OK)

{

XMLPATH = file_path.FileName;

LoadXML (file_path.FileName);

GetAllNodes (allNodes_toolStripDropDownButton);

}

else

{

MessageBox.Show (

this,

" НСобходимо ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ XML-Ρ„Π°ΠΉΠ»Ρƒ." ,

" ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅" ,

MessageBoxButtons.OK,

MessageBoxIcon.Exclamation

);

return;

}

}

add_form add = new add_form ();

if (add.ShowDialog () == System.Windows.Forms.DialogResult.OK)

{

GetAllNodes (allNodes_toolStripDropDownButton);

}

}

private void ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒXMLToolStripMenuItem_Click (object sender, EventArgs e)

{

SaveFileDialog save_path = new SaveFileDialog ();

save_path.AddExtension = true;

save_path.DefaultExt = «xml» ;

save_path.Filter = «XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ (*.xml)|*.xml» ;

if (save_path.ShowDialog () == System.Windows.Forms.DialogResult.OK)

{

XMLPATH = save_path.FileName;

SaveXML (save_path.FileName);

this.Text = MAINFORM_HEAD_TEXT + «— «+ save_path.FileName.Remove (0, save_path.FileName.LastIndexOf ('\') + 1);

}

}

private void Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ˜Π·XMLToolStripMenuItem_Click (object sender, EventArgs e)

{

OpenFileDialog file_path = new OpenFileDialog ();

file_path.Filter = «XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ (*.xml)|*.xml» ;

if (file_path.ShowDialog () == System.Windows.Forms.DialogResult.OK)

{

XMLPATH = file_path.FileName;

LoadXML (file_path.FileName);

GetAllNodes (allNodes_toolStripDropDownButton);

this.Text = MAINFORM_HEAD_TEXT + «— «+ file_path.SafeFileName;

}

}

private void ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒΠ₯Π΅ΡˆΡ‚Π°Π±Π»ΠΈΡ†ΡƒToolStripMenuItem_Click (object sender, EventArgs e)

{

HASH.Clear ();

if (!search_text.Focused) search_text.Text = SEARCH_BOX_DEFTEXT;

out_richText.Clear ();

XMLPATH = «» ;

this.Text = MAINFORM_HEAD_TEXT;

allNodes_toolStripDropDownButton.Enabled = false;

}

// **************************************************************************

#endregion

private void search_button_Click (object sender, EventArgs e)

{

if (HASH.ContainsKey (search_text.Text))

{

out_richText.Rtf = new StringModificator ((string)HASH[search_text.Text]).Modify ();

}

}

private void out_richText_LinkClicked (object sender, LinkClickedEventArgs e)

{

Process.Start (e.LinkText);

}

private void search_text_TextChanged (object sender, EventArgs e)

{

if (HASH.Count == 0) return;

listbox.Items.Clear ();

if (search_text.Text ≠ «» && search_text.Text ≠ SEARCH_BOX_DEFTEXT)

{

int height = 0, count = 0;

foreach (object O in HASH. Keys)

{

if (O.ToString ().ToLower ().IndexOf (search_text.Text.ToLower ()) >= 0)

{

if (++count > 5) break;

listbox.Items.Add (O);

height += 25;

}

}

listbox.Size = new Size (listbox.Size.Width, height);

if (listbox.Items.Count > 0)

{

listbox_panel.Show ();

listbox.SelectedItem = listbox. Items[0];

}

else

{

listbox_panel.Hide ();

}

}

else

{

listbox_panel.Hide ();

}

}

private void search_text_SizeChanged (object sender, EventArgs e)

{

listbox.Size = new Size (search_text.Size.Width, listbox.Size.Height);

}

private void search_text_Enter (object sender, EventArgs e)

{

if (search_text.Text == SEARCH_BOX_DEFTEXT)

{

search_text.Text = «» ;

}

search_text.ForeColor = Color. Black;

}

private void search_text_Leave (object sender, EventArgs e)

{

if (search_text.Text == «»)

{

search_text.Text = SEARCH_BOX_DEFTEXT;

}

search_text.ForeColor = Color. Gray;

}

private void search_text_KeyDown (object sender, KeyEventArgs e)

{

if (HASH.Count == 0 || listbox.Items.Count == 0) return;

if (e.KeyCode == Keys. Down)

{

if (listbox.SelectedIndex < listbox.Items.Count — 1)

listbox.SelectedIndex = listbox. SelectedIndex + 1;

}

if (e.KeyCode == Keys. Up)

{

if (listbox.SelectedIndex ≠ 0)

listbox.SelectedIndex = listbox. SelectedIndex — 1;

}

if (e.KeyCode == Keys. Enter)

{

search_text.Text = listbox.SelectedItem.ToString ();

search_button_Click (sender, e);

out_richText.Focus ();

listbox_panel.Hide ();

}

if (e.KeyCode == Keys. Escape)

{

listbox_panel.Hide ();

}

}

private void listbox_MouseClick (object sender, MouseEventArgs e)

if (HASH.Count == 0

private void allNodes_toolStripDropDownButton_DropDownItemClicked (object sender, ToolStripItemClickedEventArgs e)

{

if (HASH.ContainsKey (e.ClickedItem.Text))

out_richText.Rtf = new StringModificator ((string)HASH[e.ClickedItem.Text]).Modify ();

}

}

}

Π€Π°ΠΉΠ» add_form.cs

using System;

using System.Collections.Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System.Windows.Forms;

namespace HashSearchEngine

{

public partial class add_form: Form

{

public add_form ()

{

InitializeComponent ();

}

private void save_button_Click (object sender, EventArgs e)

{

main_form.AddXMLNode (key_text.Text, value_text.Text);

}

private void plus_button_Click (object sender, EventArgs e)

{

main_form.AddXMLNode (key_text.Text, value_text.Text);

key_text.Clear ();

value_text.Clear ();

toolTip1.Show (

" Π‘Ρ‚Π°Ρ‚ΡŒΡ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π°" ,

this,

new Point (this.Size.Width / 2 + 50, this.Size.Height / 2),

);

}

private void cancel_button_Click (object sender, EventArgs e)

{

if (key_text.Text.Length > 0 || value_text.Text.Length > 0)

{

if (MessageBox.Show (

this,

" НСсохранСнныС Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ потСряны. nnΠ—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ?" ,

" ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅" ,

MessageBoxButtons.YesNo,

MessageBoxIcon.Question,

MessageBoxDefaultButton.Button2

) == System.Windows.Forms.DialogResult.Yes)

this.Close ();

}

else

{

this.Close ();

}

}

private void add_form_KeyDown (object sender, KeyEventArgs e)

{

if (e.KeyCode == Keys. Escape) cancel_button_Click (sender, e);

}

}

}

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ