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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² срСдС Microsoft. 
NET. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ классов. 
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… элСмСнтов управлСния для Windows Form

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

Помимо ΡƒΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠΌ ΡΠ²ΠΎΠΉΡΡ‚Π², Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ классС GeographicObject Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ свойства Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния Description — для получСния описания гСографичСского ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ Category — для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ΅ гСографичСского ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ для всСх Π²ΠΈΠ΄ΠΎΠ² гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ GetLocation () для… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² срСдС Microsoft. NET. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ классов. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… элСмСнтов управлСния для Windows Form (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹

ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ — ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ спСцифики Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ классов для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET, особСнностСй наслСдования, стандартных классов-ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, созданиС ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ интСрфСйсов классов, Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΎΠ², ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, созданиС ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… элСмСнтов управлСния Π½Π° Π±Π°Π·Π΅ стандартных элСмСнтов Windows Form.

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ — 6 часов.

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

Рассмотрим процСсс проСктирования классов для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. НСобходимо ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ классы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ограничимся двумя Π²ΠΈΠ΄Π°ΠΌΠΈ гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: Ρ€Π΅ΠΊΠΈ ΠΈ Π³ΠΎΡ€ΠΎΠ΄Π°. Для Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ основныС Π΄Π°Π½Π½Ρ‹Π΅, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ. Для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° «Π Π΅ΠΊΠ°» ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΈΠ΅ поля: «ΠΠ°Π·Π²Π°Π½ΠΈΠ΅», «Π’ΠΎΠ΄ΠΎΡ‘ΠΌ», «Π Π΅Π³ΠΈΠΎΠ½», Π° Π΄Π»Ρ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° «Π“ΠΎΡ€ΠΎΠ΄» — «ΠΠ°Π·Π²Π°Π½ΠΈΠ΅» ΠΈ «Π‘Ρ‚Ρ€Π°Π½Π°».

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

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ класс, описанный Π² Π»ΠΈΡΡ‚ΠΈΠ½Π³Π΅ 1.

Листинг 1. ОписаниС Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса «Π“Π΅ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚».

abstract public class GeographicObject.

{.

protected string _name;

/// НазваниС.

virtual public string Name.

{.

get { return _name; }.

set { _name = value; }.

}.

abstract public string Description.

{.

get;

}.

abstract public string Category.

{.

get;

}.

abstract public string GetLocation ();

}.

Помимо ΡƒΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠΌ ΡΠ²ΠΎΠΉΡΡ‚Π², Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ классС GeographicObject Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ свойства Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния Description — для получСния описания гСографичСского ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ Category — для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ΅ гСографичСского ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ для всСх Π²ΠΈΠ΄ΠΎΠ² гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ GetLocation () для задания ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ гСографичСского мСстополоТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’Π°ΠΊΠΆΠ΅ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ всС свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π² Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ‚Π½ΠΎΠΌ классС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‡Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ абстрактныС (ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово abstract). Если свойство ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, Ρ‚ΠΎ Π΅Π³ΠΎ ΠΏΠΎΠΌΠ΅Ρ‡Π°ΡŽΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом virtual.

Учитывая Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ, согласно Π·Π°Π΄Π°Ρ‡Π΅, наслСдуСмыС классы Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒΡΡ Π² ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ классС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сравнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ собой. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ стандартный интСрфСйс IComparable Π±Π΅Π· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ наш Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Π»ΠΈΡΡ‚ΠΈΠ½Π³Π΅ 2.

Листинг 2. ПолноС описаниС Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса «Π“Π΅ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚».

abstract public class GeographicObject: IComparable.

{.

protected string _name;

/// НазваниС.

virtual public string Name.

{.

get { return _name; }.

set { _name = value; }.

}.

abstract public string Description.

{.

get;

}.

abstract public string Category.

{.

get;

}.

abstract public string GetLocation ();

#region Π§Π»Π΅Π½Ρ‹ IComparable.

virtual public int CompareTo (object obj).

{.

throw new NotImplementedException ();

}.

#endregion.

}.

ПослС опрСдСлСния Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ наслСдуСмых ΠΎΡ‚ Π½Π΅Π³ΠΎ классов «Π Π΅ΠΊΠ°» (River) ΠΈ «Π“ΠΎΡ€ΠΎΠ΄» (Town) (листинг 3).

Листинг 3. ОписаниС классов «Π Π΅ΠΊΠ°» ΠΈ «Π“ΠΎΡ€ΠΎΠ΄».

/// Π“ΠΎΡ€ΠΎΠ΄.

public class Town: GeographicObject.

{.

string _country;

public string Country.

{.

get { return _country; }.

set { _country = value; }.

}.

public Town ().

{.

_name = «Π“ΠΎΡ€ΠΎΠ΄ Π±Π΅Π· названия» ;

_country = «» ;

}.

public Town (string name, string country).

{.

_name = name;

_country = country;

}.

public override string ToString ().

{.

return _name;

}.

public override string Category.

{.

get { return «Π“ΠΎΡ€ΠΎΠ΄»; }.

}.

public override string GetLocation ().

{.

return _country;

}.

public override string Description.

{.

get { return «Π“ΠΎΡ€ΠΎΠ΄ «+ _name + «Π½Π°Ρ…одится Π² ΡΡ‚Ρ€Π°Π½Π΅ «+ _country; }.

}.

public override int CompareTo (object obj).

{.

if (obj is GeographicObject).

{.

if (obj is Town).

{.

return _name.CompareTo (((Town)obj).Name);

}.

else.

{.

return this.Category.CompareTo (((GeographicObject)obj).Category);

}.

}.

else.

{.

return 1;

}.

}.

}.

/// Π Π΅ΠΊΠ°.

public class River: GeographicObject.

{.

string _water;

/// Π’ΠΎΠ΄ΠΎΠ΅ΠΌ.

public string Water.

{.

get { return _water; }.

set { _water = value; }.

}.

/// Π Π΅Π³ΠΈΠΎΠ½.

string _region;

public string Region.

{.

get { return _region; }.

set { _region = value; }.

}.

public River ().

{.

_name = «Π‘Сзымянная Ρ€Π΅ΠΊΠ°» ;

_water = «» ;

_region = «» ;

}.

public River (string name, string water, string region).

{.

if (name == «» || water == «» || region == «»).

{.

throw new DataNotFilledException («Π”Π°Π½Π½Ρ‹Π΅ Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹»);

}.

else.

{.

_name = name;

_water = water;

_region = region;

}.

}.

public override string ToString ().

{.

return _name;

}.

public override string Category.

{.

get { return «Π Π΅ΠΊΠ°»; }.

}.

public override string GetLocation ().

{.

return _region;

}.

public override string Description.

{.

get { return «Π Π΅ΠΊΠ° «+ _name + «Π²ΠΏΠ°Π΄Π°Π΅Ρ‚ Π² «+ _water + «. БассСйн этой Ρ€Π΅ΠΊΠΈ располагаСтся Π² «+ _region; }.

}.

public override int CompareTo (object obj).

{.

if (obj is GeographicObject).

{.

if (obj is River).

{.

return _name.CompareTo (((River)obj).Name);

}.

else.

{.

return this.Category.CompareTo (((GeographicObject)obj).Category);

}.

}.

else.

{.

return 1;

}.

}.

}.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ листингС особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌ Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° CompareTo, наслСдованного ΠΎΡ‚ ΠΈΠ½Ρ‚СрфСйса IComparable. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΡƒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ° GeographicObject, Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ (Ρ‚.Π΅. наш ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ мСньшС сравниваСмого).

Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ унаслСдован ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ° River (ΠΏΡ€ΠΈ сравнСнии Π² ΠΊΠ»Π°ΡΡΠ΅ River) ΠΈΠ»ΠΈ Town (ΠΏΡ€ΠΈ сравнСнии Π² ΠΊΠ»Π°ΡΡΠ΅ Town), Ρ‚ΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ осущСствляСтся ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡŽ Ρ€Π΅ΠΊΠΈ.

Π˜Π½Π°Ρ‡Π΅ (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся гСографичСским ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Π½ΠΎ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΉ ΠΈΠ»ΠΈ Π³ΠΎΡ€ΠΎΠ΄ΠΎΠΌ соотвСтствСнно), сравнСниС осущСствляСтся ΠΏΠΎ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ.

РСализация классов River ΠΈ Town содСрТит Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ ΠΏΠΎ Π΄Π²Π° конструктора — конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Помимо этого, Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅ класса River с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ происходит гСнСрация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ DataNotFilledException Π² ΡΠ»ΡƒΡ‡Π°Π΅ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Описания класса ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ DataNotFilledException ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π² Π»ΠΈΡΡ‚ΠΈΠ½Π³Π΅ 4.

Листинг 4. ОписаниС класса ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ — DataNotFilledException.

[global:System.Serializable].

public class DataNotFilledException: Exception.

{.

public DataNotFilledException ().

{.

}.

public DataNotFilledException (string message).

: base (message).

{.

}.

public DataNotFilledException (string message, Exception inner).

: base (message, inner).

{.

}.

protected DataNotFilledException (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context).

: base (info, context).

{.

}.

}.

Рассмотрим вопрос Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π΅ΠΊΠΈ, Ρ‚Π°ΠΊ ΠΈ Π³ΠΎΡ€ΠΎΠ΄Π° — GeographicObjectsCollection. Π’ ΠΏΡ€ΠΎΡΡ‚ранствС ΠΈΠΌΠ΅Π½ System.Collection. Net Framework ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ классы стандартный Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ:

ArrayList — Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс IList с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ массива с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π΄ΠΎ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ значСния.

BitArray — управляСт ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΌ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ массивом Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, прСдставлСнных логичСскими значСниями, Π³Π΄Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true соотвСтствуСт 1, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false соотвСтствуСт 0.

Hashtable — прСдоставляСт ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΏΠ°Ρ€ ΠΊΠ»ΡŽΡ‡/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ упорядочСны ΠΏΠΎ Ρ…ΡΡˆ-ΠΊΠΎΠ΄Ρƒ ΠΊΠ»ΡŽΡ‡Π°.

Queue — прСдоставляСт ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², которая обслуТиваСтся ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ «ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ поступил — ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ обслуТСн».

SortedList — прСдоставляСт ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΏΠ°Ρ€ «ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅», упорядочСнных ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ. Доступ ΠΊ ΠΏΠ°Ρ€Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ ΠΈ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡƒ.

Stack — прСдставляСт ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π½Π΅ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° «ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΠΏΡ€ΠΈΡˆΠ΅Π» — ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅Π»» (LIFO).

Π’Π°ΠΊΠΆΠ΅ Π² ΠΏΡ€ΠΎΡΡ‚ранствС ΠΈΠΌΠ΅Π½ System.Collection. Net Framework ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ интСрфСйсы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для создания нСстандартных ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ:

ICollection — опрСдСляСт Ρ€Π°Π·ΠΌΠ΅Ρ€, пСрСчислитСли ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ синхронизации для всСх нСстандартных ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ.

IComparer — прСдоставляСт ΠΌΠ΅Ρ‚ΠΎΠ΄ для сравнСния Π΄Π²ΡƒΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

IDictionary — прСдставляСт Π½Π΅Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΏΠ°Ρ€ «ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅».

IEnumerable — прСдоставляСт ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ простой ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ элСмСнтов Π½Π΅ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

IEnumerator — ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ простой ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ ΠΏΠΎ Π½Π΅ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

IList — прСдставляСт Π½Π΅ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ доступом, осущСствляСмым ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ индСкса.

Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ΄Π°Ρ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ интСрфСйсом IList, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ. Для хранСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ стандартными Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ коллСкциями:

для Ρ€Π΅ΠΊ — ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ с Ρ‡ΠΈΡΠ»ΠΎΠ²Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Dictionary;

для Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ² — список List.

РСализация интСрфСйса IList Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΡΠ²ΠΎΠΉΡΡ‚Π²:

Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ — public int Add (object value);

ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ всСх элСмСнтов ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ — public void Clear ();

ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ элСмСнта Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ — public bool Contains (object value);

ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ индСкса элСмСнта Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ — public int IndexOf (object value);

вставка элСмСнта Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π² Π·Π°Π΄Π°Π½Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ — public void Insert (int index, object value);

ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ — public void Remove (object value);

ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΠΎ Π΅Π³ΠΎ индСксу — public void RemoveAt (int index);

ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ фиксированной ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ — public bool IsFixedSize;

ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ коллСкция доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния — public bool IsReadOnly;

доступ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡƒ — public object this[int index].

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ частичной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйса IList ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡ‚ΠΈΠ½Π³Π΅ 5.

Листинг 5. Частичная рСализация интСрфСйса IList.

public int Add (object value).

{.

if (value is Town).

{.

_towns.Add ((Town)value);

if (CollectionChanged ≠ null).

{.

CollectionChanged (this, EventArgs. Empty);

}.

return _towns.Count + _rivers.Count;

}.

if (value is River).

{.

_rivers.Add (_rivers.Count, ((River)value));

if (CollectionChanged ≠ null).

{.

CollectionChanged (this, EventArgs. Empty);

}.

return _towns.Count + _rivers.Count;

}.

return -1;

}.

public void Clear ().

{.

_towns.Clear ();

_rivers.Clear ();

if (CollectionChanged ≠ null).

{.

CollectionChanged (this, EventArgs. Empty);

}.

}.

public bool Contains (object value).

{.

if (value is Town).

{.

return _towns.Contains ((Town)value);

}.

if (value is River).

{.

return _rivers.ContainsValue ((River)value);

}.

else.

{.

return false;

}.

}.

public int IndexOf (object value).

{.

if (value is Town).

{.

return _towns.IndexOf ((Town)value) + _rivers.Count;

}.

if (value is River).

{.

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

{.

if (_rivers[i]. CompareTo (value) == 0) return i;

}.

return -1;

}.

else.

{.

return -1;

}.

}.

public void Insert (int index, object value).

{.

throw new NotImplementedException ();

}.

[XmlIgnore].

public bool IsFixedSize.

{.

get { return false; }.

}.

[XmlIgnore].

public bool IsReadOnly.

{.

get { return false; }.

}.

public void Remove (object value).

{.

throw new NotImplementedException ();

}.

public void RemoveAt (int index).

{.

throw new NotImplementedException ();

}.

public object this[int index].

{.

get.

{.

if (index >= 0).

{.

if (index < _rivers.Count).

{.

return _rivers[index];

}.

else.

{.

return _towns[index — _rivers.Count];

}.

}.

else.

{.

return null;

}.

}.

set.

{.

throw new NotImplementedException ();

}.

}.

Π’Π°ΠΊ ΠΊΠ°ΠΊ интСрфСйс IList наслСдуСтся ΠΎΡ‚ ΠΈΠ½Ρ‚СрфСйсов ICollection ΠΈ IEnumerable, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΡΠ²ΠΎΠΉΡΡ‚Π²Π° этих интСрфСйсов. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡ‚ΠΈΠ½Π³Π΅ 6.

Листинг 6. РСализация интСрфСйсов ICollection ΠΈ IEnumerable.

#region Π§Π»Π΅Π½Ρ‹ ICollection.

public void CopyTo (Array array, int index).

{.

throw new NotImplementedException ();

}.

public int Count.

{.

get { return _towns.Count + _rivers.Count; }.

}.

public bool IsSynchronized.

{.

get { return false; }.

}.

public object SyncRoot.

{.

get { return null; }.

}.

#endregion.

#region Π§Π»Π΅Π½Ρ‹ IEnumerable.

public IEnumerator GetEnumerator ().

{.

throw new NotImplementedException ();

}.

#endregion.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ сравнимости элСмСнтов ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ (Ρ‡Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано ΠΏΡ€ΠΈ сортировкС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ) Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ интСрфСйса IComparer (листинг 7).

Листинг 7. РСализация интСрфСйса IComparer.

#region Π§Π»Π΅Π½Ρ‹ IComparer.

public int Compare (GeographicObject x, GeographicObject y).

{.

return x. CompareTo (y);

}.

#endregion.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… элСмСнтов управлСния.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ классами Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс. Для этого Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π° Π³Π»Π°Π²Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ стандартный элСмСнт управлСния Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌΠΈ — TabControl. Данная Ρ„ΠΎΡ€ΠΌΠ° содСрТит Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² — «Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π³ΠΎΡ€ΠΎΠ΄», «Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ€Π΅ΠΊΡƒ», «ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ» ΠΈ «ΠžΡ‚сортированная коллСкция».

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… элСмСнтов управлСния:

UserControlAddRiver — Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΊΠΈ;

UserControlAddTown — Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π³ΠΎΡ€ΠΎΠ΄Π°;

UserControlSortedView — отсортированная коллСкция;

UserControlViewCollection — просмотр ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½Π°ΡˆΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… элСмСнтов управлСния ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ, Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΠΌ конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ (листинг 8).

Листинг 8. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ элСмСнта управлСния «Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ€Π΅ΠΊΡƒ».

public UserControlAddRiver (GeographicObjectsCollection collection).

{.

InitializeComponent ();

_collection = collection;

collection.CollectionChanged += new EventHandler (collection_CollectionChanged);

}.

ПослС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… элСмСнтов управлСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° Π³Π»Π°Π²Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ. Π‘Π΄Π΅Π»Π°Π΅ΠΌ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅ класса Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ (листинг 9).

Листинг 9. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹.

public FormMain ().

{.

InitializeComponent ();

UserControlAddTown ucat = new UserControlAddTown (_collection);

ucat.Dock = DockStyle. Fill;

tabPageAddTown.Controls.Add (ucat);

UserControlAddRiver ucar = new UserControlAddRiver (_collection);

ucar.Dock = DockStyle. Fill;

tabPageAddRiver.Controls.Add (ucar);

UserControlViewCollection ucvw = new UserControlViewCollection (_collection);

ucvw.Dock = DockStyle. Fill;

tabPageViewCollection.Controls.Add (ucvw);

UserControlSortedView ucsw = new UserControlSortedView (_collection);

ucsw.Dock = DockStyle. Fill;

tabPageSortView.Controls.Add (ucsw);

}.

Для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ сохранСния ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ XML-сСриализации. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ свойства ΠΈ ΠΏΠΎΠ»Ρ спроСктированных классов ΠΈΠ· ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡ… ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ XmlIgnore. Код сохранСния ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ классов XML-сСриализации ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡ‚ΠΈΠ½Π³Π΅ 10.

Листинг 10. XML-сСриализация ΠΈ Π΄Π΅ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

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

{.

if (saveFileDialogMain.ShowDialog () == DialogResult. OK).

{.

XmlSerializer xs = new XmlSerializer (typeof (GeographicObjectsCollection), new Type[2] { typeof (Town), typeof (River) });

StreamWriter sw = new StreamWriter (saveFileDialogMain.FileName);

xs.Serialize (sw, _collection);

sw.Flush ();

sw.Close ();

}.

}.

private void ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒToolStripMenuItem_Click (object sender, EventArgs e).

{.

if (openFileDialogMain.ShowDialog () == DialogResult. OK).

{.

XmlSerializer xs = new XmlSerializer (typeof (GeographicObjectsCollection), new Type[2] { typeof (Town), typeof (River) });

StreamReader sr = new StreamReader (openFileDialogMain.FileName);

GeographicObjectsCollection newCollection = (GeographicObjectsCollection)(xs.Deserialize (sr));

_collection.Clear ();

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

{.

_collection.Add (newCollection[i]);

}.

sr.Close ();

}.

}.

ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ с ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ спроСктированных классов ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… элСмСнтов управлСния ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ ΠΏΠΎ Π°Π΄Ρ€Π΅ΡΡƒ: ftp://iipo.tu-bryansk.ru/pub/DotNet/Lab2/LabWork2Sample.zip.

Π—Π°Π΄Π°Π½ΠΈΠ΅

  • 1. Π‘ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ классы ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ элСмСнты управлСния для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², согласно Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ (ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1).
  • 2. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ классов ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ трСбования:

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс для всСх Π²ΠΈΠ΄ΠΎΠ² гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ 2 класса спСцифичСских гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², унаслСдованных ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ, согласно Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ.

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ классы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 2-Ρ…) ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΊΠ»Π°ΡΡΠ°Ρ… гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ класс ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйсы IList, IComparer ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΠΉ собой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Π΅Π΄ΠΈΠ½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ. Для хранСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΈΠΏ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, согласно Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ.

