ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

РСализация спСциализированного ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π° Π±Π°Π·Π΅ списка Π½Π° основС массива со сдвигом элСмСнтов ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π½Π° основС адрСсных ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

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

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

РСализация спСциализированного ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π° Π±Π°Π·Π΅ списка Π½Π° основС массива со сдвигом элСмСнтов ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π½Π° основС адрСсных ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅

" ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅"

Π½Π° Ρ‚Π΅ΠΌΡƒ:

" РСализация спСциализированного ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π° Π±Π°Π·Π΅ списка Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ массива со ΡΠ΄Π²ΠΈΠ³ΠΎΠΌ элСмСнтов ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ адрСсных ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ"

  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅
  • 1. ОписаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… понятий ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ООП
  • 2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… классов
  • 3. ОписаниС дСмонстрационного модуля с ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ описаниСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… стандартных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²
  • ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… стандартных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²
  • ОписаниС внСшнСго Π²ΠΈΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
  • Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
  • Π’Ρ‹Π²ΠΎΠ΄
  • Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

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

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

1. ОписаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… понятий ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ООП

ΠžΠ±ΡŠΠ΅ΠΌΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΠΌΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП) — соврСмСнный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΡΠΈΡΡ‚Π΅ΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ основныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ с Π½Π΅ΠΊΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΈΡ… классами. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ориСнтированная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° являСтся ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΡ… Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚вия.

Класс - это Ρ‚ΠΈΠΏ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ устройство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ ΠΊΠ»Π°ΡΡΠ°Ρ… ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΡΠΎΠ±Ρ‹Ρ‚ия, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ — это экзСмпляр класса. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ Π½Π΅ΠΊΡƒΡŽ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ. ΠŸΡ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ состоит ΠΈΠ· Π΄Π²ΡƒΡ… частСй: Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… (ΠΈΠ»ΠΈ свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°) ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ этих Π΄Π°Π½Π½Ρ‹Ρ… (ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°).

Класс являСтся описываСмой Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ (пространства ΠΈΠΌΡ‘Π½) исходного ΠΊΠΎΠ΄Π° модСлью Π΅Ρ‰Ρ‘ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ сущности, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ — ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Π² Π°Π΄Ρ€Π΅ΡΠ½ΠΎΠΌ пространствС Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмы, ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ ΠΏΡ€ΠΈ создании экзСмпляра класса (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, послС запуска Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² компиляции (ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ) исходного ΠΊΠΎΠ΄Π° Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅).

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ понятия

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ называСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅: массива, динамичСских списков Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†.

ВзаимодСйствиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ классов

Π›ΡŽΠ±Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ‚Ρƒ ΠΈΠ»ΠΈ ΠΈΠ½ΡƒΡŽ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ взаимодСйствия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π°Π·Π½Ρ‹Ρ… классов.

Π Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ Π΄Π²Π° способа взаимодСйствия:

агрСгация (композиция)

ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ (наслСдованиС)

АгрСгация Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅

составных частСй Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‚. Π΅. ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Ρ‡Π°ΡΡ‚ΡŒ — Ρ†Π΅Π»ΠΎΠ΅.

Абстракция Π΄Π°Π½Π½Ρ‹Ρ…

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

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ

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

Π‘ΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… — нСотдСлимая Ρ‡Π°ΡΡ‚ΡŒ ООП, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ областями видимости. ЯвляСтся логичСским ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ инкапсуляции. ЦСлью сокрытия являСтся Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΡ€Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

НаслСдованиС

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

НаслСдованиС называСтся простым, ΠΊΠΎΠ³Π΄Π° Ρƒ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, мноТСствСнным — ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса сущСствуСт Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ родитСля.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ

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

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² - это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ объявлСния Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ классС ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совпадаСт с Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, Π½ΠΎ Π΄Π»Ρ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° сущСствуСт своя программная рСализация.

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² основано Π½Π° Π΄Π²ΡƒΡ… Π²Π°ΠΆΠ½Ρ‹Ρ… понятиях:

динамичСская ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Ρ‚. Π΅. ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ нСпосрСдствСнно Π²ΠΎ Π²Ρ€Π΅ΠΌΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

информация ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² ΠΊΠ»Π°ΡΡΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, доступная ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ динамичСской ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ

ДинамичСская ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ динамичСски ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° отличаСтся своСй Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ достаточно ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса дСлятся Π½Π° Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹: нСизмСняСмыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (рСализация ΠΏΠΎ ΡΡ…Π΅ΠΌΠ΅ Ρ€Π°Π½Π½Π΅Π³ΠΎ связывания), измСняСмыС ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅) ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

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

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠ½Ρ‹Π΅ классы

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

2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… классов

Класс TPlayerInfo.

Π”Π°Π½Π½Ρ‹ΠΉ класс содСрТит Ρ‚Π°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΈΠ³Ρ€ΠΎΠΊΠ°Ρ… ΠΊΠ°ΠΊ фамилия ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΈ Π½ΠΎΠΌΠ΅Ρ€. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ конструктор, get ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ set ΠΌΠ΅Ρ‚ΠΎΠ΄ для Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ, get ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ set ΠΌΠ΅Ρ‚ΠΎΠ΄ для Π½ΠΎΠΌΠ΅Ρ€Π°.

type

TPlayerInfo=class

private

Surname: string;

Number: integer;

public

constructor Create (aSurname: string; aNumber: integer);

function GetSurname: string;

procedure SetSurname (aSurname: string);

function GetNumber: integer;

procedure SetNumber (aNumber: integer);

end;

Класс TPlayer.

Π”Π°Π½Π½Ρ‹ΠΉ класс содСрТит Ρ‚Π°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ конструктор (ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΉ Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ элСмСнт-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ), get ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ set ΠΌΠ΅Ρ‚ΠΎΠ΄ для указатСля Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅, get ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ set ΠΌΠ΅Ρ‚ΠΎΠ΄ для указатСля Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт.

