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>рархия классов<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

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

Saved successfully!

Ooh no, something went wrong!