Доступ ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ-Π΄Π°Π½Π½Ρ‹ΠΌ всСх Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… классов Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· свойства.

* Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сортировки элСмСнтов ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ полю.

Π’ ΠΊΠ»Π°ΡΡΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ событий: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта.

  • * ВмСсто ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° Π² ΠΊΠ»Π°ΡΡΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… событий (ΠΏΡ€ΠΈ нСобходимости Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ классы): ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡŽ элСмСнта с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ добавлСния, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ элСмСнта с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ добавлСния, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.
  • 3. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ элСмСнты управлСния для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Ρ‡:

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта 1-Π³ΠΎ Ρ‚ΠΈΠΏΠ° гСографичСского ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта 2-Π³ΠΎ Ρ‚ΠΈΠΏΠ° гСографичСского ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ списка гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ удалСния Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартный элСмСнт управлСния — ListView.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ отсортированного списка гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния Π΅Π³ΠΎ элСмСнтов. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартный элСмСнт управлСния — DataGridView.

  • * Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€Π° поля, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ осущСствляСтся сортировка.
  • 4. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ элСмСнты управлСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ события ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
  • 5. * Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ сСриализации Π² Ρ„Π°ΠΉΠ» ΠΈ Π΄Π΅ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ вопросы.

  • 1. КакиС Π²ΠΈΠ΄Ρ‹ наслСдования ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ Microsoft .NET?
  • 2. Как ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ абстрактныС классы Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C#?
  • 3. КакиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ содСрТит интСрфСйс IComparable? Каково ΠΈΡ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅?
  • 4. ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ создания класса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.
  • 5. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅ классы стандартных ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π² ΠΏΡ€ΠΎΡΡ‚ранствС ΠΈΠΌΠ΅Π½ System. Collection .NET Framework.
  • 6. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса IList. Каково ΠΈΡ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅?
  • 7. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ элСмСнт управлСния? Π§Π΅ΠΌ ΠΎΠ½ ΠΎΡ‚личаСтся ΠΎΡ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Ρ… элСмСнтов управлСния?
  • 8. ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… элСмСнтов управлСния.
  • 9. КакиС классы ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ XML-сСриализации ΠΈ XML-дСсСриализации Π² .NET Framework?