type

TPlayer=class

private

PlayerData: TPlayerInfo;

Next: TPlayer;

public

constructor Create (aSurname: string; aNumber: integer);

function GetPlayerData: TPlayerInfo;

procedure SetPlayerData (aPlayerData: TPlayerInfo);

function GetNext: TPlayer;

procedure SetNext (aNext: TPlayer);

end;

Класс TTeam;

Π”Π°Π½Π½Ρ‹ΠΉ класс содСрТит Ρ‚Π°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ элСмСнт ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, количСство элСмСнтов Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ конструктор, get ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ set ΠΌΠ΅Ρ‚ΠΎΠ΄ для названия ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, get ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ set ΠΌΠ΅Ρ‚ΠΎΠ΄ для указатСля Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, get ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ set ΠΌΠ΅Ρ‚ΠΎΠ΄ для указатСля Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ элСмСнт, get ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ set ΠΌΠ΅Ρ‚ΠΎΠ΄ для количСства элСмСнтов Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ добавлСния, поиска ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ элСмСнтов.

type

TTeam=class

private

NameTeam: string;

First, Last: TPlayer;

Count: integer;

public

constructor Create (aNameTeam: string);

function GetNameTeam: string;

procedure SetNameTeam (aNameTeam: string);

function GetFirst: TPlayer;

procedure SetFirst (aFirst: TPlayer);

function GetLast: TPlayer;

procedure SetLast (aLast: TPlayer);

function GetCount: integer;

procedure SetCount (aCount: integer);

procedure AddPlayer (aSurname: string; aNumber: integer);

function SearchPlayer (aSurname: string): TPlayerInfo; overload;

function SearchPlayer (aNumber: integer): TPlayerInfo; overload;

function DeletePlayer: boolean;

end;

Класс TLeague.

Π”Π°Π½Π½Ρ‹ΠΉ класс содСрТит Ρ‚Π°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠ°ΠΊ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ спортлиги, массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚-счСтчик. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ конструктор, get ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ set ΠΌΠ΅Ρ‚ΠΎΠ΄ для названия спортлиги, get ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΡΠΏΠΈΡΠΊΠ΅, get ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ set ΠΌΠ΅Ρ‚ΠΎΠ΄ для элСмСнта-счСтчика, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ добавлСния, поиска ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ элСмСнтов, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ сохранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ» ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»Π°.

type

TLeague=class

private

NameLeague: string;

Teams: array [1. KolTeam] of TTeam;

Count: integer;

public

constructor Create (aNameLeague: string);

function GetNameLeague: string;

procedure SetNameLeague (aNameLeague: string);

function GetTeam (i: integer): TTeam;

function GetCount: integer;

procedure SetCount (aCount: integer);

function SearchTeam (aNameTeam: string): integer;

function AddTeam (aNameNewTeam, aNameSearchTeam: string): boolean;

function DeleteTeam (aNameTeam: string): boolean;

procedure Open (FileName: string);

procedure Save (Filename: string);

end;

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° взаимодСйствия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

3. ОписаниС дСмонстрационного модуля с ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ описаниСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… стандартных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… стандартных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ нСсколько стандартных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²: TListBox, TLabel, TActionMainMenu, TActionToolBar.

TActionMainMenu — спСциализированный ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ (ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ TPanel), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ элСмСнты дСйствий Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠ΅, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π² ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅ ДСйствий. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΏΠΎΡΡ€Π΅Π΄ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ связь с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ TActionManager.

TActionManager являСтся своСго Ρ€ΠΎΠ΄Π° «ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΌ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠΌ», ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ элСмСнты управлСния прилоТСния.

TActionToolBar — панСль инструмСнты, для размСщСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ созданы Π² TActionManager.

TLabel — ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Standart. Π“Π»Π°Π²Π½ΠΎΠ΅ свойство ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° TLabel — Caption, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TListBox ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ список Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹Ρ… элСмСнтов, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ… поиска, добавлСния ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ»ΠΈ ΠΈΠ³Ρ€ΠΎΠΊΠ°. ОсновноС свойство ListBox — Items, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅Π΅ Π·Π° ΡΠΏΠΈΡΠΎΠΊ строк ΠΈ ΡΠΎΠΎΡ‚вСтствСнно ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π΅ Ρ‚ΠΈΠΏ TStrings. TStrings прСдставляСт собой Π½Π°Π±ΠΎΡ€ строк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся достаточно ΠΌΠΎΡ‰Π½Ρ‹ΠΌ срСдством для хранСния ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, прСдставлСнной Π² Π²ΠΈΠ΄Π΅ строк.

ОписаниС внСшнСго Π²ΠΈΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Окно содСрТит 3 Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° TLabel для отобраТСния надписСй Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅,

2 Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° TListBox для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΈΠ³Ρ€ΠΎΠΊΠ°Ρ…, Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ TActionMainMenuBar ΠΈ TActionToolBar для отобраТСния мСню. Π•Ρ‰Π΅ ΠΎΠ½ΠΎ содСрТит Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ TSaveDialog ΠΈ TOpenDialog для сохранСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΠΎΡ‚крытия Ρ€Π°Π½Π΅Π΅ сохранСнной Ρ€Π°Π±ΠΎΡ‚Ρ‹ соотвСтствСнно.

ПанСль быстрого запуска выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

МСню «Π€Π°ΠΉΠ»» ΠΈ «ΠŸΡ€Π°Π²ΠΊΠ°» содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

НСкоторыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ мСню ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ быстрого запуска нСдоступны с Π½Π°Ρ‡Π°Π»Π° запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ся ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π΅ΠΉ. ΠŸΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ доступны лишь ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ «ΠΠΎΠ²Π°Ρ Π»ΠΈΠ³Π°», «ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ» ΠΈ «Π’Ρ‹Ρ…ΠΎΠ΄» .

ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π»ΠΈΠ³Ρƒ появится Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π³Π΄Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π°Ρ‚ΡŒ имя Π½ΠΎΠ²ΠΎΠΉ Π»ΠΈΠ³ΠΈ.

