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

Г. Шилдт - С#4.0 Полное руководство (1160795), страница 61

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

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

Ниже приведен обновленный вариант класса Га11БоГГАггау вместе с методом Ма1п'(), демонстрирующим его применение. Применить автоматически реализуемые и доступные только для чтения свойства Ьепдсп и Еггог. пягпд Бувсевг с1аяя Гаггзотсягтау ( гпг[) а; // ссылка на базовый массив Построить массив по заданному размеру. риЫгс ГаггзоГГАгтау(1пс яьге) ( а = пеи гпг(я1ге); Ьепдсп = ягтеГ // Автоматически реализуемое и доступное только для чтения свойство Ьепдсп.

роЫ1с тпс Ьепдсп ( дес; рггчасе яес; Автоматически реализуемое и доступное только для чтения свойство Еггог. роЫгс Ьоо1 Еггот ( деГГ ртгчасе яес) Это индексатор для массива Ра11БоГГАттау. роЫ1с 1пс ГЫя(1пс 1пбек] // это аксессор дег. дег ( Глава 10. Индвксвторы н свойства 323 11(о)г(гпоех)) ( Еггог = Га1яе; гегцгп а(гпбех]; ) е1яе ( Еггог =- ггце) гегцгп О; ) уу Это аксессор яег. яег ( 11 (оК (тпс(ех) ) ( а(гпбех] = ча1це; Еггог = Га1яе) ) е1яе Еггог = Ггце; Возвратить логическое значение Ггце, если уу индекс находится в установленных границах.

рггчасе Ьоо1 оК (1пг гпбех) ( 11(1псех >= О а 1пг)ех < ьепчгь) гегцгп ггце; гесогп Га1яеГ Продемонстрировать применение усовершенствованного отказоустойчивого массива. с1аяя Гьпа1ГЯПешо ( ясасьс чого Нагл() ( Га115огсхггау Гя = пен Гаг1Ботсхггау(5)) У/ Использовать свойство Еггог. Гог(тпс г=ог г < Гя.ъепосл + 1; 1++) ( Гя(г] = 1*10) 11(тя.вггог) Сопяо1е.иггсеъгпе("Ошибка в индексе " + г) Этот вариант класса Га11БОГСАггау действует таким же образом, как и предыдущий, но в нем отсутствуют поддерживающие поля, объявляемые явно. На применение модификаторов доступа в аксессорах накладываются следующие ограничения. Во-первых, действию модификатора доступа подлежит только один аксессор: яес или оеь, но не оба сразу.

Во-вторых, модификатор должен обеспечивать более ограниченный доступ к аксессору, чем доступ на уровне свойства или индексатора. И наконец, модификатор доступа нельзя использовать при объявлении аксессора в интерфейсе или же при реализации аксессора, указываемого в интерфейсе. (Подробнее об интерфейсах речь пойдет в главе 12.) 324 Часть ]. Язык С() Применение индексаторов и свойств В предыдущих примерах программ был продемонстрирован основной принцип действия индексаторов и свойств, но их возможности не были раскрыты в полную силу.

Поэтому в завершение этой главы обратимся к примеру класса Аап9ейггау, в котором индексаторы и свойства используются для создания типа массива с пределами индексирования, определяемыми пользователем. Как вам должно быть уже известно, индексирование всех массивов в С)) начинается с нуля. Но в некоторых приложениях индексирование массива удобнее начинать с любой произвольной точки отсчета: с 1 или даже с отрицательного числа, например от -5 и до 5.

Рассматриваемый здесь класс Нап9ейггау разработан таким образом, чтобы допускать подобного рода индексирование массивов. Используя класс Аап9ейггау, можно написать следующий фрагмент кода. Капэейггау га = пен Аапчехггау(-5, 10); // массив с индексами от -5 до 10 аког(ьпг 1=-5," 1 <= 10; 1++) га(г] = 1; // индексирование массива от -5 до 10 Нетрудно догадаться, что в первой строке этого кода конструируется обьект класса йап9ейггау с пределами индексирования массива от — 5 до 10 включительно.

Первый аргумент обозначает начальный индекс, а второй — конечный индекс. Как только объект га будет сконструирован, он может быть проиндексирован как массив в пределах от — 5 до 10. Ниже приведен полностью класс Аап9ейггау вместе с классом Аап9ейггауРешо, в котором демонстрируется индексирование массива в заданных пределах.

