. Стиллмен, Дж. Грин - Изучаем 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>рархия классов<br />
Конструкция, в которой под базовым классом располагаются производны<strong>е</strong><br />
классы, которы<strong>е</strong>, в свою оч<strong>е</strong>р<strong>е</strong>дь, являются базовыми<br />
для других классов, называ<strong>е</strong>тся и<strong>е</strong>рархи<strong>е</strong>й (class hierarchy). Подобный<br />
подход н<strong>е</strong> только позволя<strong>е</strong>т изб<strong>е</strong>жать многократного дублирования<br />
кода, но и д<strong>е</strong>ла<strong>е</strong>т код намного бол<strong>е</strong><strong>е</strong> читаб<strong>е</strong>льным. Наприм<strong>е</strong>р,<br />
при просмотр<strong>е</strong> кода симулятора зоопарка, наткнувшись<br />
на м<strong>е</strong>тод или свойство из класса Feline, вы сразу пойм<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>рархии<br />
Вам осталось добавить классы Feline и Canine,<br />
и и<strong>е</strong>рархия буд<strong>е</strong>т готова.<br />
Animal<br />
Picture<br />
Food<br />
Hunger<br />
Boundaries<br />
Location<br />
IVIakeNoiseO<br />
Eat()<br />
SleepO<br />
Roam()<br />
Класс Fefine п<strong>е</strong>р<strong>е</strong>крыва<strong>е</strong>т<br />
м<strong>е</strong>тод RoamQ, поэтому<br />
вс<strong>е</strong> унасл<strong>е</strong>дованны<strong>е</strong><br />
свойства будут им<strong>е</strong>ть<br />
д<strong>е</strong>ло с новым м<strong>е</strong>тодом,<br />
а н<strong>е</strong> с т<strong>е</strong>м, который дыл<br />
опр<strong>е</strong>д<strong>е</strong>л<strong>е</strong>н в класс<strong>е</strong> Animal.<br />
V.<br />
Feline<br />
sce KOIMKU двигаются<br />
п о э т а !<br />
м<strong>е</strong>тод RoamO дляны^<br />
общий. Но они п Т<br />
разному питаются <<br />
издают разны<strong>е</strong> s S y i^<br />
^оэтому м<strong>е</strong>тоды ^ ^<br />
и MakeNoiseO<br />
Унасл<strong>е</strong>дованны<strong>е</strong><br />
от класса Animai<br />
^^Р<strong>е</strong>крываются.<br />
'<br />
MakeNoiseO<br />
Eat()<br />
MakeNoiseO<br />
Eat()<br />
Волки и собаки<br />
пит аю т <br />
ся одинаково,<br />
поэтому ик "<br />
общий м<strong>е</strong>тод<br />
EatQ пом<strong>е</strong>щ<strong>е</strong>н<br />
в класс Canine<br />
Wolf<br />
MakeNoiseO<br />
MakeNoiseO<br />
248 глава 6