ПослС Π²Π²ΠΎΠ΄Π° названия ΠΈ Π½Π°ΠΆΠ°Ρ‚ия ΠΊΠ½ΠΎΠΏΠΊΠΈ «ΠžΠš» Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π»ΠΈΠ³ΠΈ, Ссли ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ, смСнится Π½Π° Π½ΠΎΠ²ΠΎΠ΅. Π‘Ρ‚Π°Π½ΡƒΡ‚ доступными Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ мСню, ΠΊΠ°ΠΊ «Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ³Ρƒ», «Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π»ΠΈΠ³Ρƒ», «Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ» ΠΈ «Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ» .

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° открытия Ρ€Π°Π½Π΅Π΅ сохранСнной Π»ΠΈΠ³ΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ПослС открытия Ρ„Π°ΠΉΠ»Π° ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Для добавлСния ΠΈΠ³Ρ€ΠΎΠΊΠ° Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠΊΠ°». ПослС этого появится ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ ΠΈ Π½ΠΎΠΌΠ΅Ρ€ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ³Ρ€ΠΎΠΊΠ°. Для Π²Π²ΠΎΠ΄Π° Π½ΠΎΠΌΠ΅Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TMaskEdit с ΠΌΠ°ΡΠΊΠΎΠΉ «! 99; 1; _», которая ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ввСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†ΠΈΡ„Ρ€Ρ‹.

Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠœΠΎΠ΄ΡƒΠ»ΡŒ PlayerInfo

unit PlayerInfo;

interface

uses Main;

type

TPlayerInfo=class

private

Surname: string;

Number: integer;

public

constructor Create (aSurname: string; aNumber: integer);

function GetSurname: string;

procedure SetSurname (aSurname: string);

function GetNumber: integer;

procedure SetNumber (aNumber: integer);

end;

implementation

constructor TPlayerInfo. Create (aSurname: string; aNumber: integer);

begin

Surname: =aSurname;

Number: =aNumber;

end;

function TPlayerInfo. GetSurname;

begin

result: =Surname;

end;

procedure TPlayerInfo. SetSurname (aSurname: string);

begin

Surname: =aSurname;

end;

function TPlayerInfo. GetNumber: integer;

begin

result: =Number;

end;

procedure TPlayerInfo. SetNumber (aNumber: integer);

begin

Number: =aNumber;

end;

end.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Player

unit Player

interface

uses Main, PlayerInfo;

type

TPlayer=class

private

PlayerData: TPlayerInfo;

Next: TPlayer;

public

constructor Create (aSurname: string; aNumber: integer);

function GetPlayerData: TPlayerInfo;

procedure SetPlayerData (aPlayerData: TPlayerInfo);

function GetNext: TPlayer;

procedure SetNext (aNext: TPlayer);

end;

implementation

constructor TPlayer. Create (aSurname: string; aNumber: integer);

begin

PlayerData: =TPlayerInfo. Create (aSurname, aNumber);

Next: =nil;

end;

function TPlayer. GetPlayerData: TPlayerInfo;

begin

result: =PlayerData;

end;

procedure TPlayer. SetPlayerData (aPlayerData: TPlayerInfo);

begin

PlayerData: =aPlayerData;

end;

function TPlayer. GetNext: TPlayer;

begin

result: =Next;

end;

procedure TPlayer. SetNext (aNext: TPlayer);

begin

Next: =aNext;

end;

end.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Team

unit Team;

interface

uses Main, PlayerInfo, Player;

type

TTeam=class

private

NameTeam: string;

First, Last: TPlayer;

Count: integer;

public

constructor Create (aNameTeam: string);

function GetNameTeam: string;

procedure SetNameTeam (aNameTeam: string);

function GetFirst: TPlayer;

procedure SetFirst (aFirst: TPlayer);

function GetLast: TPlayer;

procedure SetLast (aLast: TPlayer);

function GetCount: integer;

procedure SetCount (aCount: integer);

procedure AddPlayer (aSurname: string; aNumber: integer);

function SearchPlayer (aSurname: string): TPlayerInfo; overload;

function SearchPlayer (aNumber: integer): TPlayerInfo; overload;

function DeletePlayer: boolean;

end;

implementation

constructor TTeam. Create (aNameTeam: string);

begin

NameTeam: =aNameTeam;

First: =TPlayer. Create ('Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ', 1);

Last: =First;

Count: =0;

end;

function TTeam. GetNameTeam: string;

begin

result: =NameTeam;

end;

procedure TTeam. SetNameTeam (aNameTeam: string);

begin

NameTeam: =aNameTeam;

end;

function TTeam. GetFirst: TPlayer;

begin

result: =First;

end;

procedure TTeam. SetFirst (aFirst: TPlayer);

begin

First: =aFirst;

end;

function TTeam. GetLast: TPlayer;

begin

result: =Last;

end;

procedure TTeam. SetLast (aLast: TPlayer);

begin

Last: =aLast;

end;

function TTeam. GetCount: integer;

begin

result: =Count;

end;

procedure TTeam. SetCount (aCount: integer);

begin

Count: =aCount;

end;

procedure TTeam. AddPlayer (aSurname: string; aNumber: integer);

var

Temp: TPlayer;

begin

Temp: =TPlayer. Create (aSurname, aNumber);

Last. SetNext (Temp);

Last: =Last. GetNext;

Count: =Count+1;

end;

function TTeam. SearchPlayer (aSurname: string): TPlayerInfo;

var

Temp: TPlayer;

begin

Temp: =First. GetNext;

