Главная » Просмотр файлов » К. Арнольд, Д. Гослинг - Язык программирования Java

К. Арнольд, Д. Гослинг - Язык программирования Java (1160779), страница 6

Файл №1160779 К. Арнольд, Д. Гослинг - Язык программирования Java (К. Арнольд, Д. Гослинг - Язык программирования Java) 6 страницаК. Арнольд, Д. Гослинг - Язык программирования Java (1160779) страница 62019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Воспользуйтесь методами, чтобы скрыть все данные,объявите последние с ключевым словом private, а методы — public. Какие методы должны принадлежать базовому классу Walkman? Какиеметоды добавятся в расширенных классах?1.10.1. Класс ObjectКлассы, для которых не указан расширяемый класс, являются неявным расширением класса Object. Все ссылки на объекты полиморфноотносятся к классу Object, который является базовым классом для всех ссылок, которые могут относиться к объектам любого класса:Object oref = new Pixel();oref = “Some String”;В этом примере объекту oref вполне законно присваиваются ссылки на объекты Pixel и String, невзирая на то что эти классы не имеют междусобой ничего общего — за исключением неявного суперкласса Object.В классе Object также определяется несколько важных методов, рассмотренных в главе 3.1.10.2.

Вызов методов суперклассаЧтобы очистка объектов класса Pixel происходила правильно, мы заново реализовали метод clear. Его работа начинается с того, что с помощьюссылки super вызывается метод clear суперкласса. Ссылка super во многих отношениях напоминает уже упоминавшуюся ранее ссылку this, за темисключением, что super используется для ссылок на члены суперкласса, тогда как this ссылается на члены текущего объекта.Вызов super.clear() обращается к суперклассу для выполнения метода clear точно так же, как он обращался бы к любому объекту суперкласса — внашем случае, класса Point.

После вызова super.clear() следует новый код, который должен присваивать color некоторое разумное начальноезначение. Мы выбрали null — то есть отсутствие ссылки на какой-либо объект.Что бы случилось, если бы мы не вызвали super.clear()? Метод clear класса Pixel присвоил бы полю цвета значение null, но переменные x и y,унаследованные от класса Point, остались бы без изменений. Вероятно, подобная частичная очистка объекта Pixel, при которой упускаютсяунаследованные от Point поля, явилась бы ошибкой в программе.При вызове метода super.method() runtime-система просматривает иерархию классов до первого суперкласса, содержащего method().

Например,если бы метод clear отсутствовал в классе Point, то runtime-система попыталась бы найти такой метод в его суперклассе и (в случае успеха)вызвала бы его.Во всех остальных ссылках при вызове метода используется тип объекта, а не тип ссылки на объект. Приведем пример:Point point = new Pixel();point.clear(); // используется метод clear() класса PixelВ этом примере будет вызван метод clear класса Pixel, несмотря на то что переменная, содержащая объект класса Pixel, объявлена как ссылка наPoint.1.11. ИнтерфейсыИногда бывает необходимо только объявить методы, которые должны поддерживаться объектом, без их конкретной реализации.

До тех порпока поведение объектов удовлетворяет некоторым критериям, подробности реализации методов оказываются несущественными. Например,если вы хотите узнать, входит ли значение в то или иное множество, конкретный способ хранения этих объектов вас не интересует. Методыдолжны одинаково хорошо работать со связным списком, хеш-таблицей или любой другой структурой данных.Java использует так называемый интерфейс — некоторое подобие класса, где методы лишь объявляются, но не определяются. Разработчикинтерфейса решает, какие методы должны поддерживаться в классах, реализующих данный интерфейс, и что эти методы должны делать.Приведем пример интерфейса Lookup:interface Lookup {/** Вернуть значение, ассоциированное с именем, илиnull, если такого значения не окажется */Object find(String name);}В интерфейсе Lookup объявляется всего один метод find, который получает значение (имя) типа String и возвращает значение, ассоциированноес данным именем, или null, если такого значения не найдется.

Для объявленного метода не предоставляется никакой конкретной реализации —она полностью возлагается на класс, в котором реализуется данный интерфейс. Во фрагменте программы, где используются ссылки на объектыLookup (объекты, реализующие интерфейс Lookup), можно вызвать метод find и получить ожидаемый результат независимо от конкретного типаобъекта:void processValues(String[] names, Lookup table) {for (int i = 0; i < names.length; i++) {Object value = table.find(names[i]);if (value != null)processValue(names[i], value);}}Класс может реализовать произвольное количество интерфейсов. В следующем примере приводится реализация интерфейса Lookup дляпростого массива (мы не стали реализовывать методы для добавления или удаления элементов):class SimpleLookup implements Lookup {private String[] Names;private Object[] Values;}public Object find(String name) {for (int i = 0; i < Names.length; i++) {if (Names[i].equals(name))return Values[i];}return null;}// . .