интСрфСйс класс ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° коллСкция.

Бписок Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

  • 1. НСйгСн, К. C# ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET 3.0 для профСссионалов: [ΠΏΠ΅Ρ€. с Π°Π½Π³Π».] / К. НСйгСн, Π‘. ИвьСн, Π”ΠΆ. Π“Π»ΠΈΠ½Π½, М. Π‘ΠΊΠΈΠ½Π½Π΅Ρ€, К.Уотсон. — Πœ.: Π’ΠΈΠ»ΡŒΡΠΌΡ, 2008. — 1376+416 (Π½Π° CD) с.
  • 2. НСш, Π’. C# 2008: ускорСнный курс для профСссионалов: [ΠΏΠ΅Ρ€. с Π°Π½Π³Π».] / Π’. НСш — М.: Π’ΠΈΠ»ΡŒΡΠΌΡ, 2008. — 576 с.
  • 3. Π‘Π½Π΅Π»Π», М. Microsoft Visual Studio 2008 / М. Π‘Π½Π΅Π»Π», Π›.ΠŸΠ°ΡƒΡΡ€Ρ. — Π‘Пб: Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2009. — 1200 с.
  • 4. ВроСлсСн, Π­. Π‘# 2008 ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET 3.5 Framework / Π­.ВроСлсСн. — 4-Π΅ ΠΈΠ·Π΄. — Πœ.: Π’ΠΈΠ»ΡŒΡΠΌΡ, 2009. — 1368 с.
  • 5. Π ΠΈΡ…Ρ‚Π΅Ρ€, Π”ΠΆ. CLR via C#. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Microsoft .NET Framework 2.0 Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C#. ΠœΠ°ΡΡ‚Π΅Ρ€-класс: [ΠΏΠ΅Ρ€. с Π°Π½Π³Π».] / Π”ΠΆ.Π ΠΈΡ…Ρ‚Π΅Ρ€. — Πœ.: Русская РСдакция; БПб.: ΠŸΠΈΡ‚Π΅Ρ€, 2007. — 656 с.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π·Π°Π΄Π°Π½ΠΈΠΉ.