result: =nil;

while Temp<>nil do

if Temp. GetPlayerData. GetSurname=aSurname then

begin

result: =Temp. GetPlayerData;

break;

end

else

Temp: =Temp. GetNext;

end;

function TTeam. SearchPlayer (aNumber: integer): TPlayerInfo;

var

Temp: TPlayer;

begin

Temp: =First. GetNext;

result: =nil;

while Temp<>nil do

if Temp. GetPlayerData. GetNumber=aNumber then

begin

result: =Temp. GetPlayerData;

break;

end

else

Temp: =Temp. GetNext;

end;

function TTeam. DeletePlayer: boolean;

var

Temp: TPlayer;

begin

if First=Last then

result: =false

else

if Count=1 then

begin

First. SetNext (nil);

Last: =First;

Count: =0;

result: =true;

end

else

begin

Temp: =First. GetNext;

First. SetNext (Temp. GetNext);

Temp. Free;

Count: =Count-1;

result: =true;

end;

end;

end.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ League

unit League;

interface

uses Main, PlayerInfo, Player, Team, SysUtils;

Const KolTeam=3;

type

TLeague=class

private

NameLeague: string;

Teams: array [1. KolTeam] of TTeam;

Count: integer;

public

constructor Create (aNameLeague: string);

function GetNameLeague: string;

procedure SetNameLeague (aNameLeague: string);

function GetTeam (i: integer): TTeam;

function GetCount: integer;

procedure SetCount (aCount: integer);

function SearchTeam (aNameTeam: string): integer;

function AddTeam (aNameNewTeam, aNameSearchTeam: string): boolean;

function DeleteTeam (aNameTeam: string): boolean;

procedure Open (FileName: string);

procedure Save (Filename: string);

end;

implementation

constructor TLeague. Create (aNameLeague: string);

var i: integer;

begin

NameLeague: =aNameLeague;

for i: =1 to Count do Teams [i]: =nil;

Count: =0;

end;

function TLeague. GetNameLeague: string;

begin

result: =NameLeague;

end;

procedure TLeague. SetNameLeague (aNameLeague: string);

begin

NameLeague: =aNameLeague;

end;

function TLeague. GetTeam (i: integer): TTeam;

begin

result: =Teams [i];

end;

function TLeague. GetCount: integer;

begin

result: =Count;

end;

procedure TLeague. SetCount (aCount: integer);

begin

Count: =aCount;

end;

function TLeague. SearchTeam (aNameTeam: string): integer;

var

i: integer;

begin

result: =0;

for i: =1 to Count do

if Teams [i]. GetNameTeam=aNameTeam then

begin

result: =i;

break;

end;

end;

function TLeague. AddTeam (aNameNewTeam, aNameSearchTeam: string): boolean;

var

i, Temp: integer;

begin

result: =false;

if Count

if Count>0 then

begin

Temp: =SearchTeam (aNameSearchTeam);

if Temp<>0 then

begin

Count: =Count+1;

for i: =Count downto Temp+1 do

Teams [i]: =Teams [i-1];

Teams [Temp+1]: =TTeam. Create (aNameNewTeam);

result: =true;

end

else

MainForm. ErrorMessage ('Ошибка!!! ','Команда с ΠΈΠΌΠ΅Π½Π΅ΠΌ '+aNameSearchTeam+' Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°');

end

else

begin

Count: =1;

Teams [Count]: =TTeam. Create (aNameNewTeam);

result: =true;

end

else

MainForm. ErrorMessage ('Ошибка!!! ','НСт мСста для добавлСния');

end;

function TLeague. DeleteTeam (aNameTeam: string): boolean;

var

i, j: integer;

begin

result: =false;

i: =1;

while i<=Count do

if Teams [i]. GetNameTeam=aNameTeam then

begin

for j: =i to Count-1 do

Teams [j]: =Teams [j+1];

Count: =Count-1;

result: =true;

break;

end

else

i: =i+1;

end;

procedure TLeague. Open (FileName: string);

procedure OneToThree (aTempFull: string; var aTempTeamName, aTempPlayerName, aTempPlayerNumber: string);

var

i, j: integer;

begin

i: =1;

while (aTempFull [i] <>^I) do

i: =i+1;

aTempTeamName: =Copy (aTempFull, 1, i-1);

j: =i+1;

while (aTempFull [j] <>^I) do

j: =j+1;

aTempPlayerName: =Copy (aTempFull, i+1,j- (i+1));

aTempPlayerNumber: =Copy (aTempFull, j+1,Length (aTempFull));

end;

var

f: TextFile;

TempLeagueName, TempFull, TempTeamName, TempSearchName, TempPlayerName, TempPlayerNumber: string;

TempTeam: TTeam;

begin

AssignFile (f, FileName);

Reset (f);

ReadLn (f, TempLeagueName);

SetNameLeague (TempLeagueName);

ReadLn (f, TempFull);

TempSearchName: ='';

while TempFull<>'' do

begin

OneToThree (TempFull, TempTeamName, TempPlayerName, TempPlayerNumber);

if SearchTeam (TempTeamName) =0 then

AddTeam (TempTeamName, TempSearchName);

if (TempPlayerName<>'') or (TempPlayerNumber<>'') then

begin

TempTeam: =GetTeam (SearchTeam (TempTeamName));

TempTeam. AddPlayer (TempPlayerName, StrToInt (TempPlayerNumber));

end;

TempSearchName: =TempTeamName;

ReadLn (f, TempFull);

end;

CloseFile (f);

end;

procedure TLeague. Save (FileName: string);

var

f: TextFile;

TempPlayer: TPlayer;

i: integer;

TempString: string;

begin

Assignfile (f, FileName);

Rewrite (f);

WriteLn (f, GetNameLeague);

for i: =1 to GetCount do

begin

