Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Public class Deck : ICloneable

{

public object Clone()

{

Deck newDeck = new Deck((Cards)cards.Clone());

return newDeck;

}

private Deck(Cards newCards)

{

cards = newCards;

}

}

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

Deck deck1 = new Deck();

Deck deck2 = (Deck)deck1.Clone();

Console.WriteLine(“The first card in the original deck is: (0)”,

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

deckl.GetCard(0));

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

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

deck2.GetCard(0));::

deck1. Shuffle();

Console.WriteLine(“Original deck shuffled.”);

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

Console.WriteLine(“The first card in the original deck is: (0)”,

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

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

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

deck2.GetCard(0));

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

 

 

 

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

Исключительные ситуации,

<== предыдущая лекция | следующая лекция ==>
Public class Cards : CollectionBase, ICloneable | Определяемые программистом
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 249; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.