.Интерфейсы, подобно классам, могут расширяться посредством ключевого слова extends. Интерфейс может расширить один или несколькодругих интерфейсов, добавить к ним новые константы и методы, которые должны быть реализованы в классе, реализующем расширенныйинтерфейс.Супертипами класса называются расширяемый им класс и интерфейсы, которые он реализует, включая все супертипы этих классов иинтерфейсов. Следовательно, тип объекта — это не только класс, но и все его супертипы вместе с интерфейсами.

Объект может полиморфноиспользоваться в суперклассе и во всех суперинтерфейсах, включая любой их супертип.Упражнение 1.13Напишите расширенный интерфейс Lookup с добавлением методов add и remove. Реализуйте его в новом классе.1.12. ИсключенияЧто делать, если в программе произошла ошибка? Во многих языках о ней свидетельствуют необычные значения кодов возврата — например, –1. Программисты нередко не проверяют свои программы на наличие исключительных состояний, так как они полагают, что ошибок “быть недолжно”. С другой стороны, поиск опасных мест и восстановление нормальной работы даже в прямолинейно построенной программе можетзатемнить ее логику до такой степени, что все происходящее в ней станет совершенно непонятным.

Такая простейшая задача, как считываниефайла в память, требует около семи строк в программе. Обработка ошибок и вывод сообщений о них увеличивает код до 40 строк. Сутьпрограммы теряется в проверках как иголка в стоге сена — это, конечно же, нежелательно.При обработке ошибок в Java используются проверяемые исключения (checked exceptions).

Исключение заставляет программиста предпринятькакие-то действия при возникновении ошибки. Исключительные ситуации в программе обнаруживаются при их возникновении, а не позже,когда необработанная ошибка приведет к множеству проблем.Метод, в котором обнаруживается ошибка, возбуждает (throw) исключение. Оно может быть перехвачено (catch) кодом, находящимся дальше встеке вызова — благодаря этому первый фрагмент может обработать исключение и продолжить выполнение программы. Неперехваченныеисключения передаются стандартному обработчику Java, который может сообщить о возникновении исключительной ситуации и завершитьработу потока в программе.Исключения в Java являются объектами — у них имеется тип, методы и данные. Представление исключения в виде объекта оказываетсяполезным, поскольку объект-исключение может обладать данными или методами (или и тем и другим), которые позволят справиться сконкретной ситуацией.

Объекты-исключения обычно порождаются от класса Exception, в котором содержится строковое поле для описанияошибки. Java требует, чтобы все исключения были расширениями класса с именем Throwable.Основная парадигма работы с исключениями Java заключена в последовательности try-catch-finally. Сначала программа пытается (try) что-тосделать; если при этом возникает исключение, она его перехватывает (catch); и наконец (finally), программа предпринимает некоторые итоговыедействия в стандартном коде или в коде обработчика исключения — в зависимости от того, что произошло.Ниже приводится метод averageOf, который возвращает среднее арифметическое двух элементов массива.

Если какой-либо из индексов выходитза пределы массива, программа запускает исключение, в котором сообщает об ошибке. Прежде всего следует определить новый тип исключенияIllegal AverageException для вывода сообщения об ошибке. Затем необходимо указать, что метод averageOf возбуждает это исключение, припомощи ключевого слова throws:class IllegalAverageException extends Exception {}class MyUtilities {public double averageOf(double[] vals, int i, int j)throws IllegalAverageException{try {return (vals[i] + vals[j]) / 2;} catch (IndexOutOfBounds e) {throw new IllegalAverageException();}}}Если при определении среднего арифметического оба индекса i и j оказываются в пределах границ массива, вычисление происходит успешно иметод возвращает полученное значение.

Однако, если хотя бы один из индексов выходит за границы массива, возбуждается исключениеIndexOutOfBounds и выполняется соответствующий оператор catch. Он создает и возбуждает новое исключение IllegalAverageException — всущности, общее исключение нарушения границ массива превращается в конкретное исключение, более точно описывающее истиннуюпричину.

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

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

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

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