if GetTeam (i). GetCount>0 then

begin

TempPlayer: =GetTeam (i). GetFirst. GetNext;

while TempPlayer<>nil do

begin

TempString: =GetTeam (i). GetNameTeam+^I+TempPlayer. GetPlayerData. GetSurname+^I+IntToStr (TempPlayer. GetPlayerData. GetNumber);

writeln (f, TempString);

TempPlayer: =TempPlayer. GetNext;

end;

end

else

writeln (f, GetTeam (i). GetNameTeam+^I+''+^I+'');

end;

CloseFile (f);

end;

end.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Main

unit Main;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ActnList, ImgList, ActnCtrls, ToolWin, ActnMan, ActnMenus,

XPStyleActnCtrls, XPMan, StdCtrls;

type

TMainForm = class (TForm)

ActionManager1: TActionManager;

ActionMainMenuBar1: TActionMainMenuBar;

ActionToolBar1: TActionToolBar;

ImageList1: TImageList;

NewLeague: TAction;

EditLeague: TAction;

DeleteLeague: TAction;

ExitProgramm: TAction;

SaveData: TAction;

OpenData: TAction;

AddTeamToLeague: TAction;

FindTeam: TAction;

DelTeam: TAction;

AddPlayerToTeam: TAction;

FindPlayer: TAction;

DelPlayerFromTeam: TAction;

TeamsBox: TListBox;

PlayersBox: TListBox;

LeagueName: TLabel;

Label2: TLabel;

Label3: TLabel;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

procedure ErrorMessage (cap, lab: string);

procedure RefreshPlayersBox;

procedure RefreshTeamsBox;

procedure RefreshEnables;

procedure FormCreate (Sender: TObject);

procedure NewLeagueExecute (Sender: TObject);

procedure EditLeagueExecute (Sender: TObject);

procedure DeleteLeagueExecute (Sender: TObject);

procedure OpenDataExecute (Sender: TObject);

procedure SaveDataExecute (Sender: TObject);

procedure ExitProgrammExecute (Sender: TObject);

procedure AddTeamToLeagueExecute (Sender: TObject);

procedure FindTeamExecute (Sender: TObject);

procedure DelTeamExecute (Sender: TObject);

procedure TeamsBoxClick (Sender: TObject);

procedure AddPlayerToTeamExecute (Sender: TObject);

procedure FindPlayerExecute (Sender: TObject);

procedure DelPlayerFromTeamExecute (Sender: TObject);

end;

var

MainForm: TMainForm;

implementation

uses League, Player, PlayerInfo, Team, Lab1Ed1But1, Error, Lab1But2, Lab3Ed2But2, Lab2Ed2But2;

var League1: TLeague;

{$R *. dfm}

procedure TMainForm. ErrorMessage (cap, lab: string); // ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅

begin

ErrorForm. Caption: =cap;

ErrorForm. ErrorMes. Caption: =lab;

ErrorForm. ShowModal;

end;

procedure TMainForm. RefreshPlayersBox;

var Temp: TPlayer;

begin

if TeamsBox. ItemIndex>=0 then

begin

PlayersBox. Clear;

Temp: =League1. GetTeam (League1. SearchTeam (TeamsBox. Items. Strings [TeamsBox. ItemIndex])). GetFirst. GetNext;

while Temp<>nil do

begin

PlayersBox. Items. Add (Temp. GetPlayerData. GetSurname+^I+IntToStr (Temp. GetPlayerData. GetNumber));

Temp: =Temp. GetNext;

end;

end;

end;

procedure TMainForm. RefreshTeamsBox;

var

i: integer;

Temp: TTeam;

begin

TeamsBox. Clear;

if League1. GetCount>0 then

for i: =1 to League1. GetCount do

begin

Temp: =League1. GetTeam (i);

TeamsBox. Items. Add (Temp. GetNameTeam);

end;

end;

procedure TMainForm. RefreshEnables;

begin

if League1=nil then

begin

MainForm. EditLeague. Enabled: =false;

MainForm. DeleteLeague. Enabled: =false;

MainForm. SaveData. Enabled: =false;

MainForm. AddTeamToLeague. Enabled: =false;

MainForm. FindTeam. Enabled: =false;

MainForm. DelTeam. Enabled: =false;

MainForm. AddPlayerToTeam. Enabled: =false;

MainForm. FindPlayer. Enabled: =false;

MainForm. DelPlayerFromTeam. Enabled: =false;

end

else

begin

MainForm. LeagueName. Caption: =League1. GetNameLeague;

MainForm. EditLeague. Enabled: =true;

MainForm. DeleteLeague. Enabled: =true;

MainForm. SaveData. Enabled: =true;

MainForm. AddTeamToLeague. Enabled: =true;

if League1. GetCount<>0 then

begin

MainForm. FindTeam. Enabled: =true;

MainForm. DelTeam. Enabled: =true;

MainForm. AddPlayerToTeam. Enabled: =true;

if TeamsBox. ItemIndex>=0 then

if League1. GetTeam (League1. SearchTeam (TeamsBox. Items. Strings [TeamsBox. ItemIndex])). GetCount<>0 then

begin

MainForm. FindPlayer. Enabled: =true;

MainForm. DelPlayerFromTeam. Enabled: =true;

end

else

begin

MainForm. FindPlayer. Enabled: =false;

MainForm. DelPlayerFromTeam. Enabled: =false;

end;

end

else

begin

MainForm. FindTeam. Enabled: =false;

MainForm. DelTeam. Enabled: =false;

MainForm. AddPlayerToTeam. Enabled: =false;

MainForm. FindPlayer. Enabled: =false;

MainForm. DelPlayerFromTeam. Enabled: =false;

end;

end;

end;

procedure TMainForm. FormCreate (Sender: TObject);

begin

RefreshEnables;

