Главная » Просмотр файлов » 1629295403-b876e2087bddebea4bc9666fb2377a02

1629295403-b876e2087bddebea4bc9666fb2377a02 (846199), страница 81

Файл №846199 1629295403-b876e2087bddebea4bc9666fb2377a02 (С для чайников) 81 страница1629295403-b876e2087bddebea4bc9666fb2377a02 (846199) страница 812021-08-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Дополнительные глава{if{(nValueOfObject == 0)throw new CustomException("Нельзя делить на 0",this);}return 1.0 /(double)nValueOfObject;public class Program{public static void Main(string[]args)try{// take the inverse of 0MathClass mathObject = new MathClass("Value", 0 ) ;Console.WriteLine("Обратное к d.Value равно { О } " ,mathObj ect.Inverse() ) ;catch(Exception e){}Console.WriteLine("\пНеизвестная фатальная ошибка:\n{0}",e.ToString());// Ожидаем подтверждения пользователяConsole.WriteLine("Нажмите <Enter> для " +"завершения программы..

. ") ;Console.Read();}Класс CustomException несложен. Он хранит сообщение и объект, как это делалкласс MyException ранее. Однако вместо предоставления новых методов для обраще­ния к этим элементам данных он перекрывает существующее свойство Message, кото­рое возвращает сообщение об ошибке, содержащееся в исключении, и методToString ( ) , возвращающий сообщение и трассировку стека.Перекрытие этих функций означает, что даже функции, разработанные для перехватаобобщенного класса Exception, получают ограниченный доступ к новым членамданным. Новый класс лучше обеспечить собственными методами для их данных и оста­вить нетронутыми методы базового класса.Функция Main () демонстрационной программы начинает с создания объекта MathClass со значением 0, а затем пытается вычислить обратную к нему величину.

Не знаю,как вам, а мне не приходилось видеть разумные результаты деления на 0, так что еслимоя функция вдруг сделает это, я отнесусь к происшедшему с явным недоверием.На самом деле процессоры Intel возвращают значение 1.0/0.0: бесконечность.Имеется ряд специальных значений с плавающей точкой, используемых вместогенерации исключений в языках, которые не поддерживают их. Эти специаль­ные значения включают положительную и отрицательную бесконечности и по­ложительное и отрицательное NaN (Not_a_Number, не число).(пава 18. Эти исключительные исключения415В нормальных условиях метод Inverse () возвращает корректное значение.

Припередаче ему нуля он генерирует исключение CustomException, передавая ему стро­ку пояснения вместе с вызвавшим исключение объектом.Функция Main () перехватывает исключение и выводит короткое сообщение, поясняющее суть происшедшего. "Неизвестная фатальная ошибка", вероятно, означает, тапрограмма "закрывает лавочку и уходит на отдых". Но функция Main () дает исключе­нию шанс пояснить, что же все-таки произошло, вызывая его метод ToString ().Визитка класса: метод T o S t r i n g ()Все классы наследуют один общий базовый класс с именем Object. Об этом уже го­ворилось в главе 14, "Интерфейсы и структуры".

Здесь, однако, стоит упомянуть о ме­тоде ToString () в составе этого класса. Метод предназначен для преобразованиясодержимого класса в строку. Идея заключается в том, что каждый класс должен пе­рекрывать метод ToString ( ) , чтобы осуществить вывод значащей информации.В первых главах был использован метод GetString ( ) , чтобы не касаться в них во­проса наследования; однако принцип остается тем же. Например, корректный методStudent.

ToString () может выводить имя и идентификатор студента.Большинство ф у н к ц и й — даже встроенных в библиотеку С # — применяют методToString () для вывода объектов. Таким образом, перекрытие ToString () имееточень полезное побочное действие, заключающееся в том, что каждый объект выво­дится в своем собственном формате, безотносительно к тому, кем именно он выведен.Поскольку объект исключения в этом случае на самом деле принадлежит типу Cus­tomException, управление передается CustomException.

ToString ().Метод Message () представляет собой виртуальный метод класса Excep­tion, так что его можно перекрывать, но пользовательское исключение долж­но наследовать его без перекрытия.Метод Message О позволяет объекту MathClass выводить информацию о самомсебе с использованием метода ToString ( ) . Метод MathClass.ToString() воз­вращает строку, в которой содержится описание и значение объекта.Не следует брать на себя больше того, что имеете. Используйте метод объектаToString () для создания строковой версии объекта, не пытаясь влезть в самобъект и получить его значения. В общем случае нужно полагаться на откры­тый интерфейс — открытые члены, — а не на знания о внутреннем устройствеобъекта.

Оно инкапсулировано (по крайней мере должно быть инкапсулирова­но) и может измениться в новых версиях.Вывод демонстрационной программы CustomException имеет следующий вид:Неизвестная фатальная ошибка:Сообщение <Нельзя делить на 0>, Объект (Value = 0)CustomException.MathClassИсключение сгенерировано в Double Inverse()Нажмите <Enter> для завершения программы...416Часть VII. Дополнительные главаИ последнее: сообщение "Неизвестная фатальная ошибка:" поступает отMain ( ) .

Строка "Сообщение <Нельзя делить на 0>, Объект < ~ ~ > " посту­пает от CustomException. Часть Value = 0 предоставляет объект MathClass.Последняя строка, Исключение сгенерировано в Double Inverse ( ) , при­надлежит CustomException. Это нельзя назвать иначе, как исключительным со­трудничеством.Глава 18. Эти исключительные исключения417Глава 19Работа с файлами и библиотеками> Работа с несколькими исходными файлами в одной программеУ Сборки и пространства имен> Библиотеки классов> Чтение и запись файлов данныхоступ к файлам в С# может иметь два различных значения. Наиболее очевид­ное — это хранение и считывание данных с диска. О том, как осуществляетсяввод-вывод данных с диска, вы узнаете из этой главы.

Второе значение связанос тем, каким образом исходный текст С# группируется в исходные файлы.Функции позволяют разделить длинную строку исходного текста на отдельные моду­ли, которые можно легче сопровождать и поддерживать. Классы дают возможностьгруппировать данные и функции для дальнейшего снижения сложности программы —программы достаточно сложны, а людям свойственно ошибаться, так что нужно пользо­ваться любой возможностью упрощения, которая может помочь избежать ошибок.С# обеспечивает еще один уровень группировки: он позволяет сгруппировать подоб­ные классы в отдельную библиотеку.

Помимо написания собственных библиотек, выможете использовать в ваших программах и чужие библиотеки. Такие программы со­держат множество модулей, называемых сборками (assemblies). О них также будет рас­сказано в данной главе. Кроме того, описанное в главе 11, "Классы", управление досту­пом на самом деле несколько сложнее в связи с применением пространств имен — ещеодного способа группирования похожих классов, которое заодно позволяет избежатьдублирования имен в двух частях программы.

В этой главе речь пойдет и о них.Программы в настоящей книге носят исключительно демонстрационный характер. Ка­ждая из них длиной не более нескольких десятков строк и содержит не более пары классов.Программы же промышленного уровня со всеми "рюшечками" и "финтифлюшечками" мо­гут состоять из сотен тысяч строк кода с сотнями классов.Рассмотрим систему продажи авиабилетов. У вас должен быть один интерфейс длязаказа билетов по телефону, д р у г о й — для тех, кто заказывает билет по Интернету,должна быть часть программы, отвечающая за управление базой данных билетов, дабыне продавать один и тот же билет несколько раз, еще одна часть должна следить за стой-мостью билетов с учетом всех налогов и скидок, и так далее и тому подобное...

Такаяпрограмма будет иметь огромный размер.Размещение всех составляющих программу классов в одном исходном файле Pro­gram, с s быстро становится непрактичным. Оно даже более неприемлемо, чем раздеимущества, которого добилась моя бывшая жена, по следующим причинам.У вас возникнут проблемы при поддержке классов. Единый исходный фаочень трудно поддается пониманию. Гораздо проще разбить его на отдельные мо­дули, например ResAgentlnterf асе . cs, GateAgentlnterf асе . cs, Res-jAgent.cs, GateAgent.cs, Fare.cs и Aircraft.cs.Работа над большими программами обычно ведется группами программи­стов.

Два программиста не в состоянии редактировать одновременно один и таже файл — каждому требуется его собственный исходный файл (или файлы).;У вас может быть 20 или 30 программистов, одновременно работающих над од­ним большим проектом. Один файл ограничит работу каждого из 24 программи­стов над проектом всего одним часом в сутки, но стоит разбить программу на 24файла, как становится возможным (хотя и сложным) заставить всех программи­стов трудиться круглые сутки.

Разбейте программу так, чтобы каждый класс со­держался в отдельном файле, и ваша группа заработает как слаженный оркестр.Компиляция больших файлов занимает слишком много времени. В результа­те босс начнет нервничать и выяснять, почему это вы так долго пьете кофе вместотого, чтобы стучать по клавишам?Какой смысл перестраивать всю программу, когда кто-то из программистов изме­нил пару строк кода? Visual Studio 2005 может перекомпилировать только изме­ненный файл и собрать программу из уже готовых объектных файлов.По всем этим причинам программисты на С# предпочитают разделять программу наотдельные исходные файлы .

CS, которые компилируются и собираются вместе в единый выполнимый . Е Х Е - ф а й л .Файл проекта содержит инструкции о том, какие файлы входят в проект и какони должны быть скомбинированы друг с другом.Можно объединить файлы проектов для генерации комбинаций программ, которыезависят от одних и тех же пользовательских классов.

Например, вы можете захотеть объ­единить программу записи с соответствующей программой чтения. Тогда, если изменя­ется одна из них, вторая перестраивается автоматически. Один проект может описыватьпрограмму записи, второй — программу чтения. Набор файлов проектов известен подназванием решение (solution). (Далее в главе будут рассматриваться две такие програм­м ы — FileRead и FileWrite, которые можно было бы объединить в одно решение,но это так и не было сделано.)Программисты на Visual С# используют Visual Studio Solution Explorer для объ­единения нескольких исходных файлов С# в проекты в среде Visual Studio2005.

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

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

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

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