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.

насл<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

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

Saved successfully!

Ooh no, something went wrong!