end;

// ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ мСню «Π€Π°ΠΉΠ»»

procedure TMainForm. NewLeagueExecute (Sender: TObject); // созданиС новой лиги

begin

Lab1Ed1But2Form. Caption: ='Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π»ΠΈΠ³ΠΈ';

Lab1Ed1But2Form. Label1. Caption: ='Π’Π²Π΅Π΄ΠΈΡ‚Π΅ имя Π»ΠΈΠ³ΠΈ';

Lab1Ed1But2Form. Edit1. Text: ='';

if (Lab1Ed1But2Form. ShowModal=mrOK) then

if Lab1Ed1But2Form. Edit1. Text<>'' then

begin

League1: =TLeague. Create (Lab1Ed1But2Form. Edit1. Text);

MainForm. LeagueName. Caption: =Lab1Ed1But2Form. Edit1. Text;

Lab1Ed1But2Form. Close;

end

else

MainForm. ErrorMessage ('Ошибка!!! ','НСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пустоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅');

RefreshEnables;

end;

procedure TMainForm. EditLeagueExecute (Sender: TObject); // ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ созданной Ρ€Π°Π½Π΅Π΅ Π»ΠΈΠ³ΠΈ

begin

Lab1Ed1But2Form. Caption: ='Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΈΠ³ΠΈ';

Lab1Ed1But2Form. Label1. Caption: ='Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½ΠΎΠ²ΠΎΠ΅ имя Π»ΠΈΠ³ΠΈ';

Lab1Ed1But2Form. Edit1. Text: ='';

if (Lab1Ed1But2Form. ShowModal=mrOK) then

if Lab1Ed1But2Form. Edit1. Text<>'' then

begin

League1. SetNameLeague (Lab1Ed1But2Form. Edit1. Text);

MainForm. LeagueName. Caption: =Lab1Ed1But2Form. Edit1. Text;

Lab1Ed1But2Form. Close;

end

else

MainForm. ErrorMessage ('Ошибка!!! ','НСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пустоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅');

RefreshEnables;

end;

procedure TMainForm. DeleteLeagueExecute (Sender: TObject); // ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π½Π΅Π΅ созданной Π»ΠΈΠ³ΠΈ

begin

Lab1But2Form. Caption: ='Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΠ³ΠΈ';

Lab1But2Form. Label1. Caption: ='ВсС нСсохранСнныС Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ потСряны! '+#10#13+'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Π»ΠΈΠ³Ρƒ? ';

if Lab1But2Form. ShowModal=mrYES then

begin

League1: =nil;

MainForm. LeagueName. Caption: ='Π›ΠΈΠ³Π° Π½Π΅ ΡΠΎΠ·Π΄Π°Π½Π°. ';

TeamsBox. Clear;

PlayersBox. Clear;

end;

RefreshEnables;

end;

procedure TMainForm. OpenDataExecute (Sender: TObject); // ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° открытия Ρ€Π°Π½Π΅Π΅ сохранСнных Π΄Π°Π½Π½Ρ‹Ρ…

begin

if OpenDialog1. Execute then

begin

League1: =TLeague. Create ('Temp');

League1. Open (OpenDialog1. FileName);

MainForm. RefreshTeamsBox;

MainForm. PlayersBox. Clear;

RefreshEnables;

end;

end;

procedure TMainForm. SaveDataExecute (Sender: TObject); // ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° сохранСния Π΄Π°Π½Π½Ρ‹Ρ…

begin

SaveDialog1. FileName: =League1. GetNameLeague;

if SaveDialog1. Execute then

League1. Save (SaveDialog1. FileName);

end;

procedure TMainForm. ExitProgrammExecute (Sender: TObject);

begin

Lab1But2Form. Caption: ='Π’Ρ‹Ρ…ΠΎΠ΄';

Lab1But2Form. Label1. Caption: ='ВсС нСсохранСнныС Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ потСряны! '+#10#13+'Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹? ';

if Lab1But2Form. ShowModal=mrYES then

MainForm. Close;

end;

procedure TMainForm. TeamsBoxClick (Sender: TObject); // обновляСт список ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ², ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π²Ρ‹Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

begin

MainForm. RefreshPlayersBox;

RefreshEnables;

end;

// ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ мСню «ΠŸΡ€Π°Π²ΠΊΠ°»

// ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ

procedure TMainForm. AddTeamToLeagueExecute (Sender: TObject); // ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

begin

if League1. GetCount=0 then

begin

Lab1Ed1But2Form. Caption: ='Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹';

Lab1Ed1But2Form. Label1. Caption: ='Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹';

Lab1Ed1But2Form. Edit1. Text: ='';

if (Lab1Ed1But2Form. ShowModal=mrOK) then

if Lab1Ed1But2Form. Edit1. Text<>'' then

begin

League1. AddTeam (Lab1Ed1But2Form. Edit1. Text, Lab1Ed1But2Form. Edit1. Text);

MainForm. TeamsBox. Items. Add (Lab1Ed1But2Form. Edit1. Text);

Lab1Ed1But2Form. Close;

MainForm. RefreshTeamsBox;

end

else

MainForm. ErrorMessage ('Ошибка!!! ','НСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пустоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅');

end

else

begin

Lab2Ed2But2Form. Caption: ='Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹';

Lab2Ed2But2Form. Label1. Caption: ='Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹';

Lab2Ed2But2Form. Edit1. Text: ='';

Lab2Ed2But2Form. Label2. Caption: ='Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹';

if TeamsBox. ItemIndex>=0 then

Lab2Ed2But2Form. Edit2. Text: =TeamsBox. Items. Strings [TeamsBox. ItemIndex]

else

Lab2Ed2But2Form. Edit2. Text: ='';

if (Lab2Ed2But2Form. ShowModal=mrOK) then

