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

Автоматизация Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ мСста Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ° рСгистратуры

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

ListDate; функция, для установлСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π΄Π°Ρ‚Ρ‹ дня Π½Π΅Π΄Π΅Π»ΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ составляСтся Π΄Π°Π½Π½ΠΎΠ΅ расписаниС Π’Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹ΠΉ класс Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ Dictionary, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса: Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ программирования Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½Π° концСпция ООП. Π‘Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ срСдства, прСдоставляСмыС Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этой ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Автоматизация Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ мСста Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ° рСгистратуры (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Автоматизация Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ мСста Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ° рСгистратуры

1. Основная Ρ‡Π°ΡΡ‚ΡŒ

ΠŸΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ Π±ΡƒΠ΄Π΅ΠΌ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования:

Рис. 1. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° основных Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования АРМ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ° рСгистратуры ΠŸΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠ³ΠΎ Π²Ρ€Π°Ρ‡Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ вносит Π² Π‘Π” всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π΅ΠΌ, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚: Π€.И.О. Π²Ρ€Π°Ρ‡Π°, Π΅Π³ΠΎ спСциализация, Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π°, ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠΌ ΠΊ Π²Π²Π΅Π΄Π΅Π½ΠΈΡŽ класса Doctor, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ сотрудника ΠΏΠΎΠ»ΠΈΠΊΠ»ΠΈΠ½ΠΈΠΊΠΈ.

Π’Π°ΠΊΠΈΠ΅ свойства ΠΊΠ°ΠΊ Π€.И.О., спСциализация ΠΈ Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° класса Doctor ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартными ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.NET Framework.

ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π²Ρ€Π°Ρ‡Π° ограничимся ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ сроком Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ записи Ρ€Π°Π²Π½Ρ‹ΠΌ ΠΎΠ΄Π½ΠΎΠΉ Π½Π΅Π΄Π΅Π»Π΅.

Π”Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ:

Β· БоставлСниС Π±Π»Π°Π½ΠΊΠ° расписания с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚Π°

Β· АвтоматичСскоС ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ просрочСнных записСй ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π»Π°Π½ΠΊΠ° расписания Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ дня Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ нСдСлю

Β· Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ свСдСний ΠΎ ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚Π΅ Π² ΠΆΡƒΡ€Π½Π°Π» ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π°Ρ‡Π°

Β· ИзмСнСниС свСдСний ΠΎ ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚Π΅ Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π°Ρ‡Π° Π”Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π΄Π²Π° ΠΏΠΎΠ΄ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° — класс DayShedule, ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ расписаниС ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π½Π° ΠΎΠ΄ΠΈΠ½ дСнь, ΠΈ ΠΊΠ»Π°ΡΡ Timetable, Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ класс DayShedule ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π½Π΅Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ (ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ срок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ»ΠΈΡΡŒ) Π³Ρ€Π°Ρ„ΠΈΠΊ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄ΠΎΠΊΡ‚ΠΎΡ€Π°.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, для управлСния Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ графичСский интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

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

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ интСрфСйса, Π±ΡƒΠ΄Π΅ΠΌ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

Рис. 2. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΠΈΠ½Ρ‚СрфСйсС Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ АРМ Π’ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅ эта Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° прСдставлСна Π½Π° Ρ€ΠΈΡ. 5.

По ΠΈΡ‚ΠΎΠ³Π°ΠΌ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠΌΠ΅Π΅ΠΌ прСдставлСниС ΠΎΠ± ΠΎΠ±Ρ‰Π΅ΠΉ структурС Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ систСмы ΠΈ Π΅Π΅ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ интСрфСйсС.

Π’ Ρ†Π΅Π»ΠΎΠΌ, структуру АРМ прСдставляСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π‘Π£Π‘Π” остановимся Π½Π° Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Binding Source стандартной поставки .NET Framework, Ρ‚. ΠΊ. ΠΎΠ½ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ созданиС ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сохраняСмых Π² Π‘Π” сущностСй.

Рис. 3. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ Π·Π°Π΄Π°Ρ‡, Π±Ρ‹Π»Π° составлСна ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° классов:

Π’Π°ΠΊΠΆΠ΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΅ΡΡ‚ΡŒ основания ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π±ΡƒΠ΄ΡƒΡ‰ΡƒΡŽ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ систСмы:

Рис. 3. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° классов Рис. 4. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° развСртывания систСмы Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ развСртывания ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€Π΅Ρ†Π΅Π΄Π΅Π½Ρ‚ΠΎΠ², Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΠ΅Ρ€Π²Π΅Ρ€ΠΎΠ² ΠΏΠΎΠ»ΠΈΠΊΠ»ΠΈΠ½ΠΈΠΊΠΈ, Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ АРМ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ нСпосрСдствСнно Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ ΡΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΎΠ² Π±ΠΎΠ»ΡŒΠ½ΠΈΡ†Ρ‹.

Рис. 5. РазвСрнутая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ На ΡΡ‚Π°ΠΏΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° Π±Ρ‹Π»ΠΎ выявлСно Ρ‚Ρ€ΠΈ класса, совмСстная Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… обСспСчит Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ поставлСнных Π·Π°Π΄Π°Ρ‡. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ взаимодСйствиС этих классов ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ класса.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ класса Doctor:

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… состояний сотрудника:

Рис. 5. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° состояний класса Doctor

На ΡΡ‚Π°ΠΏΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° Π±Ρ‹Π»ΠΈ выявлСны Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ свойства Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ опишСм ΠΈΡ… ΡΠΈΠ³Π½Π°Ρ‚ΡƒΡ€Ρƒ:

Β· + BirthDate: DateTime; Π΄Π°Ρ‚Π° роТдСния

Β· + CabinetNumber: Int; Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π°

· + Name: String; Ѐ.И.О.

Β· + Specialization: String; спСциализация

Β· + Timetable: Timetable; Π³Ρ€Π°Ρ„ΠΈΠΊ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π”Π°Π½Π½Ρ‹Π΅ свойства ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ аксСссор (get) ΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ (set) с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π½Π΅ΠΌΡƒ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ.

ΠŸΡ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… сотрудника Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ внСсСнных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Π½Π°Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚ Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ интСрфСйса ICloneable, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π³ΠΎ копию ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π² ΠΊΠ»Π°ΡΡ добавляСтся Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄:

Β· + Clone (); ΠΌΠ΅Ρ‚ΠΎΠ΄, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ копию Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π’Π°ΠΊ ΠΊΠ°ΠΊ для сохранСния Π΄Π°Π½Π½Ρ‹Ρ… Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ BindingSource, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса Doctor с ΠΏΠΎΠ»ΡΠΌΠΈ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°Π΄Π°Π½ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ конструктор Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

Β· + Doctor ()

Класс Doctor связан с ΠΊΠ»Π°ΡΡΠΎΠΌ Timetable ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ.

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ класса Doctor ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ Π΅Π³ΠΎ интСрфСйс:

Рис. 6. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° класса Doctor

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ класса DayShedule:

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ:

Рис. 7. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ»Π°ΡΡΠΎΠΌ DayShedule

Класс DayShedule, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π΄ΠΎΠΊΡ‚ΠΎΡ€Π° Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ дСнь Π½Π΅Π΄Π΅Π»ΠΈ, ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ инкапсулированныС Π² Π½Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ «ΠΊΠ»ΡŽΡ‡ — Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅» (Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡ — врСмя ΠΏΡ€ΠΈΠ΅ΠΌΠ°, Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚Ρƒ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ — Π€.И.О. ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚Π°) ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡƒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ° Dictionary<TimeSpan, string> входящСго Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ поставку ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.NET Framework.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Π΄Π°Π½Π½ΠΎΠΌ классС Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ свойства:

Β· + Date: DateTime; Π”Π°Ρ‚Π°, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ дня

Β· + DayOfWeek: DayOfWeek; Π”Π΅Π½ΡŒ Π½Π΅Π΄Π΅Π»ΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ составляСтся Π³Ρ€Π°Ρ„ΠΈΠΊ

Β· + Duration: TimeSpan; ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ дня

Β· + EndTime: TimeSpan; ВрСмя окончания Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ дня

Β· + Interval: TimeSpan; ВрСмя, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π½Π° ΠΏΡ€ΠΈΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚Π°

Β· + IsExpired: bool; ΠŸΡ€ΠΎΡΡ€ΠΎΡ‡Π΅Π½ Π»ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊ

Β· + StartTime: TimeSpan; ВрСмя Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ дня Π’Π°ΠΊΠΆΠ΅, для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ повСдСния, помСстим Π² Π΄Π°Π½Π½Ρ‹ΠΉ класс ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹:

Β· + DayShedule; конструктор класса, с ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΌ Π΅ΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ DayOfWeek

Β· + Set; ΠΌΠ΅Ρ‚ΠΎΠ΄, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ заполняСтся расписаниС Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ°

Β· + SyncDate; ΠΌΠ΅Ρ‚ΠΎΠ΄, ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄Π°Ρ‚Ρƒ с Π΄Π°Ρ‚ΠΎΠΉ Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ°

Β· - ClearTasks; функция, нСобходимая для очистки просрочСнных записСй. ВызываСтся Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ SyncDate

Β· - ListDate; функция, для установлСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π΄Π°Ρ‚Ρ‹ дня Π½Π΅Π΄Π΅Π»ΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ составляСтся Π΄Π°Π½Π½ΠΎΠ΅ расписаниС Π’Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹ΠΉ класс Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ Dictionary, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса:

Β· # DayShedule (SerializationInfo); конструктор, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для дСсСрСализации ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса

Β· + GetObjectData; ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для сСриализации ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса Класс DayShedule - Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Π΅Π΄ΠΈΠ½ΠΈΡ†Π° инкапсуляции, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для обСспСчСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΡ… классов, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ систСмы.

Π’ Ρ…ΠΎΠ΄Π΅ проСктирования класса, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ Π΅Π³ΠΎ интСрфСйса:

Рис. 7. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° класса DayShedule

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ класса Timetable:

Класс Timetable создан для Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса DayShedule ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ Π³Ρ€Π°Ρ„ΠΈΠΊ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ€Π°Ρ‡Π° Π½Π° Π½Π΅Π΄Π΅Π»ΡŽ.

Для использования срСдств Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡΠΌΠΈ LINQ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.NET Framework, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ классС интСрфСйс

IEnumerable<DayShedule>. Π”Π°Π½Π½Ρ‹ΠΉ интСрфСйс позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ DayShedule, ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ (с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ LINQ) ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ поиск ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

Π’ ΠΈΡ‚ΠΎΠ³Π΅, интСрфСйс класса прСдставляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ свойствами, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ расписания Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь Π½Π΅Π΄Π΅Π»ΠΈ:

Β· + Monday: DayShedule

Β· + Tuesday: DayShedule

Β· + Wednesday: DayShedule

Β· + Thursday: DayShedule

Β· + Friday: DayShedule

Β· + Saturday: DayShedule

Β· + Sunday: DayShedule

Π”Π°Π½Π½Ρ‹Π΅ свойства хранятся Π² ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠΌ ΠΏΠΎΠ»Π΅ _days: List

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹, инкапсулированныС Π² Π΄Π°Π½Π½ΠΎΠΌ классС:

Β· Timetable; конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Β· Sync; ΠΌΠ΅Ρ‚ΠΎΠ΄, ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π΄Π°Ρ‚Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ дня Π³Ρ€Π°Ρ„ΠΈΠΊΠ° с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄Π°Ρ‚ΠΎΠΉ

Β· this[]; ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ индСксирования Для ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ интСрфСйса IEnumerable Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

Β· + GetEnumerator;

Β· - IEnumerable. GetEnumerator;

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ класса Timetable хранится Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ экзСмплярС класса Doctor. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ композиция ΠΌΠ΅ΠΆΠ΄Ρƒ классами.

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ интСрфСйс класса Timetable:

Рис. 9. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° класса Timetable

На ΡΡ‚ΠΎΠΌ этап проСктирования ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ. Π•Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ прСдставлСния ΠΎ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ систСмы, интСрфСйсах Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… классов ΠΈ ΠΈΡ… Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΠΈ.

Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎ ΠΈΡ‚ΠΎΠ³Π°ΠΌ проСктирования Π±Ρ‹Π»Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°:

Рис. 10. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° зависимостСй ИспользованиС Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ООП:

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

Класс DayShedule наслСдуСтся ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.NET Framework Dictionary<TimeSpan, string>, Π² ΠΈΡ‚ΠΎΠ³Π΅ DayShedule Ρ‚Π°ΠΊΠΆΠ΅ унаслСдуСт всС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ интСрфСйсы Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ:

Β· IDictionary; прСдоставляСт элСмСнты ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ «ΠΊΠ»ΡŽΡ‡ — Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅»

Β· ICollection; опрСдСляСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для управлСния коллСкциями

Β· IEnumerable; прСдоставляСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для простого ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ элСмСнтов Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

Β· ISerializable; позволяСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ собствСнной сСриализациСй ΠΈ Π΄Π΅ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Класс Timetable наслСдуСт интСрфСйс IEnumerable ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Π΅Π³ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Класс Doctor Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс ICloneable

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

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ классов ΡΠ²Π»ΡΡŽΡ‚ΡΡ всС ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ свойства этих классов.

Π’Π°ΠΌ, Π³Π΄Π΅ это Π±Ρ‹Π»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, использовались Ρ‚Π°ΠΊΠΈΠ΅ срСдства инкапсуляция Π―П C# ΠΊΠ°ΠΊ автоматичСскиС свойства. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях добавлялись Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля классов, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… занимались явно Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ свойства с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°ΠΌΠΈ Π² ΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€Π΅.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ:

ΠŸΡ€ΠΈ написании систСмы Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ использовались срСдства ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ throw использовался ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойству класса. Π‘Π»ΠΎΠΊΠΈ try/catch использовались для облСгчСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, ΠΈ Π² ΡΠ»ΡƒΡ‡Π°Π΅ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих Π±Π»ΠΎΠΊΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ»Π°ΡΡŒ информация ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠ΅ΠΉ ошибкС.

ВСстированиС

На Π²Ρ‹Π±ΠΎΡ€: ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ€Π°Π½Π΅Π΅ созданной Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ созданиС Π½ΠΎΠ²ΠΎΠΉ Рис. 11. ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ экран Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ МСню Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΠΎΠΌ:

Рис. 12. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΠΎΠΌ

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ сотрудника

Π’ ΠΌΠ΅Π½ΡŽ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π½Π° Ρ€ΠΈΡ. 12 Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚ «Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ»

Рис. 13. Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Рис. 14. БоставлСниС Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π²Ρ€Π°Ρ‡Π°

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚Π°

Π’ Π³Π»Π°Π²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π²Ρ€Π°Ρ‡Π°.

Рис. 15. Π’Ρ‹Π±ΠΎΡ€, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ дСнь записываСм ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚Π° Рис. 16. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚Π°

Поиск

Рис. 17. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ способы поиска

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°

Рис. 18. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ способы сортировки

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ сотрудника

Π’ Π³Π»Π°Π²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ сотрудника, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, Π·Π°Ρ‚Π΅ΠΌ Π² ΠΌΠ΅Π½ΡŽ «Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ» Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚ «Π£Π΄Π°Π»ΠΈΡ‚ΡŒ».

Рис. 19. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ сотрудника

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

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

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ программирования Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½Π° концСпция ООП. Π‘Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ срСдства, прСдоставляСмыС Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этой ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ: наслСдованиС, инкапсуляция, композиция ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡ классов.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, хотя ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ° рСгистратуры, Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Β· Авторизация Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Β· Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ истории Π±ΠΎΠ»Π΅Π·Π½ΠΈ ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚Π°.

Β· Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚Π΅.

Β· ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ отчСтности ΠΎ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π΅ обслуТСнных ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ….

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

1. Π­. ВроСлсСн. Π―Π·Ρ‹ΠΊ программирования Π‘# 2010 ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°.NET 4.0, 5-Π΅ ΠΈΠ·Π΄. И. Π”. Π’ΠΈΠ»ΡŒΡΠΌΡ, 2011. — 1392 с.

2. Н. Π’Ρ€Π΅ΠΉ. C# 2010: УскорСнный курс для профСссионалов. И. Π”. Π’ΠΈΠ»ΡŒΡΠΌΡ, 2010. — 592 с.

3. Π€Π°ΡƒΠ»Π΅Ρ€ М., Π‘ΠΊΠΎΡ‚Ρ‚ К. UML. ΠžΡΠ½ΠΎΠ²Ρ‹. Π‘ΠΈΠΌΠ²ΠΎΠ»-Плюс, 2002. — 192 с.

4. ΠšΠ²Π°Ρ‚Ρ€Π°Π½ΠΈ Π’. Rational Rose ΠΈ UML. Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π”ΠœΠš ΠŸΡ€Π΅ΡΡ, 2001. — 176 с.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Класс Doctor

#region Namespace directives

using System;

using System. Text. RegularExpressions;

using Victor. Timetable;

#endregion

namespace Registry

{

[Serializable]

public class Doctor: ICloneable

{

#region Fields

private DateTime _birthDate;

private int _cabinetNumber;

private string _name;

private string _specialization;

#endregion

#region Constructors

public Doctor ()

{

Timetable = new Timetable ();

}

public Doctor (string name,

DateTime birthDate,

string speciality,

int cabinetNumber,

Timetable timetable)

: this ()

{

Name = name;

BirthDate = birthDate;

Specialization = speciality;

CabinetNumber = cabinetNumber;

Timetable = timetable;

}

#endregion

#region Properties

public Timetable Timetable {get; private set;}

public string Name

{

get {return _name;}

set

{

value = value. Trim ();

if (! Regex. IsMatch (value, @ «^[А-я]+s+([А-я]. s*) {2}$»))

throw new ArgumentException («Π€.И.О. Π²Ρ€Π°Ρ‡Π° Π·Π°Π΄Π°Π½ΠΎ Π½Π΅Π²Π΅Ρ€Π½ΠΎ»);

_name = value;

}

}

public DateTime BirthDate

{

get {return _birthDate;}

set

{

if ((DateTime. Today — value).TotalDays < 6564) // 18 Π»Π΅Ρ‚

throw new ArgumentException («Π”Π°Ρ‚Π° роТдСния Π·Π°Π΄Π°Π½Π° Π½Π΅Π²Π΅Ρ€Π½ΠΎ»);

_birthDate = value;

}

}

public string Specialization

{

get {return _specialization;}

set

{

value = value. Trim ();

if (! Regex. IsMatch (value, @ «^[А-я]+$»))

throw new ArgumentException («Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Π½Π° Π½Π΅Π²Π΅Ρ€Π½ΠΎ»);

_specialization = value;

}

}

public int CabinetNumber

{

if (value <= 0)

throw new ArgumentException («ΠΠΎΠΌΠ΅Ρ€ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ большС ноля»);

_cabinetNumber = value;

}

}

#endregion

#region Implementation of ICloneable

public object Clone ()

{

#endregion

}

}

Класс Timetable

#region Namespace directives

using System;

using System. Collections;

using System. Collections. Generic;

using System. Linq;

#endregion

namespace Victor. Timetable

{

[Serializable]

public class Timetable: IEnumerable

{

#region Fields and properties

public readonly DayShedule Friday;

public readonly DayShedule Monday;

public readonly DayShedule Saturday;

public readonly DayShedule Sunday;

public readonly DayShedule Tuesday;

public readonly DayShedule Wednesday;

private readonly List _days;

#endregion

#region Constructors

public Timetable ()

{

Monday = new DayShedule (DayOfWeek. Monday);

Tuesday = new DayShedule (DayOfWeek. Tuesday);

Wednesday = new DayShedule (DayOfWeek. Wednesday);

Thursday = new DayShedule (DayOfWeek. Thursday);

Friday = new DayShedule (DayOfWeek. Friday);

Saturday = new DayShedule (DayOfWeek. Saturday);

Sunday = new DayShedule (DayOfWeek. Sunday);

_days = new List

{

Monday,

Tuesday,

Wednesday,

Thursday,

Friday,

Saturday,

Sunday

};

}

#endregion

#region Indexers

public DayShedule this [int index]

{

get {return _days[index]; }

}

#endregion

#region Public methods

public void RemoveExpired ()

{

foreach (DayShedule day in this)

day. SyncDate ();

}

#endregion

#region Implementation of IEnumerable

public IEnumerator GetEnumerator ()

{

return _days. Where (t => t. IsSet).GetEnumerator ();

}

IEnumerator IEnumerable. GetEnumerator ()

{

return GetEnumerator ();

}

#endregion

}

}

Класс DayShedule

#region Namespace directives

using System;

using System. Collections. Generic;

using System. Linq;

using System. Runtime. Serialization;

#endregion

namespace Victor. Timetable

{

[Serializable]

public class DayShedule: Dictionary

{

#region properties

public DayOfWeek DayOfWeek {get; private set;}

public DateTime Date {get; private set;}

public TimeSpan StartTime {get; private set;}

public TimeSpan EndTime {get; private set;}

public TimeSpan Duration {get; private set;}

public TimeSpan Interval {get; private set;}

public bool IsSet {get; private set;}

public bool IsExpired

{

get {return DateTime. Today > Date;}

}

#endregion

#region Constructors

protected DayShedule (SerializationInfo info, StreamingContext context)

: base (info, context)

{

DayOfWeek = (DayOfWeek) info. GetValue («DayOfWeek», typeof (DayOfWeek));

IsSet = info. GetBoolean («IsSet»);

if (! IsSet)

return;

Date = info. GetDateTime («Date»);

StartTime = (TimeSpan) info. GetValue («StartTime», typeof (TimeSpan));

EndTime = (TimeSpan) info. GetValue («EndTime», typeof (TimeSpan));

Duration = (TimeSpan) info. GetValue («Duration», typeof (TimeSpan));

Interval = (TimeSpan) info. GetValue («Interval», typeof (TimeSpan));

}

public DayShedule (DayOfWeek day)

{

DayOfWeek = day;

}

#endregion

#region Public Methods

public void Set (TimeSpan startTime, TimeSpan endTime, TimeSpan interval)

{

if (startTime. Days > 0)

throw new ArgumentException («ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ врСмя Π·Π°Π΄Π°Π½ΠΎ Π½Π΅Π²Π΅Ρ€Π½ΠΎ»);

if (endTime. Days > 0)

throw new ArgumentException («ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ врСмя Π·Π°Π΄Π°Π½ΠΎ Π½Π΅Π²Π΅Ρ€Π½ΠΎ»);

if (startTime >= endTime)

throw new ArgumentException («ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ врСмя Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ большС ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ»);

StartTime = startTime;

EndTime = endTime;

Duration = EndTime — StartTime;

if (interval > Duration)

throw new ArgumentException («Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π» ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ»);

IsSet = true;

Interval = interval;

SetNextDateOfDayOfWeek ();

Clear ();

TimeSpan floatBound = StartTime;

while (floatBound < EndTime)

{

Add (floatBound, string. Empty);

floatBound += interval;

}

}

public void Unset ()

{

IsSet = false;

}

public void SyncDate ()

{

if (IsExpired)

{

double delta = (DateTime. Today — Date).TotalDays/7;

var factor = (int) (Math. Abs ((int) delta — delta) < double. Epsilon

? delta

: delta + 1);

Date += new TimeSpan (factor*7, 0, 0, 0);

ClearTasks ();

}

}

#endregion

#region Private methods

private void ClearTasks ()

{

foreach (TimeSpan time in Keys. ToList ())

this[time] = string. Empty;

}

private void SetNextDateOfDayOfWeek ()

{

Date = DateTime. Today;

while (Date. DayOfWeek≠ DayOfWeek)

Date = Date. AddDays (1);

}

#endregion

#region Overrides of Dictionary

public override void GetObjectData (SerializationInfo info, StreamingContext context)

{

base. GetObjectData (info, context);

info. AddValue («DayOfWeek», DayOfWeek);

info. AddValue («IsSet», IsSet);

if (! IsSet)

return;

info. AddValue («Date», Date);

info. AddValue («StartTime», StartTime);

info. AddValue («EndTime», EndTime);

info. AddValue («Duration», Duration);

info. AddValue («Interval», Interval);

}

#endregion

}

}

рСгистратура интСрфСйс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° автоматизация

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