Главная » Просмотр файлов » Г. Шилдт - С# 3.0 Полное руководство. 2010

Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 70

Файл №1160798 Г. Шилдт - С# 3.0 Полное руководство. 2010 (Г. Шилдт - С# 3.0 Полное руководство. 2010) 70 страницаГ. Шилдт - С# 3.0 Полное руководство. 2010 (1160798) страница 702019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 70)

Реализация интерфейсов Как только интерфейс будет определен, он может быть реализован в одном или более классе. Для реализации интерфейса достаточно указать его имя после имени класса, аналогично базовому классу. Ниже приведена общая форма реализации интерфейса в классе. с1авз имя класса: имв интерфейса ( // тело класса ) Глава )2. интерфейсы, структуры и перечисления 363 где имя интерфейса — это конкретное имя реализуемого интерфейса. Если уж интерфейс реализуется в классе, то это должно быть сделано полностью. В частности, реализовать интерфейс выборочно и только по частям нельзя.

В классе допускается реализовать несколько интерфейсов. В этом случае все реализуемые в классе интерфейсы указываются списком через запятую. В классе можно наследовать базовый класс и в тоже время реализовать один или более интерфейс. В таком случае имя базового класса должно быть указано перед списком интерфейсов, разделяемых запятой. Методы, реализующие интерфейс, должны быть объявлены как рпЫйс. Дело в том, что в самом интерфейсе эти методы неявно подразумеваются как открытые, поэтому их реализация также должна быть открытой. Кроме того, возвращаемый тип и сигнатура реализуемого метода должны точно соответствовать возвращаемому типу и сигнатуре, указанным в определении интерфейса. Ниже приведен пример программы, в которой реализуется представленный ранее интерфейс 15егйев.

В этой программе создается класс НуТиов, генерирующий последовательный ряд чисел, в котором каждое последующее число на два больше предыдущего. // Реализовать интерфейс 15ег1ев. с1авв Вутиов : 15еггев ) 1пг вгаггт гпг уа1т рпЫБс вутиов () ( вгагг = От уа1 = 0) риЫгс Рпс пекыехк() ( уа1 += 2т гесигп татя рпЬ11с уоьс Кевеш) ( уа1 = всагст рпЫгс уо1т) Бесзсагс(1пс х) ( вгагг = хт уа1 = всагст ) ) Как видите, в классе ВуТиов реализуются три метода, определяемых в интерфейсе 15ег1ев. Как пояснялось выше, это приходится делать потому, что в классе нельзя реализовать интерфейс частично. Ниже приведен код класса, в котором демонстрируется применение класса вутиов, реализующего интерфейс 15ег1ев. // Продемонстрировать применение класса Вутиов, // реапивуюшего интерфейс.

нейли Бувсешт 364 Часть ). Нзык С№ с1аяя БегтевОеюо ( ятаткс чо10 Ма1п() ( Вутнов оЬ = пен Вутнов() тот(1пт к=с) к < 5) 1++) Сопво1е.ит1те51пе("Следующее число равно " + оо.петиехт())к Сопво1е.ит1те11пе("1псбросить")т оЬ. Ревет () ) тот(кпт к=от к < 58 к+ь) Сопяо1е.ит1теь1пе("Следующее число равно " + оЬ.петиехт())к Сопво1е.ит1теь1пе("1пиачать с числа 100")т оЬ.Бетятатт(100); тот(кпт к=от 1 < 5т к+ь) Сопво1е.ит1те51пе("Следукицее число равно " + оь.аегиехг())к Для того чтобы скомпилировать код класса Бе т1ея Веще, необходимо включить в компиляцию файлы, содержащие интерфейс 15еттея, а также классы Вутиоя и Беттея Веще.

