14.02.2017 Views

. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

инкапсуляция<br />

н<strong>е</strong>нк<strong>е</strong><br />

Использу<strong>е</strong>м получ<strong>е</strong>нную информацию, чтобы заставить программу Кэтлин<br />

работать корр<strong>е</strong>ктно.<br />

Заставим сч<strong>е</strong>тчик Dinner Party считать правильно<br />

Исправить ошибку можно при условии, что м<strong>е</strong>тод C a l c u l a t e C o s t O f D e c o r a t i o n s <<br />

зыва<strong>е</strong>тся при каждом изм<strong>е</strong>н<strong>е</strong>нии парам<strong>е</strong>тра N u m b e r O fP e o p le .<br />

вы-<br />

NumberOfPeople 1 0 ;<br />

.CalculateCostOfDecorations()<br />

CmouMocM.t> оформл<strong>е</strong>ния должна п<strong>е</strong>р<strong>е</strong>счимывамься<br />

при каждом изм<strong>е</strong>н<strong>е</strong>нии<br />

колич<strong>е</strong>ства гост<strong>е</strong>й.<br />

'^'’<strong>е</strong>гРоХ^<br />

CalculateCostO возвраща<strong>е</strong>т $650 Заставив программу п<strong>е</strong>р<strong>е</strong>считывать<br />

стоимость оформл<strong>е</strong>ния при<br />

каждом изм<strong>е</strong>н<strong>е</strong>нии колич<strong>е</strong>ства гост<strong>е</strong>й,<br />

мы гарантиру<strong>е</strong>м корр<strong>е</strong>ктную<br />

работу м<strong>е</strong>тода CalculateCostQ.<br />

Добавл<strong>е</strong>ни<strong>е</strong> свойств и конструкторо<br />

Нужно инкапсулировать класс D i n n e r P a r t y . Для начала сд<strong>е</strong>ла<strong>е</strong>м парам<strong>е</strong>тр N u m b e r C f-<br />

P eop le свойством, вызывающим м<strong>е</strong>тод C a l c u l a t e C o s t O f D e c o r a t i o n s О . Зат<strong>е</strong>м нужно<br />

добавить конструктор, гарантировав корр<strong>е</strong>ктную инициализацию экз<strong>е</strong>мпляра. И након<strong>е</strong>ц<br />

остан<strong>е</strong>тся заставить форму использовать этот конструктор.<br />

★<br />

★<br />

Создайт<strong>е</strong> свойство для п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной N u m b e r O fP e o p le , снабж<strong>е</strong>нно<strong>е</strong> м<strong>е</strong>тодом записи,<br />

вызывающим м<strong>е</strong>тод C a l c u l a t e C o s t O f D e c o r a t i o n s ( ) . Вам потр<strong>е</strong>бу<strong>е</strong>тся вспомогат<strong>е</strong>льно<strong>е</strong><br />

пол<strong>е</strong> n u m b e r o f P e o p l e .<br />

М<strong>е</strong>тоду записи N u m b e r O fP e o p le потр<strong>е</strong>бу<strong>е</strong>тся п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нная, которую он буд<strong>е</strong>т п<strong>е</strong>р<strong>е</strong>давать<br />

в кач<strong>е</strong>ств<strong>е</strong> парам<strong>е</strong>тра м<strong>е</strong>тоду C a l c u l a t e C o s t O f D e c o r a t i o n s ( ) . Добавьт<strong>е</strong> закрыто<strong>е</strong><br />

пол<strong>е</strong> типа b o o l с им<strong>е</strong>н<strong>е</strong>м f a n c y D e c o r a t i o n s , запись в которо<strong>е</strong> осущ<strong>е</strong>ствля<strong>е</strong>тся<br />

при каждом вызов<strong>е</strong> м<strong>е</strong>тода C a l c u l a t e C o s t O f D e c o r a t i o n s ( ) .<br />

★ Чтобы добавить конструктор, вам нужны три парам<strong>е</strong>тра: колич<strong>е</strong>ство гост<strong>е</strong>й. Healthy<br />

Option и Fancy Decorations. В мом<strong>е</strong>нт инициализации объ<strong>е</strong>кта D i n n e r P a r t y форма<br />

вызыва<strong>е</strong>т два м<strong>е</strong>тода, пом<strong>е</strong>стит<strong>е</strong> их в конструктор:<br />

★<br />

d i n n e r P a r t y . C a l c u l a t e C o s t O f D e c o r a t i o n s ( f a n c y B o x . C h e c k e d ) ;<br />

d i n n e r P a r t y . S e t H e a l t h y O p t i o n ( h e a l t h y B o x . C h e c k e d ) ;<br />

Вот как выглядит конструктор для формы. Вс<strong>е</strong> остально<strong>е</strong> оста<strong>е</strong>тся б<strong>е</strong>з изм<strong>е</strong>н<strong>е</strong>ний:<br />

p u b l i c F o r m lО {<br />

I n it ia liz e C o m p o n e n t O ;<br />

d in n e r P a r ty = new D in n e r P a r t y ( (in t)n u m e r ic U p D o w n l.V a lu e ,<br />

h e a lth y B o x .C h e c k e d , fa n c y B o x .C h e c k e d );<br />

}<br />

D is p la y D in n e r P a r t y C o s t 0 ;<br />

дальш<strong>е</strong> > 229

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!