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>гируйт<strong>е</strong> свои полномочия<br />

Д <strong>е</strong>л<strong>е</strong>гаты В geiicmBuu , ,<br />

Работать с д<strong>е</strong>л<strong>е</strong>гатами л<strong>е</strong>гко, они н<strong>е</strong> тр<strong>е</strong>буют большого объ<strong>е</strong>ма кода. По- \ Г '<br />

пробу<strong>е</strong>м с их помош;ью помочь влад<strong>е</strong>льцу р<strong>е</strong>сторана рассортировать с<strong>е</strong>- J Tlj^& yK H 0H U 0,<br />

кр<strong>е</strong>тны<strong>е</strong> ингр<strong>е</strong>ди<strong>е</strong>нты с кухни ш<strong>е</strong>ф-повара.<br />

^<br />

О Добавьт<strong>е</strong> д<strong>е</strong>л<strong>е</strong>гат в новый про<strong>е</strong>кт<br />

Д<strong>е</strong>л<strong>е</strong>гаты обычно располагаются вн<strong>е</strong> классов, поэтому добавьт<strong>е</strong> к про<strong>е</strong>кту новый файл<br />

классов G e tS e c re t I n g r e d i e n t . c s и вв<strong>е</strong>дит<strong>е</strong> в н<strong>е</strong>го строку:<br />

delegate string GetSecretlngredient(int amount);<br />

(Полностью удалит<strong>е</strong> объявл<strong>е</strong>ни<strong>е</strong> класса.) Этот д<strong>е</strong>л<strong>е</strong>гат стан<strong>е</strong>т основой п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной, указываюш;<strong>е</strong>й<br />

на м<strong>е</strong>тод, который, взяв парам<strong>е</strong>тр типа i n t, возвраш;а<strong>е</strong>т строку.<br />

О Добавьт<strong>е</strong> класс для п<strong>е</strong>рвого ш<strong>е</strong>ф-повара, Сюзанны<br />

Suzanne.cs сод<strong>е</strong>ржит класс, сл<strong>е</strong>дяш;ий за с<strong>е</strong>кр<strong>е</strong>тными ингр<strong>е</strong>ди<strong>е</strong>нтами, которы<strong>е</strong> использу<strong>е</strong>т<br />

Сюзанна. Он снабж<strong>е</strong>н закрытым м<strong>е</strong>тодом SuzannesSecretlngredient () с сигнатурой,<br />

совпадающ<strong>е</strong>й с GetSecretlngredient. Им<strong>е</strong><strong>е</strong>тся и пр<strong>е</strong>дназнач<strong>е</strong>нно<strong>е</strong> только для чт<strong>е</strong>ния<br />

свойство, возвращающ<strong>е</strong><strong>е</strong> GetSecretlngredient. С <strong>е</strong>го помощью остальны<strong>е</strong> объ<strong>е</strong>кты<br />

могут получить ссылку на м<strong>е</strong>тод SuzannesIngredientList ().<br />

c l a s s S u z a n n e {<br />

Взяв п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>н- p u b l i c G e t S e c r e t l n g r e d i e n t M y S e c r e t l n g r e d i e n t M e t h o d {<br />

ную am ount g e t {<br />

т о д % т в р ^ а <strong>е</strong> т = f e t u m n e w G e t S e c r e t l n g r e d i e n t ( S u z a n n e s S e c r e t l n g r e d i e n t ) ;<br />

строку, onucbi- ^<br />

бающую ce- J<br />

кр<strong>е</strong>тный ингр<strong>е</strong>- p r i v a t e s t r i n g S u z a n n e s S e c r e t l n g r e d i e n t ( i n t a m o u n t) {<br />

ди<strong>е</strong>нт. — aj, r e t u r n a m o u n t .T o S t r i n g 0 + " o u n c e s o f c l o v e s " ;<br />

}<br />

} Свойство GetSecretlngredient<br />

возвраща<strong>е</strong>т новый экз<strong>е</strong>мпляр<br />

п < _<br />

Добавьт<strong>е</strong> класс для второго ш<strong>е</strong>ф-повара. Эми ^<br />

д<strong>е</strong>л<strong>е</strong>гата GetSecretlngredient,<br />

указывающ<strong>е</strong>го на м<strong>е</strong>тод полу-<br />

М<strong>е</strong>тоды Эми работают так ж<strong>е</strong>, как м<strong>е</strong>тоды Сюзанны: / цтия с<strong>е</strong>кр<strong>е</strong>тных ингр<strong>е</strong>ди<strong>е</strong>нтов.<br />

д c l a s s Amy { М<br />

м<strong>е</strong>тод получ<strong>е</strong>- p u b l i c G e t S e c r e t l n g r e d i e n t A m y s S e c r e t l n g r e d i e n t M e t h o d (<br />

ния с<strong>е</strong>кр<strong>е</strong>тных g e t {<br />

ингр<strong>е</strong>ди<strong>е</strong>нтов, r e t u r n n e w G e t S e c r e t l n g r e d i e n t ( A m y s S e c r e t l n g r e d i e n t ) ;<br />

c которыми }<br />

работа<strong>е</strong>т Эми, }<br />

так ж<strong>е</strong> б<strong>е</strong>р<strong>е</strong>т ( p r i v a t e s t r i n g A m y s S e c r e t l n g r e d i e n t ( i n t a m o u n t) {<br />

п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нную i f (a m o u n t < Ю ) .<br />

am ount типа < r e t u r n a m o u n t .T o S t r i n g O<br />

int и возвраща- ) ^ I s e " s a r d i n e s - - y o u n e e d m o r e ! " ;<br />

em строку. Ho / r e t u r n a m o u n t .T o S t r i n g O + " c a n s o f s a r d i n e s " ;<br />

это уж<strong>е</strong> другая ч }<br />

строка. }<br />

512 глава 11

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

Saved successfully!

Ooh no, something went wrong!