. Стиллмен, Дж. Грин - Изучаем 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.
н<strong>е</strong> тратьт<strong>е</strong> золото, <strong>е</strong>сли нуж<strong>е</strong>н только бл<strong>е</strong>ск<br />
Насл<strong>е</strong>довани<strong>е</strong><br />
Классы D i n n e r P a r t y и B i r t h d a y P a r t y н<strong>е</strong> случайно им<strong>е</strong>ют одинаковый код. При написании программ<br />
<strong>C#</strong> часто создаются классы, соотв<strong>е</strong>тствующи<strong>е</strong> проц<strong>е</strong>ссам из р<strong>е</strong>ального мира, и эти проц<strong>е</strong>ссы, как правило,<br />
связаны друг с другом. Ваши классы им<strong>е</strong>ют одинаковый код, так как проц<strong>е</strong>ссы, взяты<strong>е</strong> за их основу<br />
(дни рожд<strong>е</strong>ния и званы<strong>е</strong> об<strong>е</strong>ды), им<strong>е</strong>ют одинаковы<strong>е</strong> признаки.<br />
рассчитать<br />
стоимость<br />
м<strong>е</strong>роприятия<br />
DinnerParty<br />
NumberOfPeople ^<br />
CostOTOecorations .........<br />
HealthyOption<br />
CostOffieveragesPerPerson<br />
К э т л и н в обоих<br />
случаях нужно Ч CalcuiateCostOTOecorationsO ^<br />
( _CalculateCost() ^<br />
SetHealthyOptionO<br />
BirthdayParty<br />
►МитЬ<strong>е</strong>ЮГР<strong>е</strong>орІ<strong>е</strong><br />
►СозЮГО<strong>е</strong>согаІіопз<br />
CakeSize<br />
CakeWriting<br />
►CalculateCostOTOecorationsO<br />
►CalculateCostO<br />
Колич<strong>е</strong>ство<br />
гост<strong>е</strong>й и ст ой-<br />
Mocmi? оформл<strong>е</strong>ния<br />
для дн<strong>е</strong>й<br />
рожд<strong>е</strong>ния обрабатываются<br />
п о ч -<br />
•VI« так ж<strong>е</strong>, как<br />
званы<strong>е</strong> об<strong>е</strong>ды.<br />
Збаны<strong>е</strong> об<strong>е</strong>ды u дни |)о;кд<strong>е</strong>ния о тн о с я тся к п|>и<strong>е</strong>мам<br />
Если сущ<strong>е</strong>ствуют н<strong>е</strong>сколько классов, являющихся частными случаями другого, бол<strong>е</strong><strong>е</strong> общ<strong>е</strong>го класса,<br />
можно заставить их насл<strong>е</strong>довать от этого класса. При этом они становятся классами, производными<br />
(subclass) от базового (base class).<br />
Колич<strong>е</strong>ство приглаш<strong>е</strong>н- ,<br />
ных и стоимость оформл<strong>е</strong>ния<br />
нужно знать для<br />
при<strong>е</strong>ма любого типа, поэтому<br />
данны<strong>е</strong> парм<strong>е</strong>тры<br />
нужно пом<strong>е</strong>стить в базовый<br />
класс.<br />
Party<br />
Numl)eЮfPeople<br />
CostOTOecorations<br />
CalculateCostOTOecorationsO<br />
CalculateCostO _______<br />
Н<strong>е</strong>смотря на сходство,<br />
окончат<strong>е</strong>льная стоимость<br />
каждого при<strong>е</strong>ма<br />
рассчитыва<strong>е</strong>тся<br />
у^-разноми. Поэтому<br />
сходны<strong>е</strong> пов<strong>е</strong>д<strong>е</strong>ния логично<br />
пом<strong>е</strong>стить в базовый<br />
класс, а отличны<strong>е</strong> —<br />
в производны<strong>е</strong> классы.<br />
С<br />
Стр<strong>е</strong>лка в диаграмм<strong>е</strong><br />
указыва<strong>е</strong>т,<br />
что класс<br />
DinnerParty<br />
унасл<strong>е</strong>дован<br />
от класса Party.<br />
Оба производных<br />
класса насл<strong>е</strong>Эуют<br />
проц<strong>е</strong>дуру<br />
DinnerParty расч<strong>е</strong>та стои BirthdayParty<br />
NumberOfPeople мости оформ NumberOfPeople<br />
HealthyOption л<strong>е</strong>ния от ба CakeSize<br />
CostOffieveragesPerPerson зового класса, CakeWriting<br />
поэтому<br />
О,, /?<br />
она<br />
CalculateCostQ 0 них н<strong>е</strong> вклю CalculateCostQ 6z-----------------<br />
SetHealthyOptionO ч<strong>е</strong>на.<br />
242 глава 6