Класс Аап9ейггау реализован таким образом, чтобы поддерживать массивы типа 1пг, но при желании вы можете изменить этот тип на любой другой. /* Создать класс со специально указываемыми пределами индексирования массива. Класс Аапчейггау допускает индексирование массива с любого значения, в не только с нуля. При создании объекта класса Аапчеяггау указываются начальный и конечный индексы. Допускается также указывать отрицательные индексы. Например, можно создать массивы, индексируемые от -5 до 5, от 1 до 10 или же от 50 до 56. */ цзгп9 Бувсешг с1авв Капчеяггау ( Закрытые данные. гпс(] а; // ссылка на базовый массив гпс 1онегэоспб; // наименьший индекс глс цррегвоцпсп // наибольший индекс // Автоматически реализуемое и доступное только для чтения свойство Ьепчьь.

рць11с ьпг ьепэгь ( чегг рггчаге зегг Автоматически реализуемое и доступное только для чтения свойство Еггог. рцЬ1гс Ьоо1 еггог ( 9ег; рггчаге вегг ) // Построить массив по заданному размеру. рцЬ11с АвпчеАггау(ьпс 1он, ьпс Ь19Ь) ( Ь19Ьеь; Глава 10. Иидексаторы и свойства 325 11(ввдй <= 1он) Сопяо1е.кга<еЬгпе("Неверные индексы" ); й1дй = 1; // создать для надежности минимально допустимый массив 1он= 0; ) а = пен гпс[йадй — 1он]; Ьепдгй = йадй — 1он; 1онегвоцпб = 1он; цррегВоцпб = ь -Н1д)М ) // Зто индексатор для класса Напдейггау. рц)с11с Ьпс Ьйгя(гпс Ьпбех) ( Зто аксессор део.

дед ( 11(ох(гпс)ех)) ( Еггог = га1яе; геоогп а[гпбех — 1онегвоцпб]; е1яе ( Еггог = Сгое; геьцгп 0; Зто аксессор яег. яег ( гс(ой(1 ( )) а[1пбех — 1онегвоцпо] = ча1це; Еггог = уа1яе; ) е1яе Еггог = Сгое; ) ) Возвратить логическое значение Сгое, если индекс находится в установленных границах. рггнаге )зоо1 ох(1пг апбех) ( 1<(1пбех >= 1онегвоцпо я Ьпбех <= цррегВоцпб) гесцгп Сгце; геьцгп Еа1яе) ) Продемонстрировать применение массива с произвольно О задаваемыми пределами индексирования.

с1аяя НапдейггауОево ( ясаг1с но1б Магп() ( НапдеАггау га = пен НапдеАггау(-5, 5); Напдейггау га2 = пен Напдейггау(1, 10); Напдейггау гаЗ = пен НапдеАггау(-20, -12); Использовать объект га в качестве массива. Сопяо1е.нг1оеЬ1пе("][лина массива га: " + га.Ьепдсй) Еог(1пг 1 = -5; г <= 51 1++) 326 Часть 1. Язык С() га(1] Сопяо1е.нг1те("Содержимое массива га: "); Ест(гпт 1 = -5; г <= 5) г++) Сопяа1е.нггбе(га(1] + " "); Сопяо1е.нг1теЬЬпе("1п")) Использовать объект га2 в качестве массива.

Сопяо1е.нг1теььпе("Длина массива га2: " + га2.Ьепчтй) сот(1пт 1 = 1; 1 <= 10; 1++) га2(г] = 1; Сопяо1е.нггте("Содержимое массива га2: ") бог(1пт 1 = 1; г <= 10; г++) Сопяо1е.нг1те(та2(1) т " "); сопяо1е.иггтеьгпе ("1п") 4 // Использовать объект таЗ в качестве массива. Сопяо1е.нггтеььпе("Длина массива гаЗ: " Ь гаЗ.Ьепчтб) Гог(1пт 1 = -20; 1 <= -12; г++) таЗ[г) = ).; Сопяо1е.нгьте("Содержимое массива таЗ: ") сот(гпт 1 = -20; г <= -12) 1++) Сопяо1е.нгьте(гаЗ(г] е " "); Сопяо1е.нг1теььпе("1п")) ) ) При выполнении этого кода получается следующий результат. Длина массива та: 11 Содержимое массива га: -5 -4 -3 -2 -1 0 1 2 3 4 5 Длина массива та2: 10 Содержимое массива га2: 1 2 3 4 5 б 7 8 9 10 Длина массива гаЗ: 9 Содержимое массива таЗ: -20 -19 -16 -17 -1б -15 -14 -13 -12 Как следует из результата выполнения приведенного выше кода, объекты типа Вапдейггау можно индексировать в качестве массивов, начиная с любой точки отсчета, а не только с нуля.

Рассмотрим подробнее саму реализацию класса ВапдеАггау. В начале класса напдейтгау объявляются следующие закрытые переменные экземпляра. // Закрытые данные. 1пт(] а4 // ссылка на базовый массив гпт 1онегВоппб) // наименьший индекс .1пт пррегвоопд4 // наибольший индекс Глава 10. Индвксаторы и свойства 327 Переменная а служит для обращения к базовому массиву по ссылке.

Память для него распределяется конструктором класса Вапдейггау. Нижняя граница индексирования массива хранится в переменной 1оыегВоппб, а верхняя граница — в переменной прре гВоппо). Далее объявляются автоматически реализуемые свойства ьепдгЬ и еггог. // Автоматически реализуемое и доступное только для чтения свойство Ьепдсп. рпЫтс Ьпс Ьепдсп ( дес) ргьчасе вес; ) // Автоматически реализуемое и доступное только для чтения свойство Еггог. риЬ11с Ьоо1 Еггог ( дею рг1насе вес; ) Обратите внимание на то, что в обоих свойства аксессор ее г обозначен как ргууаге, Как пояснялось выше, такое объявление автоматически реализуемого свойства, по существу, делает его доступным только для чтения.

Ниже приведен конструктор класса Вапдейггау. !! Построить массив по заданному размеру. рагс НапдеАггау(ьпс 1он, ьпс Ьгдл) ( Ыдп++," ЬГ(ЬЬдп <= 1он) ( Сопво1е.нгьсеЬЬпе("Неверные индексы"); Ьгдп = 1; !/ создать для надежности минимально допустимый массив 1он = О; ) а = пен 1пт (Ыдп — 1он]; Ьепдсп = Ыдп — 1он; 1омегВоппб = 1он1 пррегВоппб = — Ьгдп; ) При конструировании объекту класса Еапдейггау передается нижняя граница массива в качестве параметра 1оы, а верхняя граница — в качестве параметра ЬгдЬ. Затем значение параметра Мдп инкрементируется, поскольку пределы индексирования массива изменяются от 1ои до б Ьдй включительно. Далее выполняется следующая проверка: является ли верхний индекс больше нижнего индекса. Если это не так, то выдается сообщение об ошибке и создается массив, состоящий из одного элемента. После этого для массива распределяется память, а ссылка на него присваивается переменной а.

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

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

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

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее