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

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

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

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

ьпч.йс(с)(пен 1пчепгсгу("Кусачки", 5.95, 3)); гпч.йсЫ (пеи 1пчепгсгу("Отвертки", 8.29, 2))г гпч.йсЫ (пен 1пчепгсгу("Молотки", 3.50, 4)); гпч.йсЫ (пен 1пчепясгу("Дрели", 19.88, 8)); Сспяо1е.иг1севдпе("Перечень товарных запасов:"); 1сгеясй(1пчепгсгу г ьп гпч) ( Сспяс1е.нгггеъьпе(" " ь 1)г ) )зава 25. ((омекции, перечисянтеян и итераторы 989 При выполнении программы из данного примера получается следующий результат. Перечень товарных запасов: Кусачки Стоимость: 85.95 Отвертки - Стоимость: 88.29 Молотки Стоимость: 83.50 Дрели Стоимость: 819.88 Наличие: 3 Наличие: 2 Наличие: 4 Наличие: 8 Пример сохранения обьектов класса 1пчептогу в О обобщенной коллекции класса ьгяг<т>.

пзгпч Яуягев; иягпд Яуятев.со11ест1опя.оепег1сс с1аяз 1пчептогу ( ятг1п0 паве; бооЬ1е созс; упт опьапбс рп)>11с 1пчептогу(ятггпч и, боп)>1е с, 1пт А) ( паве = и; созг = с; опьапб = Го ) рп)>11с очеггтбе ятгьпч тозтг1пч() ( гегвгп Ятг1пч . Гогват ("( О, -10 )Стоимость: ( 1, б:С) Наличие: ( 2 ) ", папе, спят, опаапб)1 с1аяя туреЯаге1пчептогуьгяс ( ятат1с чотб Ма1п() ( Ь1зг<1пчептогу> упч = пен Ь1ят<1пчептогу>() // Добавить элементы в список.

упч.хсЫ(пен 1пчептоту("Кусачки", 5.95, 3)); ).пч.хсЫ (пен 1пчептоту("Отвертки", 8.29, 2)); гпч.хсЫ(пен 1пчептогу("Молотки", 3.50, 4)); 1пч/АсЫ(пен 1пнептогу("Дрели", 19.88, 8)); Обратите внимание на то, что в данном примере программы не потребовалось никаких специальных действий для сохранения в коллекции объектов типа 1пче и С о ту.

Благодаря тому что все типы наследуют от класса о)>3 ест, в необобщенной коллекции можно хранить объекты любого типа. Именно поэтому в необобщенной коллекции нетрудно сохранить объекты определяемых пользователем классов. Безусловно, это также означает, что такая коллекция не типизирована. Для того чтобы сохранить объекты определяемых пользователем классов в типизированной коллекции, придется воспользоваться классами обобщенных коллекций. В качестве примера ниже приведен измененный вариант программы из предыдущего примера. В этом варианте используется класс обобщенной коллекции П1яс<т>, а результат получается таким же, как и прежде. 990 Часть Н. Библиотека С() Соззо1е.иг1сеъьзе(юперечень товарных запасов:")1 Гогеасз(тптепгоху г гз 1зт) ( Сопзо1е.иг1сеъгпе(" " + 1); ) Данный пример отличается'от предыдущего лишь передачей типа 1пчеззогу в качестве аргумента типа конструктору класса 11зг<Т>.

А в остальном оба примера рассматриваемой здесь программы практически одинаковы. Это, по существу, означает, что для применения обобщенной коллекции не требуется никаких особых усилий, но при сохранении в такой коллекции объекта конкретного типа строго соблюдается типовая безопасность. Тем не менее для обоих примеров рассматриваемой здесь программы характерна еще одна особенность: они довольно кратки.

Если учесть, что для организации динамического массива, где можно хранить, извлекать и обрабатывать данные товарных запасов, потребуется не менее 40 строк кода, то преимущества коллекций сразу же становятся очевидными. Нетрудно догадаться, что рассматриваемая здесь программа получится длиннее в несколько раз, если попытаться закодировать все эти функции коллекции вручную. Коллекции предлагают готовые решения самых разных задач программирования, и поэтому их следует использовать при всяком удобном случае.

У рассматриваемой здесь программы имеется все же один не совсем очевидный недостаток: коллекция не подлежит сортировке. Дело в том, что в классах Аггау11зг и 11зс<т> отсутствуют средства для сравнения двух объектов типа 1зчезсогу. Но из этого положения имеются два выхода. Во-первы)С в классе 1нчеззогу можно реализовать интерфейс 1 Созтра гаЬ1е, в котором определяется метод сравнения обьектов данного класса. И во-вторых, для целей сравнения можно указать объект типа 1Солтрагег.

Оба подхода рассматриваются далее по очереди. Реализация интерфейса 1Соп)ракаЪ1е Если требуется отсортировать коллекцию, состоящую из объектов определяемого пользователем класса, при условии, что они не сохраняются в коллекции класса Яогзес(11зз, где элементы располагаются в отсортированном порядке, то в такой коллекции должен быть известен способ сортировки содержащихся в ней объектов.

С этой целью можно, в частности, реализовать интерфейс 1СовтрагаЬ1е для объектов сохраняемого типа. Интерфейс 1СотлрагаЬ1е доступен в двух формах: обобщенной и необобщенной. Несмотря на сходство применения обеих форм данного интерфейса, между ними имеются некоторые, хотя и небольшие, отличия, рассматриваемые ниже. Реализация интерфейса 1Сотт(рака?йе для необобщенных коллекций Если требуется отсортировать объекты, хранящиеся в необобщенной коллекции, то для этой цели придется реализовать необобщенный вариант интерфейса 1СоырагаЬ1е.

В этом варианте данного интерфейса определяется только один метод СовтрагеТо (), который определяет порядок выполнения самого сравнения. Ниже приведена общая форма объявления метода Соврз геТо () . Тнг Созрагето(оь)есс ззт) Гааза 25. Кпмекции, перечисаптеви и втерагпры 991 В методе СоврагеТо () вызывающий объект сравнивается с объектом оЬ11 Для сортировки объектов по нарастающей конкретная реализация данного метода должна возвращать нулевое значение, если значения сравниваемых объектов равны; положительное — если значение вызывающего объекта больше, чем у объекта оЬу; и отрицательное — если значение вызывающего объекта меньше, чем у объекта оЬ11 А для сортировки по убывающей можно обратить результат сравнения объектов.

Если же тип объекта обу не подходит для сравнения с вызывающим объектом, то в методе СоврагеТо () может быть сгенерировано исключение )(гдпвепСЕхсерС1оп. В приведенном ниже примере программы демонстрируется конкретная реализация интерфейса 1СоврагаЬ1е. В этой программе интерфейс 1СоврагаЬ1е вводится в класс 1пнепСогу, разработанный в двух последних примерах из предыдущего раздела. В классе 1пчепСогу реализуется метод СоврагеТо () для сравнения полей паве объектов данного класса, что дает возможность отсортировать товарные запасы по наименованию. Как показано в данном примере программы, коллекция объектов класса 1пчепгогу подлежит сортировке благодаря реализации интерфейса 1СоврагаЬ1е в этом классе. !/ Реализовать интерфейс 1ссврагаЫе. оя1пэ Яуягев; оя1пд Яувоев.Со11есогопя; Реализовать необобщенный вариант интерфейса 1СоврагаЬ1е.

с1ава 1пчепоогу : 1СоврагаЫе ( ясг1пд паве; бооЫе сояг( 1пс оппапб1 рпЫьс 1пнепгогу(ягг1пч и, бооЬ1е с, гпС Ы ( паве = и; сояС = с; оппапб = Ь; ) роЫгс очегггбе ягг1пс тоягг1пэ() геопгп ягггпэ. РопяаС ("( О, -10 )Стоимостьо ( 1, б:С ) Наличие: (2 ) ", паве, сояС, оппапб); Реализовать интерфейс 1СоврагаЬ1е. рпЫгс гпС Соврагето(оЬЗесг оЬ1) ( 1пнепСогу Ь; Ь = (1пнепгогу) оЬГП гегпгп паве.соврагето(Ь.паве)~ ) с1аяя 1СоврагаЫебево ( ягасгс чогп нагл() ( вггауьгяс гпч = пен пггауььяс() О )(сбавить элементы в список. 992 Часть Н. Библиотека С() Тпч.ьс)С(пен 1пчепсогу("Кусачки", 5.95, 3) ); гпч.дс)С(пеы 1пчепсогу("Отвертки", 8.29, 2)); 1пн.ас)С(пеы 1пчепсогу("Молотки"„ 3.50, 4)); 1пч.АСс)(пеы 1пчепсогу("Дрели", 19.88, 8)); Сопзо1е.ыгъсеътпе("Перечень товарных запасов до сортировки:"); йогеась(1пнепсогу г гп Тпч) ( ,Сопво1е.иг1сеьгпе(" " + ).); ) Сопзо1е.нгтгеъгпе(); // Отсортировать список.

Тпч.зогс(); Сопво1е.нгъсеьгпе("Перечень товарных запасов после сортиравкис") ГогеасЛ(1пчепгогу г ьп Тпч) ( Сопво1еЛггсеъгпе(" " + 1); ) Ниже приведен результат выполненил данной программы. Обратите внимание на то, что после вызова метода Ногс () товарные запасы оказываютсл отсортированными по наименованию. Перечень товарных запасов до сортировки: Стоимость: $5.95 Стоимость: $8.29 Стоимость: $3.50 Стоимость: $19.88 Наличие: 3 Наличие: 2 Наличие: 4 Наличие: 8 Кусачки Отвертки Молотки Дрели Реализация интерфейса ХСоа)рахаЬ1е Для обобщенных коллекций Если требуется отсортировать объекты, хранящиеся в обобщенной коллекции, то длл этой цели придется реализовать обобщенный вариант интерфейса 1СоырагаЬ1е<Т>.

В этом варианте интерфейса 1СомрагаЬ1е определяется приведенная ниже обобщенная форма метода соыра гето (), гпг СозрагеТо(Т огьег) В методе Сомрагето () вызывающий объект сравниваетсх с другим объектом осЛег. Длл сортировки объектов по нарастающей конкретная реализация данного метода должна возвращать нулевое значение, если значения сравниваемых объектов равны; положительное — если значение вызывающйго объекта больше, чем у объекта другого о Слег) и отрицательное — если значение вызывающего объекта меньше, чем у другого объекта о слег. А для сортировки по убывающей можно обратить результат сравнения объектов. При реализации обобщенного интерфейса 1СомрагаЬ1е<Т> имл типа реализующего класса обычно передается в качестве аргумента типа.

Перечень Дрели Кусачки Молотки Отвертки товарных запасов после сортировки: Стоимость: $19.88 Наличие: 8 Стоимость: $5.95 Наличие: 3 Стоимость: $3.50 Наличие: 4 Стоимость: $8.29 Наличие: 2 Глава 2б. Коллекции, веречислители и итераторы 993 Приведенный ниже пример программы является вариантом предыдущего примера, измененным с целью реализовать и использовать обобщенный интерфейс 1сошрагаЫе<т>.

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

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

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

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