. Стиллмен, Дж. Грин - Изучаем 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