Новосибирск, 2004(С) Всеволод Рылов, все права защищены 1

  • Размер: 657.5 Кб
  • Количество слайдов: 40

Описание презентации Новосибирск, 2004(С) Всеволод Рылов, все права защищены 1 по слайдам

Новосибирск, 2004(С) Всеволод Рылов, все права защищены 1 Основы программирования на языке Java Стандартная библиотека Java:Новосибирск, 2004(С) Всеволод Рылов, все права защищены 1 Основы программирования на языке Java Стандартная библиотека Java: java. util, java. io, java. net

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 2 Новосибирск, 2004 (С) Всеволод Рылов, все права защищены

Новосибирск, 2004(С) Всеволод Рылов, все права защищены 3 Enumeration, Comparator Enumeration – объекты классов, реализующих данныйНовосибирск, 2004(С) Всеволод Рылов, все права защищены 3 Enumeration, Comparator Enumeration – объекты классов, реализующих данный интерфейс, используются для предоставления однопроходного последовательного доступа к серии объектов: Hashtable t = …; for(Enumeration e = t. keys(); e. has. More. Elements(); ) { String s = e. next. Element(); } Comparator – классы, реализующие данный интерфейс используются для обеспечения сравнения произвольных элементов. Используются при сортировке и организации упорядоченных контейнеров: Comparator c = new Comparator (){…}; My. Class array[] = …; Arrays. sort(array, c);

Паттерн Model-View (Observer) Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 4 Паттерн Model-View (Observer) Новосибирск, 2004 (С) Всеволод Рылов, все права защищены

Коллекция объектов (контейнер) Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 5 Коллекция объектов (контейнер) Новосибирск, 2004 (С) Всеволод Рылов, все права защищены

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 6 Использование итераторов CollectionString col = …;Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 6 Использование итераторов Collection col = …; for (Iterator i = col. iterator(); i. has. Next(); ) { String s = i. next(); } for (String s : col ) { s; } // Альтернатива Concurrent. Modification. Exception – возникает когда коллекция изменена во время итерирования другим потоком Illegal. State. Exception – возникает при попытке удаления элемента с помощью вызова remove(), когда еще не был вызван первый метод next() , или итератор указывает на конец коллекции ( has. Next() возвращает false ) No. Such. Element. Exception – возникает при попытке вызова next() когда has. Next() возвращает flase Unsupported. Operation. Exception – возникает при вызове метода который не поддерживается конкретной реализацией коллекции

Множества Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 7 Множества Новосибирск, 2004 (С) Всеволод Рылов, все права защищены

   Упорядоченные множества Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 8 Упорядоченные множества Новосибирск, 2004 (С) Всеволод Рылов, все права защищены

Очереди Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 9 Очереди Новосибирск, 2004 (С) Всеволод Рылов, все права защищены

Списки Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 10 Списки Новосибирск, 2004 (С) Всеволод Рылов, все права защищены

Реализации списка Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 11 Реализации списка Новосибирск, 2004 (С) Всеволод Рылов, все права защищены

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 12 Пример простой реализации стека import java.Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 12 Пример простой реализации стека import java. util. *; public class Stack { private Linked. List content; public Stack() { content = new Linked. List(); } public void push(T obj) { content. add. First(obj); } public T pop() throws No. Such. Element. Exception { return content. remove. First(); } public boolean has. More. Elements() { if (content. size() > 0) return true; else return false; } public static void main(String args[]) throws No. Such. Element. Exception { Stack s = new Stack(); for (String o : args) { s. push(o); } while(s. has. More. Elements()) { System. out. println(s. pop()); } } }

Ассоциативные контейнеры Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 13 Ассоциативные контейнеры Новосибирск, 2004 (С) Всеволод Рылов, все права защищены

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 14 Новосибирск, 2004 (С) Всеволод Рылов, все права защищены

Вектор Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 15 Вектор Новосибирск, 2004 (С) Всеволод Рылов, все права защищены

