Java: интерфейсы, наследование, обработка исключительных ситуаций Вашенков Олег Евгеньевич.

Презентация:



Advertisements
Похожие презентации
Исключения в Java. Исключения – это механизм взаимодействия между кодом, приведшим к ошибке, и кодом, обрабатывающим ошибку Исключение выбрасывается (throw),
Advertisements

Обработка исключительных ситуаций. Синтаксис try{ операторы0; } catch (ТипИсключения1 переменная1){ операторы1; } catch (ТипИсключения2 переменная2){
Часть 1. Основы ООП Исключения.. Структурный подход Неисправимые ошибки – вывести информацию и умереть. Исправимые ошибки – уведомить вызывающую.
1 Обработка исключений в Java Одно из важнейших преимуществ Java – разработанный на уровне языка механизм обработки исключений. Исключение в Java - это.
Test 6 Вопрос 1. Как можно уничтожить объект в Java? a)присвоить null всем ссылкам на объект b)вызвать Runtime.getRuntime().gc() c)вызвать метод finalize()
Saint Petersburg, 2011 Java Lecture #06 Exceptions.
Обработка исключительных ситуаций Андрей Дмитриев 2008.
Исключительные ситуации. Схема обработки исключений Try { //охраняемый блок trow (new MyException();) } catch(MyExeption e) { … } catch(Exeption e){ …
Кафедра ОСУ, Java 2004 Обработка исключений В Java обработка исключительных ситуаций (exception handling) происходит следующим образом: Либо.
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Лекция 2 Наследование Наследование в Java имеет тот же смысл, что и в С++. Однако наследование в Java осуществляется при помощи ключевого слова extends.
Обработка исключений Основы метапрограммированияОбработка исключений Основы метапрограммирования.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Обработка исключений в C# Единая техника обнаружения ошибок времени выполнения и передачи информации о них.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Высокоуровневые методы информатики и программирования Лекция 14 Интерфейсы.
Изучение динамического определения типов. Класс Class. Динамическая загрузка и инстанцирование классов. В Java вся информация о классе хранится в специальном.
Наследование Полиморфизм ВЫЗОВ КОНСТРУКТОРОВ И ДЕСТРУКТОРОВ ПРИ НАСЛЕДОВАНИИ.
Коллекции: алгоритмы, генерики. Приведение типов Предположения о типах объектов: void innerMethod( Object o ){ //Ошибка времени выполнения int val = (Integer)o;
Транксрипт:

Java: интерфейсы, наследование, обработка исключительных ситуаций Вашенков Олег Евгеньевич

Интерфейсы Содержат только объявления методов: public interface Instrument{ public void play(); public String what(); public void adjust(); }

Реализация интерфейсов

Наследование Файл: Instrument.java public interface Instrument{ … } Файл: Wind.java public class Wind implements Instrument{ public void play(){ System.out.println( Wind.play() ); } public String what(){ return Wind; } public void adjust(){} }

Обращение к классу Непосредственное обращение: Wind w = new Wind(); w.play(); Обращение по интерфейсу: Instrument inst = new Wind(); Inst.play(); //Вывод: Wind.play() Ошибка: Wind w = new Instrument(); 1)Нельзя создавать экземпляр интерфейса 2)Нельзя инициировать ссылку экземпляром класса, находящегося выше по иерархии

Исключительные ситуации Исключения – экземпляры классов, реализующих интерфейс java.lang.Throwable или наследованных от класса java.lang.Exception Источник исключения: void testException() throws Exception{ Object o; if( o == null ) throw new NullPointerException(); } Обработчик исключения: try{ testException(); }catch( Exception exc ){ exc.printStackTrace(); }

Исключительные ситуации Собственные типы исключительных ситуаций public class CustomException extends Exception{ Object source; public CustomException( Object source ){ this.source = source; } public String getMessage(){ return Exception at + source + processing.; }

Источники исключений Деление на ноль: int a = 1, b = 0; int c = a / b; Выполнение будет прервано с исключением java.lang.ArithmeticException Обращение к неинициализированному объекту: Object o; o.equals(true); Выполнение будет прервано с исключением java.lang.NullPointerException

Явные источники исключений public void method( String arg ) throws Exception{ if( arg == null ) throws new NullPointerException(); else if( arg.length() != 10 ) throws new IllegalArgumentException( Argument is too small ); }

Обработка исключений Блок try/catch/finally FileInputStream fis = null; try{ fis = new FileInputStream( c:\\text.txt ); fis.read( buffer ); }catch( Exception exc ){ exc.printStackTrace(); }finally{ //Если is == null, будет вызвано исключение NullPointerException //которое должно быть обработано в этом же методе или выше is.close(); }

Обработка исключений Объявление ключевого слова throws public void doAction() throws Exception{ FileInputStream fis = null; try{ fis = new FileInputStream( c:\\text.txt ); … }finally{ try{ is.close(); }catch( Exception exc ){} } Обработкой ошибки займется метод, вызвавший doAction() или выше по стеку вызовов

Структурированная обработка try{ doSomeAction( arg ); }catch( NullPointerException exc ){ System.out.println( exc ); }catch( IllegalArgumentException exc ){ System.out.println( exc ); }catch( ConnectException exc ){ System.out.println( exc ); }finally{ releaseResources(); } Таким образом, возможна реализация своего набора исключений, инкапсулирующего проблемно-ориентированную информацию об исключениях

Задание Реализовать иерархию классов геометрических примитивов с единым интерфейсом Shape. Иерархия должна описывать объекты: круг, прямоугольник, квадрат, равносторонний треугольник. Классы содержат поля с параметрами фигур: Круг: радиус; Прямоугольник: длины сторон; Квадрат: длина одной стороны; Треугольник: длина основания и высота. Инициализацию предлагается сделать в конструкторе каждого класса. Интерфейс Shape должен содержать один метод: float getArea(); Возвращающий площадь фигуры. Метод требуется реализовать в подклассах.

Диаграмма классов Диаграмма классов: Демонстрация работы: создать класс Main со статическим методом main(). В методе реализовать заполнение массива из 100 примитивов поочередно (круг, прямоугольник, треугольник, квадрат). Каждый пятый элемент пропускать. После заполнения массива, реализовать вывод на консоль площади Каждого примитива в массиве. Реализовать обработку исключительных ситуаций.