Программирование >>  Программирование с использованием ajax 

1 ... 86 87 88 [ 89 ] 90 91 92 ... 396


Клиентское приложение для библиотеки классов

Чтобы ничего не усложнять, можно добавить в содержащее библиотеку классов решение клиентское консольное приложение. Для этого щелкните правой кнопкой мыши на этом решении в окне Solution Explorer и выберите в контекстном меню пункт AddiNew Project (Добавить=>Новый проект). Называться новый проект должен

ChlOCardClient.

Для использования созданной ранее библиотеки классов в новом проекте консольного приложения добавьте в него ссылку на проект этой библиотеки классов, который называется ChlOCardLib. После создания проекта консольного приложения сделать это можно с помощью диалогового окна Add Reference (Добавление ссылки) и, в частности, доступной в нем вкладки Projects (Проекты), как показано на рис. 10.17.

(Щам Rrtirtnct

Project Nime

Рис. 10.17. Добавлени£ ссылки на проект библиотеки классов с помощью вкладки Projects диалогового окна Add Reference

На этой вкладке нужно выделить проект и щелкнуть на кнопке ОК, после чего ссылка будет добавлена.

Поскольку новый проект был создан вторым, потребуется указать, что именно он является стартовым проектом в решении, т.е. должен запускаться при выполнении щелчка на кнопке Run (Выполнить). Для этого щелкните правой кнопкой мыши на имени этого проекта в окне Solution Explorer и выберите в контекстном меню пункт Set as Startup Project (Сделать стартовым проектом).

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

using System;

using System.Collections.Generic; using System.Linq; using System.Text; using ChlOCardLib;

namespace ChlOCardClient {

class Classl

static void Main(string[] args) {

Deck xnyDeck = new Deck () ;



myDeck.Shuffle О;

for (int i = 0; i < 52; i++)

Card ten5>Card = myDeck.GetCard(i) ; Console.Write(tempCard.ToString()); if (i != 51) Console.WriteC, ) ; else

Console.WriteLine();

Console.ReadKey();

Ha рис. 10.18 можно видеть результат.

I fli : /c:/в вvcsl rpch p мoл:h1oc rduьд:h1oc гdcll nlл)lfvoв*och1в

the biglii

of ;;pjd.

ТЬ. П..-

or SmuI.

.d. , Т1.Г

1..1...ПЛ .

Six of S rW S. u. n

oi t.Mdf . bliH

. Ti.. n.

..nd , 11m

r King of

: Md. .

1 - Four о

f H...P1 ..

П.. Trn о

r Clul. .

Piv ol

rjlub , Tb

oi Di..

M.nd , Ih

. Ihe Six

, llo Tin

of Di<tii.>

. II.. T -n

i H. .pt

Tb. ftt. ol .lu . , Tb. Eiaht of Cluh ll S>-u>n of Di.inond , Ihe Nine uf ,

I .uc. ok H. ..r. TI Jack of I of SpjMlK.. 1Ы of Di..n...,d . Пи liu. of H...it . ГЬ.- Deui .

of H-ari.. IIm- len of S.M.b- . The Thi-.e of Di-.n-.i,.! .. II,. Niu Six of Di. m>nd , II..- Фи.п ..f Suad. . Th. Qu.-. n ol H...ir , lb TI.. FoiiP of Di..n..nd . IW Flu. ofSpad.- . Tlu King of Club . T

Ihp Deuc- of Club; . lb.- J. cli ..Г Hinrt . The S. v. n of H.-ari . ri. Hire.- nf Club , Thr Qu.-.-n of Club , The Ninr <.i il..). , The > P..UP ol Spad. . TIh lour uf Club . ll. J.kli ol Club . The Ki Kin<i of H.-..rt . TIm I IiIh of Diamond . П.. Deiicr of Dian..nd . П..- TIire> of - uadr.. Ни Nin< ol №-..r< , Г1.< S. u. n of Club nd . Tl SI- ol club . Tin J..cli of ivAf Tb. I i<ilil of H. .rt

.n uf suadr . TI.. Qu. .n ol H.-..it Flu. of Spad. . TI.. King of Club

Puc. 10.18. Клиентское консольное приложение Chi OCardClient в действии

Этим результатом, как видно на рисунке, является тасование 52 игральных карт в колоде. В последующих главах вы продолжите разрабатывать и использовать данную библиотеку классов.

Резюме

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

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

Еще здесь детально рассматривалось поведение, связанное с наследованием, и, в частности, то, как можно скрывать ненужных унаследованных членов с помощью ключевого слова new и расширять члены базового класса вместо того, чтобы заменять их реализацию, с помощью ключевого слова base. Кроме того, здесь также рассказывалось об определении вложенных классов, об определении и реализации интерфейсов, как явно, так и неявно, и о том, как разбивать определения на несколько файлов кода за счет использования частичных классов и частичных методов.

Напоследок для примера было приведено описание процесса разработки и применения простой библиотеки классов, представляющей колоду игральных карт, с использованием очень удобного инструмента Class Diagram (Диаграмма классов), который значительно упрощает дело.



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

□ Способы определения полей, методов и свойств.

□ Средства, доступные для организации класса по разделам.

□ Дополнительные возможности, связанные с наследованием.

□ Способы определения и реализации интерфейсов.

□ Способы определения частичных классов и частичных методов.

□ Процесс создания и развертывания простой библиотеки классов.

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

Упражнения

1. Напишите код, определяющий базовый класс MyClass и виртуальный метод Gets tring. Этот метод должен возвращать строку, хранящуюся в защищенном поле myString, доступ к которому возможен только через предназначенное для записи public-свойство ContainedString.

2. Создайте производный от MyClass класс MyDerivedClass. Переопределите в нем метод Gets tring так, чтобы он возвращал строку из базового класса путем использования базовой реализации данного метода, но при этом прибавлял к ней текст (output from derived class) (вывод, полученный от производного класса).

S. В определениях частичных методов должен обязательно использоваться только возвращаемый тип void. Объясните почему.

4. Напишите класс по имени MyCopyableClass, способный возвращать копию самого себя за счет применения метода Get С ору. Этот метод должен обязательно использовать метод MemberwiseClone, унаследованный от System.Object. Добавьте в этот класс простое свойство и напишите использующий этот класс клиентский код, удостоверившись в том, что он работает.

5. Напишите клиентское консольное приложение для библиотеки ChlOCardLib, вытягивающее сразу пять карт из перетасованной колоды (объекта Deck). В случае если все пять карт относятся к одной масти, это клиентское приложение должно отображать их названия на экране в месте с текстом Flush! (Флэш!); в противном случае оно должно прекращать свою работу после просмотра 50 карт вместе с текстом No flush (Нет флэша).



1 ... 86 87 88 [ 89 ] 90 91 92 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика