14.02.2017 Views

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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

о Б<br />

а з « .я й клосс P a rty<br />

Создайт<strong>е</strong> класс P a r ty и укажит<strong>е</strong> уров<strong>е</strong>нь доступа public. Рассмотрим диаграмму<br />

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

D in n e rP a rty и B ir th d a y P a r ty в класс P a rty .<br />

★<br />

П<strong>е</strong>р<strong>е</strong>м<strong>е</strong>стит<strong>е</strong> свойства Num berO fPeople и C o stO fD e c o ra tio n s, так как<br />

они опр<strong>е</strong>д<strong>е</strong>л<strong>е</strong>ны как для D in n e rP a rty , так и для B irth d a y P a rty .<br />

★ Прод<strong>е</strong>лайт<strong>е</strong> то ж<strong>е</strong> само<strong>е</strong> с м<strong>е</strong>тодами C a lc u la te C o stO fD e c o ra tio n sO<br />

и C a lc u la te C o st (). Н<strong>е</strong> забудьт<strong>е</strong> п<strong>е</strong>р<strong>е</strong>н<strong>е</strong>сти и закрыты<strong>е</strong> поля, н<strong>е</strong>обходи-<br />

Вскор<strong>е</strong> вы по-<br />

м<strong>е</strong>тодов. (Помнит<strong>е</strong>, что производны<strong>е</strong> классы видят только<br />

знакомит <strong>е</strong>сь------ 3 ^ „ г. ^<br />

с ключ<strong>е</strong>вым ПОЛЯ общ<strong>е</strong>го доступа. Посл<strong>е</strong> п<strong>е</strong>р<strong>е</strong>носа закрытого поля в класс P a rty , классловом<br />

protected. D in n e rP a rty и B irth d a y P a rty пот<strong>е</strong>ряют к н<strong>е</strong>му доступ.)<br />

п о л <strong>е</strong> °^я^п р о и ^ ^<br />

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

класса, структоры B ir th d a y P a r ty и D in n e rP a rty : н<strong>е</strong> им<strong>е</strong>ют ли они что-нибудь<br />

осмавляя <strong>е</strong>го общ<strong>е</strong><strong>е</strong>.<br />

закрытым для<br />

вс<strong>е</strong>го осталь- Т<strong>е</strong>п<strong>е</strong>рь добавим плат<strong>е</strong>ж $100 к м<strong>е</strong>роприятиям с колич<strong>е</strong>ством гост<strong>е</strong>й боного.<br />

л<strong>е</strong><strong>е</strong> 12. Это каса<strong>е</strong>тся как званых об<strong>е</strong>дов, так и дн<strong>е</strong>й рожд<strong>е</strong>ния, поэтому<br />

пом<strong>е</strong>стим этот плат<strong>е</strong>ж в класс Party.<br />

О П усть класс D innerP arty насл<strong>е</strong>ду<strong>е</strong>т от класса P a rty<br />

Т<strong>е</strong>п<strong>е</strong>рь, когда класс P a r ty взял на с<strong>е</strong>бя часть функций класса D in n e rP a rty , в посл<strong>е</strong>дн<strong>е</strong>м<br />

можно оставить только функции, связанны<strong>е</strong> с об<strong>е</strong>дами.<br />

★<br />

★<br />

★<br />

Уб<strong>е</strong>дит<strong>е</strong>сь, что конструктор работа<strong>е</strong>т. Он д<strong>е</strong>ла<strong>е</strong>т что-то, ч<strong>е</strong>го н<strong>е</strong> д<strong>е</strong>ла<strong>е</strong>т<br />

конструктор класса P a rty ? Оставьт<strong>е</strong> только эти функции.<br />

Вс<strong>е</strong> парам<strong>е</strong>тры и м<strong>е</strong>тоды варианта Healthy Option должны остаться в класс<strong>е</strong><br />

D in n e rP arty .<br />

Если мы хотим сохранить код формы, то н<strong>е</strong> смож<strong>е</strong>м п<strong>е</strong>р<strong>е</strong>крыть м<strong>е</strong>тод Эта проц<strong>е</strong>дура<br />

C a lc u la te C o s t (), так как форма должна п<strong>е</strong>р<strong>е</strong>дать в н<strong>е</strong>го логич<strong>е</strong>скую п<strong>е</strong>- называ<strong>е</strong>тся^^^<br />

р<strong>е</strong>м<strong>е</strong>нную h e a lth y O p tio n . Поэтому мы просто добавим в класс <strong>е</strong>щ<strong>е</strong> один<br />

м<strong>е</strong>тод C a lc u la te C o s t О , работающий с другими парам<strong>е</strong>трами. Исполь- Д^^сддотр<strong>е</strong>нй<br />

зуйт<strong>е</strong> для <strong>е</strong>го объявл<strong>е</strong>ния код из начала данной главы. Т<strong>е</strong>п<strong>е</strong>рь запись b a s e . ^ глав<strong>е</strong> 8.<br />

C a lc u la te C o s tO дастдоступ к м<strong>е</strong>тоду C a lc u la te C o s t () в класс<strong>е</strong> P a rty .<br />

О Пусть класс B irth d ayP arty такж <strong>е</strong> насл<strong>е</strong>ду<strong>е</strong>т от класса P a rty<br />

Для класса B ir th d a y P a r ty пров<strong>е</strong>дит<strong>е</strong> аналогичную проц<strong>е</strong>дуру, п<strong>е</strong>р<strong>е</strong>н<strong>е</strong>ся вс<strong>е</strong> общи<strong>е</strong><br />

признаки в базовый класс.<br />

★<br />

Каки<strong>е</strong> д<strong>е</strong>йствия конструктора B ir th d a y P a r ty н<strong>е</strong> являются частью класса<br />

P arty ?<br />

★ Вам нужно посчитать стоимость торта внутри класса B irth d a y P a rty .<br />

Это затрагива<strong>е</strong>т м<strong>е</strong>тод и свойства, поэтому их потр<strong>е</strong>бу<strong>е</strong>тся п<strong>е</strong>р<strong>е</strong>крыть.<br />

★<br />

Свойства тож<strong>е</strong> можно п<strong>е</strong>р<strong>е</strong>крывать! Присваивая знач<strong>е</strong>ни<strong>е</strong> п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной<br />

b a s e .Numberof P eople, вы обраща<strong>е</strong>т<strong>е</strong>сь к м<strong>е</strong>тоду записи в базовом класс<strong>е</strong>.<br />

Ключ<strong>е</strong>во<strong>е</strong> слово b a s e потр<strong>е</strong>бу<strong>е</strong>тся вам как для чт<strong>е</strong>ния, так и для записи.<br />

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

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

Saved successfully!

Ooh no, something went wrong!