Хеш-таблица Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 16 Хеш-таблица Новосибирск, 2004 (С) Всеволод Рылов, все права защищены

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 17 Класс-утилита Collections Служит для поддержки классовНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 17 Класс-утилита Collections Служит для поддержки классов контейнеров и осуществления основных манипуляций с содержимым: sort(List), sort(List, Comparator) binary. Search(List, Object), binary. Search(List, Object, Comparator) reverse(List) shuffle(List), shuffle(List, Random) fill(List, Object) copy(List, List) min(Collection), min(Collection, Comparator) max(Collection), max(Collection, Comoarator) Представляет коллекцию как Enumeration (метод enumeration(Collection) ) Создает не модифицируемый список, содержащий несколько копий объекта: n. Copies(int, Object): List Содержит специальные статические поля: EMPTY_SET , EMPTY_LIST , EMPTY_MAP

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 18 Класс-утилита Collections (продолж. ) Предоставляет оберткиНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 18 Класс-утилита Collections (продолж. ) Предоставляет обертки для защиты контейнеров от модификации или для обеспечения синхронизированного доступа: unmodifiable. XXX(arg: XXX): XXX synchronized. XXX(arg: XXX): XXX — это Collection , Set , Sorted. Set , List , Map , Sorted. Map Предоставляет не модифицируемые обертки-одиночки, содержащие только один элемент (или пару ключ-значение): singleton(Object): Set singleton. List(Object): List singleton. Map(Object, Object): Map

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 19 Работа со временем. Time. Zone DateНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 19 Работа со временем. Time. Zone Date Calendar Gregorian. Calendar

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 20 Таймер и планируемые задания. Timer. Task()Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 20 Таймер и планируемые задания. Timer. Task() run() : void cancel() : boolean scheduled. Execution. Time() : long Timer() Timer(arg 0 : boolean) schedule(arg 0 : Timer. Task, arg 1 : long) : void schedule(arg 0 : Timer. Task, arg 1 : Date) : void schedule(arg 0 : Timer. Task, arg 1 : long, arg 2 : long) : void schedule(arg 0 : Timer. Task, arg 1 : Date, arg 2 : long) : void schedule. At. Fixed. Rate(arg 0 : Timer. Task, arg 1 : long, arg 2 : long) : void schedule. At. Fixed. Rate(arg 0 : Timer. Task, arg 1 : Date, arg 2 : long) : void cancel() : void Runnable run() (from lang) <>

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 21 Интернационализация. Locale(arg 0 : String, argНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 21 Интернационализация. Locale(arg 0 : String, arg 1 : String, arg 2 : String) Locale(arg 0 : String, arg 1 : String) get. Default() : Locale set. Default(arg 0 : Locale) : void get. Available. Locales() : Locale[] get. ISOCountries() : String[] get. ISOLanguages() : String[] get. Language() : String get. Country() : String get. Variant() : String to. String() : String get. ISO 3 Language() : String get. ISO 3 Country() : String get. Display. Language(arg 0 : Locale) : String get. Display. Country(arg 0 : Locale) : String get. Display. Variant(arg 0 : Locale) : String get. Display. Name(arg 0 : Locale) : String clone() : Object hash. Code() : int equals(arg 0 : Object) : boolean

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 22 Подсистема ввода-вывода java. io Serializ ableInterfaceНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 22 Подсистема ввода-вывода java. io Serializ able<> Object. Output<> Object. Input<> Externaliz able <>Data. Output<> Data. Input<> Input. Stream Output. Stream Reader Writer File. IOException

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 23 Средства работы с файлами File separator.Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 23 Средства работы с файлами File separator. Char : char path. Separator. Char : char separator : String path. Separator : String File. Descriptor in : File. Descriptor out : File. Descriptor err : File. Descriptor() valid() sync() File. Filter accept(arg 0 : File) : boolean <> Filename. Filter accept(arg 0 : File, arg 1 : String) : boolean <>

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 24 Потоки ввода-вывода Потоки ввода вывода бываютНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 24 Потоки ввода-вывода Потоки ввода вывода бывают двух типов: узловые потоки (node streams) – предоставляют ввод вывод на уровне потоков байт фильтрующие потоки (filter streams) – предоставляют обертки вокруг низкоуровневых потоков для обеспечения расширенной функциональности Input. Stream() read() : int read(arg 0 : byte[], arg 1 : int, arg 2 : int) : int skip(arg 0 : long) : long available() : int close() : void mark(arg 0 : int) : void reset() : void mark. Supported() : boolean Output. Stream() write(arg 0 : int) : void write(arg 0 : byte[], arg 1 : int, arg 2 : int) : void flush() : void close() : void

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 25 Узловые потоки работают непосредственно с подлежащимиНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 25 Узловые потоки работают непосредственно с подлежащими источниками (приемниками) данных на уровне байт. Источниками(приемниками) могут быть: файлы на файловой системе – File. Input. Stream, File. Output. Stream массивы байт в памяти – Byte. Array. Input. Stream, Byte. Array. Output. Stream каналы (pipes) — Piped. Input. Stream, Piped. Output. Stream строки – String. Buffer. Input. Stream (deprecated) прочие источники – сокеты и т. д: something. get. Input. Stream(), something. get. Output. Stream()

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 26 Пример – копирование файлов import java.Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 26 Пример – копирование файлов import java. io. *; public class File. Copy { public static void main(String args[]) { Input. Stream in = null; Output. Stream out = null; try { in = new File. Input. Stream(args[0]); out = new File. Output. Stream(args[1]); } catch (Exception e) { System. out. println(«Неправильные аргументы»); if (in!=null) try {in. close(); } catch(IOException ix 2){} return; } byte buf[] = new byte[1024]; //Буфер для хранения промежуточного блока int read; //Переменная для хранения количества прочитанных байт try { while ( (read = in. read(buf)) >= 0) //При достижении конца вернет <0 out. write(buf, 0, read); //Записываем ровно столько сколько удалось прочитать } catch (IOException ioex) { System. out. println(“Ошибка ввода/вывода: ”+ioex. get. Localized. Message()); } finally { try {in. close(); } catch(IOException ix 2){} try {out. close(); } catch (IOException ix 3) {} }

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 27 Фильтрующие потоки предоставляют дополнительную функциональность наНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 27 Фильтрующие потоки предоставляют дополнительную функциональность на основе других потоков абстрактные – Filter. Input. Stream, Filter. Output. Stream буферизация – Buffered. Input. Stream, Buffered. Output. Stream форматированный ввод-вывод данных – Data. Input. Stream, Data. Output. Stream сериализация объектов – Object. Input. Stream, Object. Output. Stream опережающее чтение – Pushback. Input. Stream объединение потоков – Sequence. Input. Stream печатный поток вывода – Print. Stream построчное чтение – Line. Number. Input. Stream (deprecated)

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 28 Произвольный доступ к файлу Random. Access.Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 28 Произвольный доступ к файлу Random. Access. File используется для осуществления произвольного доступа к содержимому файла: обеспечивает форматированный ввод-вывод данных (реализует интерфейсы Data. Input и Data. Output ) void seek(long) — позиционирование в файле long get. File. Pointer() — текущая позиция курсора

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 29 Символьные потоки (readers & writers) ВНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 29 Символьные потоки (readers & writers) В отличие от байтовых потоков, работают на уровне символов, что позволяет корректно работать с различными кодировками В качестве мостов между байтовыми и символьными потоками используются классы Input. Stream. Reader и Output. Stream. Writer lock : Object Writer() Writer(arg 0 : Object) write(arg 0 : int) : void write(arg 0 : char[], arg 1 : int, arg 2 : int) : void write(arg 0 : String, arg 1 : int, arg 2 : int) : void flush() : void close() : void Reader lock : Object Reader() Reader(arg 0 : Object) read() : int read(arg 0 : char[], arg 1 : int, arg 2 : int) : int skip(arg 0 : long) : long ready() : boolean mark. Supported() : boolean mark(arg 0 : int) : void reset() : void close() : void

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 30 Символьные потоки Узловые символьные потоки: Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 30 Символьные потоки Узловые символьные потоки: файловые – File. Reader, File. Writer на основе массивов символов – Char. Array. Reader, Char. Array. Writer канальные – Piped. Reader, Piped. Writer строковые – String. Reader, String. Writer Фильтрующие символьные потоки: абстрактные – Filter. Reader , Filter. Writer буферизирующие – Buffered. Reader, Buffered. Writer переходные – Input. Stream. Reader, Output. Stream. Writer опережающее чтение – Pushback. Reader по строчное чтение – Line. Number. Reader печатный поток вывода – Print. Writer

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 31 Stream. Tokenizer class Stream. Tokeniz erНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 31 Stream. Tokenizer class Stream. Tokeniz er ttype : int TT_EOF : int = -1 TT_EOL : int = 10 TT_NUMBER : int = -2 TT_WORD : int = -3 nval : double sval : String Stream. Tokeniz er(arg 0 : Input. Stream) Stream. Tokeniz er(arg 0 : Reader) reset. Syntax() : void word. Chars(arg 0 : int, arg 1 : int) : void whitespace. Chars(arg 0 : int, arg 1 : int) : void ordinary. Char(arg 0 : int) : void comment. Char(arg 0 : int) : void quote. Char(arg 0 : int) : void parse. Numbers() : void eol. Is. Significant(arg 0 : boolean) : void slash. Star. Comments(arg 0 : boolean) : void slash. Slash. Comments(arg 0 : boolean) : void lower. Case. Mode(arg 0 : boolean) : void next. Token() : int push. Back() : void lineno() : int to. String() : String

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 32 Сериализация объектов Средства сериализации и десериализацииНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 32 Сериализация объектов Средства сериализации и десериализации объектов пакета java. io реализуют поддержку принципа сохраняемости ООП Сериализация используется для сохранения иерархий объектов для передачи в другую виртуальную машину, либо для последующего восстановления в другом сеансе работы системы Особенности сериализации: версионность классов сериализуемых объектов сохранение иерархий кеширование и переиспользование ссылок на уже сериализованные объекты средства управления процессом сериализации (десериализации) объектов

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 33 Obje ct. Input re ad. ObjeНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 33 Obje ct. Input re ad. Obje ct() : Obje ct re ad() : int re ad(arg 0 : byte [], arg 1 : int, arg 2 : int) : int skip(arg 0 : long) : long av ailable () : int close () : v oid<> Obje ct. In put. Stre am Obje ct. Output write Obje ct(arg 0 : Obje ct) : v oid write (arg 0 : int) : v oid write (arg 0 : byte [], arg 1 : int, arg 2 : int) : v oid flush() : v oid close () : v oid <> Obje ct. Output. Stre am Exte rnalizable write Exte rnal(arg 0 : Obje ct. Output) : v oid re ad. Exte rnal(arg 0 : Obje ct. Input) : v oid <> Se rializable<> Obje ct. Stre am. Class Obje ct. Stre am. Constants <> Obje ct. Stre am. Fie ld Obje ct. Input. Validation v alidate Obje ct() <>

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 34 Исключения при сериализации Inv alid. Class.Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 34 Исключения при сериализации Inv alid. Class. Exce ption Inv alid. Obje ct. Exce ption Ob je ct. Stre am. Exce ption Not. Se rializable Exce ption. Not. Activ e Exce ption Stre am. Corrupte d. Exce ption Write Aborte d. Exce ption de tail : Exce ption Optional. Data. Exce ption

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 35 Общие правила Классы, объекты которых подлежатНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 35 Общие правила Классы, объекты которых подлежат сериализации должны реализовывать маркерный интерфейс java. io. Serializable По умолчанию подлежат сохранению все поля объектов не объявленные transient. Статические поля не сеариализуются Для сериализации и десериализации используются фильтрующие потоки Object. Output. Stream и Object. Input. Stream Сериализуемые поля класса реализующего интерфейс Serializable должны быть примитивными типами либо типами, реализующими интерфейс Serializable Если класс имеет своим суперклассом класс, не реализующий интерфейс Serializable , то у данного суперкласса должен быть доступен конструктор с пустым списком аргументов Сериалиазации внутренних или анонимных классов следует категорически избегать

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 36 Управление сериализацией объекта Для явного определенияНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 36 Управление сериализацией объекта Для явного определения списка сериализуемых полей нужно в классе объявить поле private static final Object. Stream. Field[] serial. Persistent. Fields = {…}; Для управления процессом сериализации/десериализации нужно в классе объявить методы: private void write. Object(java. io. Object. Output. Stream out) throws IOException {…} private void read. Object(java. io. Object. Input. Stream in) throws IOException, Class. Not. Found. Exception {…} Для управления замещением объкта при сериализации/десериализации нужно определить методы: Object write. Replace() throws Object. Stream. Exception {…} Object read. Resolve() throws Object. Stream. Exception {…} Для явного задания номера версии нужно определить поле static final long serial. Version. UID = …;

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 37 Интерфейс java. io. Externalizable  ПозволяетНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 37 Интерфейс java. io. Externalizable Позволяет полностью управлять форматом записи данных класса (автоматически сохраняется только информация об классе и объекте) Для сохранения состояния нужно реализовать метод public void write. External(Object. Output out) throws IOException Для восстановления состояния нужно реализовать метод public void read. External(Object. Input in) throws IOException, java. lang. Class. Not. Found. Exception Класс реализующий интерфейс Externalizable должен иметь public конструктор с пустым списком аргументов

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 38 Версионность Изменения, ведущие к несовместимости версийНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 38 Версионность Изменения, ведущие к несовместимости версий классов: Удаление полей не объявленных transient Изменение позиции класса в иерархии классов Изменение факта наличия/отсутствия модификаторов static и transient у поля Изменение типа у поля примитивного (встроенного) типа Изменение реализации методов write. Object() и read. Object() на предмет использования методов default. Write. Object() и default. Read. Object() классов Object. Output. Stream и Object. Input. Stream соответственно Изменение класса с Serializable на Externalizable и наоборот Добавление методов write. Replace() или read. Resolve() Изменение факта наследования классом интерфейсов Serializable или Externalizable

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 39 Работа с сетью Для работы сНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 39 Работа с сетью Для работы с сетью используется пакет java. net, предоставляющий средства: адресации в Internet ( Inet. Address , + средства java 1. 4: Inet 4 Address , Inet 6 Address , Inet. Socket. Address, Socket. Address ) работы с протоколом TCP ( Socket, Server. Socket, Socket. Options ) работы с протоколом UDP ( Datagram. Socket, Datagram. Packet, Multicast. Socket ) работы с URL и поддержки HTTP ( URL, URLConnection, Http. URLConnection, Jar. URLConnection, URLDecoder, URLEncoder, Content. Handler, URLStream. Handler ) авторизации в Internet ( Authenticator, Password. Authentication ) динамической загрузки классов из сети ( URLClass. Loader )

Новосибирск,  2004 (С) Всеволод Рылов, все права защищены 40 Исключения пакета java. net Bind. ExceНовосибирск, 2004 (С) Всеволод Рылов, все права защищены 40 Исключения пакета java. net Bind. Exce ption Conne ct. Exce ption. M alforme d. URLExce ptio n No. Route To. Host. Exce ption Protocol. Exce ption. Socke t. Exce ption Unkn own. Host. Exce ption. Unknown. Se rv ice Exce ption IOExce ption (from io)