β„– Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Π°.

1-ΠΉ Π²ΠΈΠ΄ гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

2-ΠΉ Π²ΠΈΠ΄ гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π’ΠΈΠ΄ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ для 1-Π³ΠΎ Π²ΠΈΠ΄Π° гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π’ΠΈΠ΄ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ для 2-Π³ΠΎ Π²ΠΈΠ΄Π° гСографичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π“ΠΎΡ€ΠΎΠ΄Π°.

Π“ΠΎΡ€Π½Ρ‹Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹.

List.

LinkedList.

Π“ΠΎΡ€Ρ‹.

Π—Π°Π»ΠΈΠ²Ρ‹.

Dictionary.

LinkedList.

ΠžΠ·Π΅Ρ€Π°.

ΠžΡΡ‚Ρ€ΠΎΠ²Π°.

LinkedList.

ArrayList.

ΠŸΡ€ΠΎΠ»ΠΈΠ²Ρ‹.

Π“ΠΎΡ€Ρ‹.

ArrayList.

SortedDictionary.

ΠœΠΎΡ€Ρ.

ΠžΠ·Π΅Ρ€Π°.

SortedDictionary.

SynchronizedCollection.

ΠœΠΎΡ€ΡΠΊΠΈΠ΅ Π²ΠΏΠ°Π΄ΠΈΠ½Ρ‹.