if (Lab2Ed2But2Form. Edit1. Text<>'') and (Lab2Ed2But2Form. Edit2. Text<>'') then

begin

League1. AddTeam (Lab2Ed2But2Form. Edit1. Text, Lab2Ed2But2Form. Edit2. Text);

MainForm. TeamsBox. Items. Add (Lab2Ed2But2Form. Edit1. Text);

Lab2Ed2But2Form. Close;

MainForm. RefreshTeamsBox;

end

else

MainForm. ErrorMessage ('Ошибка!!! ','НСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пустоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅');

end;

RefreshEnables;

end;

procedure TMainForm. FindTeamExecute (Sender: TObject); // ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° поиска ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

var i: integer;

begin

Lab1Ed1But2Form. Caption: ='Поиск ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹';

Lab1Ed1But2Form. Label1. Caption: ='Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹';

Lab1Ed1But2Form. Edit1. Text: ='';

TeamsBox. ItemIndex: =-1;

if (Lab1Ed1But2Form. ShowModal=mrOK) then

if Lab1Ed1But2Form. Edit1. Text<>'' then

begin

if League1. SearchTeam (Lab1Ed1But2Form. Edit1. Text) <>0 then

for i: =0 to TeamsBox. Count-1 do

if TeamsBox. Items. Strings [i] =Lab1Ed1But2Form. Edit1. Text then

begin

TeamsBox. ItemIndex: =i;

break;

end;

Lab1Ed1But2Form. Close;

MainForm. RefreshPlayersBox;

end

else

MainForm. ErrorMessage ('Ошибка!!! ','НСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пустоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅');

end;

procedure TMainForm. DelTeamExecute (Sender: TObject); // ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° удалСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

var i: integer;

begin

Lab1Ed1But2Form. Caption: ='Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹';

Lab1Ed1But2Form. Label1. Caption: ='Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ удаляСмой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹';

if TeamsBox. ItemIndex>=0 then

Lab1Ed1But2Form. Edit1. Text: =TeamsBox. Items. Strings [TeamsBox. ItemIndex]

else

Lab1Ed1But2Form. Edit1. Text: ='';

TeamsBox. ItemIndex: =-1;

if (Lab1Ed1But2Form. ShowModal=mrOK) then

if Lab1Ed1But2Form. Edit1. Text<>'' then

begin

if League1. DeleteTeam (Lab1Ed1But2Form. Edit1. Text) then

for i: =0 to TeamsBox. Count-1 do

if TeamsBox. Items. Strings [i] =Lab1Ed1But2Form. Edit1. Text then

begin

TeamsBox. Items. Delete (i);

break;

end;

Lab1Ed1But2Form. Close;

MainForm. RefreshTeamsBox;

MainForm. RefreshPlayersBox;

end

else

MainForm. ErrorMessage ('Ошибка!!! ','НСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пустоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅');

RefreshEnables;

end;

// ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΈΠ³Ρ€ΠΎΠΊΠ°ΠΌΠΈ

procedure TMainForm. AddPlayerToTeamExecute (Sender: TObject); // ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° добавлСния ΠΈΠ³Ρ€ΠΎΠΊΠ°

begin

if TeamsBox. ItemIndex>=0 then

begin

Lab3Ed2But2Form. Caption: ='Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ³Ρ€ΠΎΠΊΠ°';

Lab3Ed2But2Form. Label1. Caption: ='Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ³Ρ€ΠΎΠΊΠ°';

Lab3Ed2But2Form. Edit1. Text: ='';

Lab3Ed2But2Form. MaskEdit1. Text: ='';

if (Lab3Ed2But2Form. ShowModal=mrOK) then

if (Lab3Ed2But2Form. Edit1. Text<>'') and (Lab3Ed2But2Form. MaskEdit1. Text<>' ') then

begin

League1. GetTeam (League1. SearchTeam (TeamsBox. Items. Strings [TeamsBox. ItemIndex])). AddPlayer (Lab3Ed2But2Form. Edit1. Text, StrToInt (Trim (Lab3Ed2But2Form. MaskEdit1. Text)));

Lab3Ed2But2Form. Close;

MainForm. RefreshPlayersBox;

end

else

MainForm. ErrorMessage ('Ошибка!!! ','НСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пустоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅');

end

else

MainForm. ErrorMessage ('Ошибка!!! ','Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°');

RefreshEnables;

end;

procedure TMainForm. FindPlayerExecute (Sender: TObject); // ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° поиска ΠΈΠ³Ρ€ΠΎΠΊΠ°

var

i: integer;

TempSN, TempNM: TPlayerInfo;

begin

if TeamsBox. ItemIndex>=0 then

begin

Lab3Ed2But2Form. Caption: ='Поиск ΠΈΠ³Ρ€ΠΎΠΊΠ°';

Lab3Ed2But2Form. Label1. Caption: ='Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ³Ρ€ΠΎΠΊΠ°';

Lab3Ed2But2Form. Edit1. Text: ='';

Lab3Ed2But2Form. MaskEdit1. Text: ='';

PlayersBox. ItemIndex: =-1;

if (Lab3Ed2But2Form. ShowModal=mrOK) then

if (Lab3Ed2But2Form. Edit1. Text<>'') and (Lab3Ed2But2Form. MaskEdit1. Text<>' ') then

begin

TempSN: =League1. GetTeam (League1. SearchTeam (TeamsBox. Items. Strings [TeamsBox. ItemIndex])). SearchPlayer (Lab3Ed2But2Form. Edit1. Text);

TempNM: =League1. GetTeam (League1. SearchTeam (TeamsBox. Items. Strings [TeamsBox. ItemIndex])). SearchPlayer (StrToInt (Trim (Lab3Ed2But2Form. MaskEdit1. Text)));

if TempSN=TempNM then

for i: =0 to PlayersBox. Count-1 do

