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

С# - Ватсон К.

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


Далее мы добавляем код, передающий эту исключительную ситуацию в Deck.cs (вместо использовавшейся ранее стандартной исключительной ситуации):

public Card GetCard(int cardNum)

{

if (cardNum >= 0 && cardNum <= 51) return cards [cardNum] ;

else

throw new CardOutOfRaneeExceptlonf (Cards)cards.Clone()} i

>

В качестве начального значения свойству DeckContents присваивается глубокая копия текущего содержимого объекта Deck, которое представляет собой объект Cards. Это означает, что мы можем узнать, какой вид имело содержимое в момент возникновения исключительной ситуации, благодаря чему последующие изменения содержимого колоды не приведут к потере информации.

Для тестирования этих изменении можно воспользоваться следующим клиентским кодом:

Deck deckl = new Deck()(

try .

{

Card myCard = deckl.GetCard(6Q) i

)

catch (CardDutOfRangeException e)

(

Console.WriteLinefe.Message) j

Console.WriteLinete.DeckContents[Q])t

)

В результате его выполнения будет получено следующее:

1^4t:\BeqdSfrarpVChapter 11 r.hj |ГнМсЙёгЛ\6Гп ftletiuij' ГЫ екс

There only S? cards in tliK doc К-TIhj fire of CJubs

any fcpy to continue

El

Jn|xj

-rJ

2ЛЛ

В данном случае код, ответственный за перехват исключительной ситуации, вывел свойство исключителыюй ситуации Message на экран. Мы также выводим первую карту,'хранящуюся В объекте Cards, которую МЫ получаем через DeckContents,— просто для того, чтобы доказать, что мы имеем доступ к семейству cards через определенный нами объект исключительной ситуации.
Дополнительные сведения о классах________ _____________ 265

Итоги

В настоящей главе было рассмотрено множество способов, которые могут использоваться для того, чтобы существенно увеличить мощь создаваемых с применением ООП приложений н сделать их более интересными, И хотя использование этих способов не требует особых усилий, они позволяют значительно облегчить работу с различными классами и, соответственно, упростить написание последующего кода.

Каждая из рассмотренных тем находит множество применений. Вероятность того, что вам почти в каждом приложении придется сталкиваться с семействами в той или иной форме, очень велика, и создание строго типизированных семейств при необходимости организовать работу с группой однотипных объектов может значительно упростить вам жизнь, Теперь вы знаете, как в таких семействах можно использовать индексаторы, которые облегчают доступ к объектам, входящим в эти семейства.

Вы также изучили перегрузку операторов, которая позволяет определять, каким образом операторы, например, + и -, могут работать с нашими классами; кроме того, вы познакомились с глубоким копированием, которое играет очень важную роль, позволяя избегать одной из наиболее распространенных в ООП ошибок — непреднамеренной передачи пользователю ссылок на внутренние данные. Наконец, вы узнали, как можно описывать свои собственные объекты исключительных ситуации и передавать более подробную информацию программе-обработчику' исключительной ситуации.

В следующей главе будет рассмотрен последний — и чрезвычайно важный — аспект ООП в .NET: события.

Упражнения

1. Создайте класс семейства People (люди), который представляет собой семейство класса Person (лицо), приведенного ниже. Доступ к элементам семейства должен быть организован через строковый индексатор, являющийся именем лица, которое идентично свойству Person.Name:

public class Person t

private string name; private int age;

public string Name i . get (

return name i

)

set

<

name - value;

)

) '
266

Глава 11

public int Ag«

{

get

(

return age;

)

вес -

{

age “ value;

>

}

)

2. Расширьте класс Person из предыдущего упражнения, перегрузив операторы >, <, >= и <-* так, чтобы они выполняли сравнение свойств Аде экземпляров класса person.

3. Добавьте в класс People метод Getoldesto, который будет возвращать массив объектов Person с наибольшим значением свойства Аде (этот массив состоит из одного н более объектов, поскольку значение данного свойства может оказаться одинаковым

у нескольких элементов). Для этого воспользуйтесь перегруженными операторами, определенными выше.

4. Реализуйте в классе People интерфейс icloneable,

который бы обеспечивал выполнение глубокого копирования.
События

В этой последней главе, посвященной ООП, будет обсуждаться один из наиболее часто встречающихся в .NET приемов ООП — использование событий.

Обсуждение начнется с основ — с вопроса о том, что на самом деле представляют из себя события. После этого будет рассмотрено применение некоторых простых событий на практике. Изучив этот вопрос, мы познакомимся с тем, каким образом можно создавать и использовать собственные события. .

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

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

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

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

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