ΠžΡΡ‚Ρ€ΠΎΠ²Π°.

SynchronizedCollection.

Dictionary.

Π Π΅ΠΊΠΈ.

Π“ΠΎΡ€Π½Ρ‹Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹.

Dictionary.

SortedDictionary.

ΠžΡΡ‚Ρ€ΠΎΠ²Π°.

ΠŸΡ€ΠΎΠ»ΠΈΠ²Ρ‹.

SortedDictionary.

List.

Π—Π°Π»ΠΈΠ²Ρ‹.

Π“ΠΎΡ€ΠΎΠ΄Π°.

List.

ArrayList.

Π“ΠΎΡ€Π½Ρ‹Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹.

ΠžΠ·Π΅Ρ€Π°.

Dictionary.

ArrayList.

Π“ΠΎΡ€ΠΎΠ΄Π°.

ΠœΠΎΡ€ΡΠΊΠΈΠ΅ Π²ΠΏΠ°Π΄ΠΈΠ½Ρ‹.

LinkedList.

SortedDictionary.

Π“ΠΎΡ€Ρ‹.

ОкСанскиС тСчСния.

ArrayList.

SynchronizedCollection.

ΠžΠ·Π΅Ρ€Π°.

Π“ΠΎΡ€Ρ‹.

SortedDictionary.

Dictionary.

ΠŸΡ€ΠΎΠ»ΠΈΠ²Ρ‹.

Π Π΅ΠΊΠΈ.

SynchronizedCollection.

SortedDictionary.

ΠœΠΎΡ€Ρ.

Π“ΠΎΡ€Π½Ρ‹Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹.

Dictionary.

List.

ΠœΠΎΡ€ΡΠΊΠΈΠ΅ Π²ΠΏΠ°Π΄ΠΈΠ½Ρ‹.

ΠœΠΎΡ€Ρ.

SortedDictionary.

LinkedList.

Π Π΅ΠΊΠΈ.

ОкСанскиС тСчСния.

List.

SortedDictionary.

ΠžΡΡ‚Ρ€ΠΎΠ²Π°.

Π“ΠΎΡ€Ρ‹.

Dictionary.

SortedDictionary.

Π—Π°Π»ΠΈΠ²Ρ‹.

ОкСанскиС тСчСния.

LinkedList.

SynchronizedCollection.

Π“ΠΎΡ€Π½Ρ‹Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹.

ΠŸΡ€ΠΎΠ»ΠΈΠ²Ρ‹.

ArrayList.

Dictionary.

Π“ΠΎΡ€ΠΎΠ΄Π°.

ΠžΠ·Π΅Ρ€Π°.

SortedDictionary.

SortedDictionary.

ΠžΡΡ‚Ρ€ΠΎΠ²Π°.

Π—Π°Π»ΠΈΠ²Ρ‹.

SynchronizedCollection.

Dictionary.

ΠžΠ·Π΅Ρ€Π°.

Π Π΅ΠΊΠΈ.

Dictionary.

LinkedList.

ΠŸΡ€ΠΎΠ»ΠΈΠ²Ρ‹.

ΠœΠΎΡ€ΡΠΊΠΈΠ΅ Π²ΠΏΠ°Π΄ΠΈΠ½Ρ‹.

SortedDictionary.

ArrayList.

ΠœΠΎΡ€Ρ.

ΠžΡΡ‚Ρ€ΠΎΠ²Π°.

List.

SynchronizedCollection.

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