if PlayersBox. Items. Strings [i] =TempSN. GetSurname+^I+IntToStr (TempNM. GetNumber) then

begin

PlayersBox. ItemIndex: =i;

break;

end;

Lab3Ed2But2Form. Close;

end

else

MainForm. ErrorMessage ('Ошибка!!! ','НСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пустоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅');

end

else

MainForm. ErrorMessage ('Ошибка!!! ','Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°');

end;

procedure TMainForm. DelPlayerFromTeamExecute (Sender: TObject); // ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° удалСния ΠΈΠ³Ρ€ΠΎΠΊΠ°

begin

if TeamsBox. ItemIndex>=0 then

begin

Lab1But2Form. Caption: ='Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ³Ρ€ΠΎΠΊΠ°';

Lab1But2Form. Label1. Caption: ='Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠΊΠ°? ';

if (Lab1But2Form. ShowModal=mrYES) then

begin

League1. GetTeam (League1. SearchTeam (TeamsBox. Items. Strings [TeamsBox. ItemIndex])). DeletePlayer;

Lab3Ed2But2Form. Close;

MainForm. RefreshPlayersBox;

end

end

else

MainForm. ErrorMessage ('Ошибка!!! ','Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°');

RefreshEnables;

end;

end.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Error

unit Error;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TErrorForm = class (TForm)

ErrorMes: TLabel;

OKButton: TButton;

procedure OKButtonClick (Sender: TObject);

end;

var

ErrorForm: TErrorForm;

implementation

{$R *. dfm}

procedure TErrorForm. OKButtonClick (Sender: TObject);

begin

ErrorForm. Close;

end;

end.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Lab1But2

unit Lab1But2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Main;

type

TLab1But2Form = class (TForm)

Label1: TLabel;

YesButton: TButton;

NoButton: TButton;

end;

var

Lab1But2Form: TLab1But2Form;

implementation

{$R *. dfm}

end.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Lab1Ed1But1

unit Lab1Ed1But1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Main;

type

TLab1Ed1But2Form = class (TForm)

Label1: TLabel;

Edit1: TEdit;

OKButton: TButton;

CancelButton: TButton;

end;

var

Lab1Ed1But2Form: TLab1Ed1But2Form;

implementation

{$R *. dfm}

end.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Lab2Ed2But2

unit Lab2Ed2But2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Main;

type

TLab2Ed2But2Form = class (TForm)

Label1: TLabel;

Edit1: TEdit;

OKButton: TButton;

CancelButton: TButton;

Label2: TLabel;

Edit2: TEdit;

end;

var

Lab2Ed2But2Form: TLab2Ed2But2Form;

implementation

{$R *. dfm}

end.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Lab3Ed2But2

unit Lab3Ed2But2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Mask, StdCtrls, Main;

type

TLab3Ed2But2Form = class (TForm)

Label1: TLabel;

Edit1: TEdit;

OKButton: TButton;

CancelButton: TButton;

Label2: TLabel;

Label3: TLabel;

MaskEdit1: TMaskEdit;

end;

var

Lab3Ed2But2Form: TLab3Ed2But2Form;

implementation

{$R *. dfm}

end.

Π’Ρ‹Π²ΠΎΠ΄

Бписок — это Π½Π°Π±ΠΎΡ€ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… элСмСнтов, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° Π½ΠΈΠΌ элСмСнт (Π² Π΄Π²ΡƒΡ…связных списках элСмСнты списка ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΅Ρ‰Π΅ ΠΈ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ элСмСнт). ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ списков ΠΎΡ‚ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ ΠΈ ΡΡ‚Π΅ΠΊΠΎΠ² состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΡΠΏΠΈΡΠΎΠΊ элСмСнты Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Π»ΡŽΠ±ΠΎΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ мСсто ΠΈ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ся Ρ‚ΠΎΠΆΠ΅ ΠΈΠ· Π»ΡŽΠ±ΠΎΠ³ΠΎ мСста списка.

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

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со ΡΠΏΠΈΡΠΊΠΎΠΌ: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠ»ΠΈ послС Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта, поиск элСмСнта ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ цСлочислСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ содСрТится количСство Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… элСмСнтов.

1. ΠšΡƒΠ»ΡŒΡ‚ΠΈΠ½, Н.Π‘. «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Turbo Pascal 7.0 ΠΈ Delphi» / Н. Π‘. ΠšΡƒΠ»ΡŒΡ‚ΠΈΠ½ — БПб.: Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2007. — 400 с.

2. ΠšΠ½ΡƒΡ‚, Π”.Π­. «Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования» / Π”. Π­. ΠšΠ½ΡƒΡ‚ — Π’ΠΈΠ»ΡŒΡΠΌΡ, 2000. — 682 с.

3. Π‘Π°ΠΊΠ½Π΅Π»Π», Π”ΠΆ. Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Delphi / Π”ΠΆ. Π‘Π°ΠΊΠ½Π΅Π»Π» — Diasoft, 2003. — 557 с.

4. Π’ΠΈΡ€Ρ‚, Н. Алгоритмы ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… / Н. Π’ΠΈΡ€Ρ‚ — ΠœΠΈΡ€, 1989. — 360 с.

5. Π€Π»Π΅Π½ΠΎΠ², М.Π•. «Π‘иблия Delphi» / М. Π•. Π€Π»Π΅Π½ΠΎΠ² — БПб.: Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2007. — 880 с.

6. ΠšΠΎΡ€ΠΌΠ΅Π½, Π’. Алгоритмы: построСниС ΠΈ Π°Π½Π°Π»ΠΈΠ· / Π’. ΠšΠΎΡ€ΠΌΠ΅Π½, Π§. ЛСйзСрсон, Π . РивСст; Π’ΠΈΠ»ΡŒΡΠΌΡ, 2007. — 1296 с.

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