. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
насл<strong>е</strong>довани<strong>е</strong><br />
Дополнит<strong>е</strong>льный Взнос за м<strong>е</strong>роприятия с большим<br />
колич<strong>е</strong>ством гост<strong>е</strong>й<br />
Благодаря программ<strong>е</strong> д<strong>е</strong>ла Кэтлин пошли в гору, и т<strong>е</strong>п<strong>е</strong>рь она мож<strong>е</strong>т<br />
с<strong>е</strong>б<strong>е</strong> позволить брать дополнит<strong>е</strong>льную плату за м<strong>е</strong>роприятия<br />
с оч<strong>е</strong>нь большим колич<strong>е</strong>ством гост<strong>е</strong>й (бол<strong>е</strong><strong>е</strong> 12 ч<strong>е</strong>лов<strong>е</strong>к). Как ж<strong>е</strong> добавить<br />
к программ<strong>е</strong> <strong>е</strong>щ<strong>е</strong> один плат<strong>е</strong>ж?<br />
★<br />
М<strong>е</strong>тод D i n n e r P a r t y . C a l c u l a t e C o s t () долж<strong>е</strong>н пров<strong>е</strong>рять<br />
знач<strong>е</strong>ни<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>ни<strong>е</strong> пр<strong>е</strong>выша<strong>е</strong>т 12, добавлять $100.<br />
★ Аналогично для м<strong>е</strong>тода B i r t h d a y P a r t y . C a l c u l a t e C o s t ( ) .<br />
Подумайт<strong>е</strong>, как добавить <strong>е</strong>щ<strong>е</strong> один плат<strong>е</strong>ж к классам D i n n e r P a r t y<br />
и B i r t h d a y P a r t y . Какой код сл<strong>е</strong>ду<strong>е</strong>т написать? С какими эл<strong>е</strong>м<strong>е</strong>нтами<br />
этот код долж<strong>е</strong>н быть связан?<br />
Каж<strong>е</strong>тся, что это просто... но что мож<strong>е</strong>т случиться при сосущ<strong>е</strong>ствовании<br />
тр<strong>е</strong>х одинаковых классов? А ч<strong>е</strong>тыр<strong>е</strong>х? А дв<strong>е</strong>надцати? А что<br />
<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>ство родств<strong>е</strong>нных<br />
классов?<br />
То <strong>е</strong>сть мн<strong>е</strong> прид<strong>е</strong>тся снова и<br />
снова писать один и тот ж<strong>е</strong> код?<br />
Вот спасибо! Мож<strong>е</strong>т быть, <strong>е</strong>сть<br />
какой-то другой способ?<br />
Вы правы ! П овтор<strong>е</strong>ни<strong>е</strong> одного и того ж <strong>е</strong> кода<br />
в разны х классах н<strong>е</strong>эф ф <strong>е</strong>ктивно. И к том у ж<strong>е</strong><br />
ув<strong>е</strong>личива<strong>е</strong>тся в<strong>е</strong>роятность ош ибок.<br />
К счастью, в <strong>C#</strong> сущ<strong>е</strong>ству<strong>е</strong>т бол<strong>е</strong><strong>е</strong> продуктивный<br />
способ создания связанных друг с другом классов:<br />
насл<strong>е</strong>довани<strong>е</strong> (inheritance).<br />
дальш<strong>е</strong> ► 241