Компилятор автоматически скомпилирует все три файла и сформирует из иих окончательный исполняемый файл. Так, если эти файлы называются 15ет1ея. ся, Вутиоя. св и Бет1ея()еще. ся, то программа будет скомпилирована в следующей командной строке: ьсас Беккеввещо.св Хвеюхев.са Вучцков.са В интегрированной среде разработки к()впа! Япг)(о для этой цели достаточно ввести все три упомянутых выше файла в конкретный проект С№. Кроме того, все три компилируемых элемента (интерфейс и оба класса) допускается включать в единый файл.

Ниже приведен результат выполнения скомпилированного кода. Следующее число равно 2 Следующее число равно 4 Следующее число равно б Слелуккцее число равно 8 Следующее число равно 10 Начать с числа 100. Следующее число равно 102 Следующее число равно 104 Следующее число равно 106 Следующее число равно 108 Слелующее число равно 110 Сброситц.

Следующее Следукщее Следующее Следуккцее Следуккцее число равно 2 число равно 4 число равно 6 число равно 8 число равно 10 Глава (2. Интерфейсы, структуры н перечисления 365 В классах, реализующих интерфейсы, разрешается и часто практикуется определять их собственные дополнительные члены. В качестве примера ниже приведен другой вариант класса нутыоз, в который добавлен метод песргеч1оия (), возвращающий предыдущее значение. // Реализовать интерфейс 1Яеггея и добавить в // класа Вутноя метод оеСРгеч1оия(). с1аяя путная: 15еггея [ гпс ясагст 1ПС ча'т гпс ргечт риЫ1а Вутноя() ( ясагс = от ча1 От ргеч = -2т ) риЫга 1пг Яегыехг() ( ргеч = ча1т ча1 += 2т гегигп ча1т ) риЫ1с чогб Неяег() ( ча1 = ягаггт ргеч = ясагс — 2т риЫгс чогд Яегзгагг(впг х) ( ясагс = хт ча1 = ясагст ргеч = ча1 - 2т ! // Метод, не указанный в интерфейсе 1Яег1ея.

риЫгс гпС Сегргеч1оия() ( гесигп ргечт Как видите, для того чтобы добавить метод йесргеч1оия (), потребовалось внести изменения в реализацию методов, определяемых в интерфейсе 15ег1ея. Но поскольку интерфейс для этих методов остается прежним, то такие изменения не вызывают никаких осложнений и не нарушают уже существующий код. В этом и заключается одно из преимуществ интерфейсов. Как пояснялось выше, интерфейс может быть реализован в любом количестве классов. В качестве примера ниже приведен класс Рг1тпея, генерирующий ряд простых чисел.

Обратите внимание на то, реализация интерфейса 15егйея в этом классе коренным образом отличается от той, что предоставляется в классе Вутыоя. // Напользовать интерфейа 1Яег1ея для реализации // процесса генерирования простых чиаел. с1аяя Рг1аея: 15егвея ( 366 Часть (. язык С» гпг вгаггт гпс ча1; роЬ11с Рггеев() ( всагс = 2т ча1 = 22 ) рпь1гс гпс оесиехс() ( 1пс г, Ьоо1 гврггеет ча1++) Рог(1 = ча1; 1 < 1000000т г+ь) ( гврггее = Ггоет Гог(2 = 2т 1 <= 1/0' зе+) ( гг((гь))==0) ( гврггте = Га1вет Ьгеакт ) ) гт(хвргппе) ( ча1 = 12 Ьгеа)ст ) ) гегпгп ча1т ) рон11с чогт( невес () ( ча1 = всагст роЬ11с чоз Д зегэгагг(гпс х) ( вгагг = хт ча1 = всаггт ) Самое любопытное, что в обоих классах, вутыов и Рг1тпев, реализуется один и тот же интерфейс, несмотря на то, что в них генерируются совершенно разные ряды чисел.

Как пояснялось выше, в интерфейсе вообще отсутствует какая-либо реализация, поэтому он мо- Э жег быть свободно реализован в каждом классе так, как это требуется для самого класса Применение интерфейсных ссылок Как это ни покажется странным, но в СФ допускается объявлять переменные ссылочного интерфейсного типа, т.е. переменные ссылки на интерфейс. Такая переменная может ссылаться на любой объект, реализующий ее интерфейс. При вызове метода для объекта посредством интерфейсной ссылки выполняется его вариант, реализованный в классе данного объекта.

Этот процесс аналогичен применению ссылки на базовый класс для доступа к объекту произвол(того класса, как пояснялось в главе 11. Глава 12. Интерфейсы, структуры и перечисления 367 В приведенном ниже примере программы демонстрируется применение интерфейсной ссылки. В этой программе переменная ссылки иа интерфейс используется с целью вызвать методы для объектов обоих классов — Бутыоя и Ргфшея. Для ясности в данном примере показаны все части программы, собранные в единый файл. // Продемонстрировать интерфейсные ссылки. цяфпч Буяселц // Определить интерфейс. рцЫфс 1псегтасе 18егтея ( тпг Бесыехс()т // возвратить следующее по порядку число чотб аеяес()т // перезапустить чо1б ЯеГБГагг(тпг х)т // задать начальное значение // Использовать интерфейс 18егтея для реализации // процесса генерирования последовательного ряда чисел, // з котором каждое последующее число на дза // больше предыдущего.

с1аьь Вутноь: 1$ег1ея ( 1пг ьгаггт 1пг ча11 рцЫ1с Вутноь () ( ягагс = от ча1 = От ) рцЫфс фпс оегиехг() ( ча1 += 21 гесцгп ча11 ) рцо11с чо1б Кеяев() ( ча1 = ясагст ) рцЫ1с чо1б БегБгагс(1пс х) [ зсагг = хт ча1 = ягагт.т ) ) // Использовать интерфейс 1Бегфез для реализации // процесса генерирования простых чисел. с1аяя Ргфшея: 1Яегфеь ( Рпг ягаггт фпг ча11 рцЫтс Ргылея() ( зсагг = 21 368 часть (. язык Са ча1 = 2 риЬ11с 1пк Яееиехк() ( 1пк 1 Ьоо1 1ярк1юе; ча1ь+т Ток(1 = ча1т 1 < 1000000) 1ьь) ( 1яркзюе = Споет Ток(0 = 2т з <= 1/Ят 0+ь) ( 11((1%0)==0) ( 1яркпяе = ка1яет Ькеахт ) ТВ(1ярк1юе) ( ча1 = 1) Ькеахт ) кекикп ча1) ) риЬ11с чоап аеяек() ( ча1 = скате) ) риЬ11с чо1к( Яесзсакс(1пс х) ( ясаке = хт ча1 = якакст ) ,с1аяя Яекаеяоеюо2 ( ясак1с чо1к( Ма1П() ( ВуТчоя СчоОЬ = пел ВуТчоя()т Рк1юея рк1юеОЬ = печ Рл1юея()> 1зек1ея оЬт Ток(1пк 1=0; 1 < Ят 1+е) ( оь = Счопьт сопяо1е.игакеьапе("следующее четное число равно " + оь.песиехс())т оЬ = рк1юеОЬ; Сопяо1е.нкакеьапе("Следующее простое число " + "равно " + оп.пекнехк ) ) Вот к какому результату приводит выполнение атой программы: В методе ма1п () переменная оь объявляется для ссылки на интерфейс 1Яегйея.

Характеристики

Тип файла
DJVU-файл
Размер
6,78 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Г. Шилдт - С# 3.0 Полное руководство
C_sharp_3TCR_code
Apndx.lst
Chap2.lst
Chap3.lst
Chap4.lst
Chap5.lst
Chap6.lst
Chap7.lst
Chap8.lst
Chap9.lst
Chap10.lst
Chap11.lst
Chap12.lst
Chap13.lst
Chap14.lst
Chap15.lst
Chap16.lst
Chap17.lst
Chap18.lst
Chap19.lst
Chap20.lst
Chap21.lst
Chap22.lst
Chap23.lst
Chap24.lst
Chap25.lst
Chap26.lst
Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее