Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 124

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 118 119 120 121 122 123 < 124 > 125 126 127 128 129 130 .. 404 >> Следующая

262

fjiaea 11

public class Deck : icloneable

( I I мини, in ¦ - -

public object Clone()

(

Deck newDeck ¦ new Deck((Cards)cards.Clone()); return wDeck;

)

private DecJc( Cards newCards)

(

cards ¦ newCards j

)

Для тестирования всех этих изменений мы вновь можем воспользоваться простой клиентской программой (как и прежде, для осуществления тестирования она должяа быть помещена в метод Main о клиентского проекта):

Deck decfcl “ new Deck ();

Deck deck2 « (Deck! deckl.Cloned);

Console.WriteLine('The first card in the original deck is: (0)*.

//Первая карта a исходной холоде://

deckl.GetCard(0));

Console.WriteLine('The first card in the cloned deck is: (0)',

//Первая карта в полученной копии колоды://

deck2.GetCard(0)); deckl.Shuff ()}

Console.WriteLinef'Original deck shuffled.');

//Исходная холода перетасована. I/

. Consol e.Wri teLine ("the first card in the original deck is: {0}',

//Первая карта в исходной холоде://

deckl-GetCard(0))j Conaole.Wri teLine ('The first card in the cloned deck is: (0)*,

/ /Первая карта а полученной копни холоди: / /

decks.GetCard(O));

В этом случае выходной поток будет иметь примерно следующий вид:

X

Pi



Здесь необходимо сделать одно важное замечание: все карточные правила, определяемые статическими членами класса card, применимы ко всем объектал! card для любой колоды Deck, Невозможно иметь две колоды карт, подчиняющиеся разным правилам, Для данной библиотеки классов такое положение дел вполне приемлемо; если же некоторому приложению потребуются собственные правила, оно сможет поддерживать их самостоятельно, например, за счет установки значений статических членов класса Card каждый раз, когда происходит переход от использования одной колоды к использованию другой.

\iyjS C:\BeoC‘Sharp\Chaptet'l 1 \Ch11 tardClient\bin\Debug\Di1 ICardCleent.cKi. f/,

Hie fii*at coi»'e1 in m'it/in^l deck is: Thu (\сь oh Clubs

The f it'sl, tiEti'd in iT 11ie cloned deck in - Tbti I’ice of Clubs

Oi is i«ic .1. : I r: t: T-; im f flrd .

Tlit? in tJit- original deck is: The Nine of Spades

Tlie f i-i'S L n-u'd in trlie tiluntd deck is: TI hl- rtcr: »f Clubs

JVes^ itnv key i о uuntintie
Дополнительные сведения о классах____________________________________________263

Исключительные ситуации, определяемые программистом

Выше обсуждались исключительные ситуации и то, каким образом можно использовать блоки try.. .catch.. .finally для их обработки. Вы также познакомились с несколькими стандартными для .NET Framework исключительными ситуациями, в том числе с System.Exception — базовым классом для исключительных ситуаций.

В некоторых случаях вместо того, чтобы применять стандартные исключительные

ситуации, полезно создавать и использовать в приложениях свои собственные классы исключительных ситуаций, производные от этого базового класса. Это позволяет более точно определять информацию, которая отправляется коду, осуществляющему перехват этой ситуации, а также использовать более специфические программы для обработки конкретных исключительных ситуаций. Существует, например, возможность добавить в такой класс исключительных ситуаций новое свойство, которое сделает возможным доступ к какой-либо информации более низкого уровня, что позволит программе-обработчику исключительных ситуаций внести соответствующие изменения или просто получить дополнительную информацию о причинах возникновения данной исключительной ситуации.

После того как класс исключительных ситуаций определен, появляется возможность внести его в список исключительных ситуаций, распознаваемых VS с помощью пункта меню Debug | Exceptions.... Представленное на рисунке слева диалоговое окно позволяет управлять реакцией VS на возникновение необрабатываемой исключительной ситуации данного тнпа. Здесь можно настроить VS либо на прекращение выполнения программы и запуск отладчика, либо на продолжение выполнения программы: во-первых, когда возникает исключительная ситуация такого рода и, во-вторых, если эта ситуация не обрабатывается.

Усовершенствование CardLib, часть 4

Применение исключительных ситуаций, определяемых пользователем, лучше всего может быть проиллюстрировано внесением изменений в проект chiicardLib. В настоящий момент метод Deck.GetCardo использует стандартную исключительную ситуацию .NET, однако мы внесем соответствующие изменения с тем, чтобы он мог использовать исключительную ситуацию, определяемую программистом.

Во-первых, необходимо определить исключительную ситуацию. Это достигается посредством определения нового класса в новом файле Exceptione.ce:

public class CardOutOf':~«?:-‘c#ptian : Exception

{

private Cards deckContente;

public- Cards DeckContents (

get

(

return deckContente;

)

}
264

Глава 11

public CardOutOfRangeException(Cards sourceDeckContents) : base ('There are only 52 cards in the deck.*)

{

deckContents = sourceDeckContents

}

}

Названный класс должен создаваться при создании экземпляра класса cards. Он позволяет осуществлять доступ к данному объекту Cords посредством свойства DeckContents и обеспечивает передачу подходящего сообщения об ошибке базовому конструктору Exception, после чего оно становится доступным через свойство меззаяе данного класса.
Предыдущая << 1 .. 118 119 120 121 122 123 < 124 > 125 126 127 128 129 130 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.