🗊Презентация Механизмы ввода и вывода информации. Понятие сериализации

Нажмите для полного просмотра!
Механизмы ввода и вывода информации. Понятие сериализации, слайд №1Механизмы ввода и вывода информации. Понятие сериализации, слайд №2Механизмы ввода и вывода информации. Понятие сериализации, слайд №3Механизмы ввода и вывода информации. Понятие сериализации, слайд №4Механизмы ввода и вывода информации. Понятие сериализации, слайд №5Механизмы ввода и вывода информации. Понятие сериализации, слайд №6Механизмы ввода и вывода информации. Понятие сериализации, слайд №7Механизмы ввода и вывода информации. Понятие сериализации, слайд №8Механизмы ввода и вывода информации. Понятие сериализации, слайд №9Механизмы ввода и вывода информации. Понятие сериализации, слайд №10Механизмы ввода и вывода информации. Понятие сериализации, слайд №11Механизмы ввода и вывода информации. Понятие сериализации, слайд №12Механизмы ввода и вывода информации. Понятие сериализации, слайд №13Механизмы ввода и вывода информации. Понятие сериализации, слайд №14Механизмы ввода и вывода информации. Понятие сериализации, слайд №15Механизмы ввода и вывода информации. Понятие сериализации, слайд №16Механизмы ввода и вывода информации. Понятие сериализации, слайд №17Механизмы ввода и вывода информации. Понятие сериализации, слайд №18Механизмы ввода и вывода информации. Понятие сериализации, слайд №19Механизмы ввода и вывода информации. Понятие сериализации, слайд №20Механизмы ввода и вывода информации. Понятие сериализации, слайд №21Механизмы ввода и вывода информации. Понятие сериализации, слайд №22Механизмы ввода и вывода информации. Понятие сериализации, слайд №23Механизмы ввода и вывода информации. Понятие сериализации, слайд №24Механизмы ввода и вывода информации. Понятие сериализации, слайд №25Механизмы ввода и вывода информации. Понятие сериализации, слайд №26Механизмы ввода и вывода информации. Понятие сериализации, слайд №27Механизмы ввода и вывода информации. Понятие сериализации, слайд №28Механизмы ввода и вывода информации. Понятие сериализации, слайд №29Механизмы ввода и вывода информации. Понятие сериализации, слайд №30Механизмы ввода и вывода информации. Понятие сериализации, слайд №31Механизмы ввода и вывода информации. Понятие сериализации, слайд №32Механизмы ввода и вывода информации. Понятие сериализации, слайд №33Механизмы ввода и вывода информации. Понятие сериализации, слайд №34Механизмы ввода и вывода информации. Понятие сериализации, слайд №35Механизмы ввода и вывода информации. Понятие сериализации, слайд №36Механизмы ввода и вывода информации. Понятие сериализации, слайд №37Механизмы ввода и вывода информации. Понятие сериализации, слайд №38Механизмы ввода и вывода информации. Понятие сериализации, слайд №39Механизмы ввода и вывода информации. Понятие сериализации, слайд №40Механизмы ввода и вывода информации. Понятие сериализации, слайд №41Механизмы ввода и вывода информации. Понятие сериализации, слайд №42Механизмы ввода и вывода информации. Понятие сериализации, слайд №43Механизмы ввода и вывода информации. Понятие сериализации, слайд №44Механизмы ввода и вывода информации. Понятие сериализации, слайд №45Механизмы ввода и вывода информации. Понятие сериализации, слайд №46Механизмы ввода и вывода информации. Понятие сериализации, слайд №47Механизмы ввода и вывода информации. Понятие сериализации, слайд №48Механизмы ввода и вывода информации. Понятие сериализации, слайд №49Механизмы ввода и вывода информации. Понятие сериализации, слайд №50Механизмы ввода и вывода информации. Понятие сериализации, слайд №51Механизмы ввода и вывода информации. Понятие сериализации, слайд №52Механизмы ввода и вывода информации. Понятие сериализации, слайд №53Механизмы ввода и вывода информации. Понятие сериализации, слайд №54

Содержание

Вы можете ознакомиться и скачать презентацию на тему Механизмы ввода и вывода информации. Понятие сериализации. Доклад-сообщение содержит 54 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Механизмы ввода и вывода информации

Понятие сериализации
Описание слайда:
Механизмы ввода и вывода информации Понятие сериализации

Слайд 2





План лекции
Потоки данных и их виды
Иерархия и разновидности потоков данных
Понятие сериализации
Особенности сериализации и десериализации
Описание слайда:
План лекции Потоки данных и их виды Иерархия и разновидности потоков данных Понятие сериализации Особенности сериализации и десериализации

Слайд 3





Традиционно, проблемы!
Система ввода/вывода 
не должна зависеть 
от платформы!
Применяется модель 
потоков данных:
упорядоченная последовательность данных,
которой соответствует определенный источник (потоки ввода) или получатель (потоки вывода)
Описание слайда:
Традиционно, проблемы! Система ввода/вывода не должна зависеть от платформы! Применяется модель потоков данных: упорядоченная последовательность данных, которой соответствует определенный источник (потоки ввода) или получатель (потоки вывода)

Слайд 4





Разновидности потоков
Описание слайда:
Разновидности потоков

Слайд 5





Структура пакета java.io
Типы общего назначения
Классы разновидностей потоков
Специализированные классы и интерфейсы для ввода и вывода значений простых типов
Классы и интерфейсы работы с файлами
Классы и интерфейсы механизма сериализации
Описание слайда:
Структура пакета java.io Типы общего назначения Классы разновидностей потоков Специализированные классы и интерфейсы для ввода и вывода значений простых типов Классы и интерфейсы работы с файлами Классы и интерфейсы механизма сериализации

Слайд 6





Разновидности потоков
Описание слайда:
Разновидности потоков

Слайд 7





Класс InputStream
abstract int read()
  throws IOException
int read(byte[] b, int off, int len)
  throws IOException
int read(byte[] b)
  throws IOException 
long skip(long n)
  throws IOException 
int available()
  throws IOException 
void close()
  throws IOException
Описание слайда:
Класс InputStream abstract int read() throws IOException int read(byte[] b, int off, int len) throws IOException int read(byte[] b) throws IOException long skip(long n) throws IOException int available() throws IOException void close() throws IOException

Слайд 8





Класс OutputStream
abstract void write(int b)
  throws IOException
void write(byte[] b, int off, int len)
  throws IOException
void write(byte[] b) 
  throws IOException 
void flush() 
  throws IOException 
void close()
  throws IOException
Описание слайда:
Класс OutputStream abstract void write(int b) throws IOException void write(byte[] b, int off, int len) throws IOException void write(byte[] b) throws IOException void flush() throws IOException void close() throws IOException

Слайд 9





Класс Reader
int read()
  throws IOException
abstract int read(char[] b, int off, int len)
  throws IOException
int read(char[] b)
  throws IOException 
long skip(long n)
  throws IOException 
boolean ready()
  throws IOException 
abstract void close()
  throws IOException
Описание слайда:
Класс Reader int read() throws IOException abstract int read(char[] b, int off, int len) throws IOException int read(char[] b) throws IOException long skip(long n) throws IOException boolean ready() throws IOException abstract void close() throws IOException

Слайд 10





Класс Writer
void write(int ch)
  throws IOException
abstract void write(char[] b, int off, int len)
  throws IOException
void write(char[] b) 
  throws IOException
void write(String str, int off, int len)
  throws IOException
void write(String str) 
  throws IOException
abstract void flush() 
  throws IOException 
abstract void close()
  throws IOException
Описание слайда:
Класс Writer void write(int ch) throws IOException abstract void write(char[] b, int off, int len) throws IOException void write(char[] b) throws IOException void write(String str, int off, int len) throws IOException void write(String str) throws IOException abstract void flush() throws IOException abstract void close() throws IOException

Слайд 11





Занятная особенность
Уже знакомые потоки:
		System.out
		System.in
		System.err
Какого они типа?
Байтового!!! (для совместимости 
с версиями Java 1.0 и 1.1)
Описание слайда:
Занятная особенность Уже знакомые потоки: System.out System.in System.err Какого они типа? Байтового!!! (для совместимости с версиями Java 1.0 и 1.1)

Слайд 12





Классы потоков ввода и вывода
Образуют 4 иерархии, в основе которых лежат базовые абстрактные классы
Имя любого дочернего класса в иерархии имеет суффикс, совпадающий с именем корневого класса

По сути делятся на 2 вида:
«Реальные» потоки: 
источник (получатель) 
данных реален
Потоки-обертки: 
источником (получателем) 
данных является 
другой поток
Описание слайда:
Классы потоков ввода и вывода Образуют 4 иерархии, в основе которых лежат базовые абстрактные классы Имя любого дочернего класса в иерархии имеет суффикс, совпадающий с именем корневого класса По сути делятся на 2 вида: «Реальные» потоки: источник (получатель) данных реален Потоки-обертки: источником (получателем) данных является другой поток

Слайд 13





Иерархия байтовых потоков
Описание слайда:
Иерархия байтовых потоков

Слайд 14





Иерархия символьных потоков
Описание слайда:
Иерархия символьных потоков

Слайд 15





Классы-трансляторы
Позволяют читать из байтового как из символьного и записывать в байтовый поток как в символьный (с учетом кодировки)
InputStreamReader
InputStreamReader(InputStream in)
InputStreamReader(InputStream in, String encoding)
  throws UnsupportedEncodingException

OutputStreamWriter
OutputStreamWriter(OutputStream out)
OutputStreamWriter(OutputStream out, String encoding)
  throws UnsupportedEncodingException
Описание слайда:
Классы-трансляторы Позволяют читать из байтового как из символьного и записывать в байтовый поток как в символьный (с учетом кодировки) InputStreamReader InputStreamReader(InputStream in) InputStreamReader(InputStream in, String encoding) throws UnsupportedEncodingException OutputStreamWriter OutputStreamWriter(OutputStream out) OutputStreamWriter(OutputStream out, String encoding) throws UnsupportedEncodingException

Слайд 16





Группа потоков Filter
FilterInputStream, FilterReader
FilterOutputStream, FiltrerWriter
Обертки, позволяют объединять потоки в цепочки для получения сложных потоков, обладающих расширенным набором функций
Обладают дополнительными защищенными конструкторами 
protected FilterInputStream(InputStream in)
В наследниках обычно
переопределяются методы 
чтения/записи с добавлением 
новой функциональности
Описание слайда:
Группа потоков Filter FilterInputStream, FilterReader FilterOutputStream, FiltrerWriter Обертки, позволяют объединять потоки в цепочки для получения сложных потоков, обладающих расширенным набором функций Обладают дополнительными защищенными конструкторами protected FilterInputStream(InputStream in) В наследниках обычно переопределяются методы чтения/записи с добавлением новой функциональности

Слайд 17





Группа потоков Buffered
BufferedInputStream, BufferedReader
BufferedOutputStream, BufferedWriter
Обертки, осуществляют буферизацию данных на программном уровне
Размер буфера можно задать в конструкторе
Символьные версии имеют методы чтения и записи строк
Описание слайда:
Группа потоков Buffered BufferedInputStream, BufferedReader BufferedOutputStream, BufferedWriter Обертки, осуществляют буферизацию данных на программном уровне Размер буфера можно задать в конструкторе Символьные версии имеют методы чтения и записи строк

Слайд 18





Группа потоков Piped
PipedInputStream, PipedReader
PipedOutputStream, PipedWriter
Используются в виде пар ввода-вывода
Данные, переданные в поток вывода, служат источником для потока ввода
Например, реализуют механизм обмена данными между нитями
Поток-пара задается параметром конструктора либо с помощью метода connect()
Описание слайда:
Группа потоков Piped PipedInputStream, PipedReader PipedOutputStream, PipedWriter Используются в виде пар ввода-вывода Данные, переданные в поток вывода, служат источником для потока ввода Например, реализуют механизм обмена данными между нитями Поток-пара задается параметром конструктора либо с помощью метода connect()

Слайд 19





Группа байтовых потоков ByteArray
ByteArrayInputStream, ByteArrayOutputStream
В качестве источника и получателя данных используются массивы байт
В потоке вывода размер буфера может меняться динамически
В потоке вывода существуют методы преобразования:
к массиву байт
byte[] toByteArray()
к строке
String toString()
вывода в другой поток
void writeTo(OutputStream out)
Описание слайда:
Группа байтовых потоков ByteArray ByteArrayInputStream, ByteArrayOutputStream В качестве источника и получателя данных используются массивы байт В потоке вывода размер буфера может меняться динамически В потоке вывода существуют методы преобразования: к массиву байт byte[] toByteArray() к строке String toString() вывода в другой поток void writeTo(OutputStream out)

Слайд 20





Группы символьных потоков CharArray и String
CharArrayReader и CharArrayWriter аналогичны ByteArrayInputStream и ByteArrayOutputStream, но оперируют с массивом символов
StringReader и StringWriter имеют аналогичную функциональность, позволяют считывать символы из строки и записывать данные в строковый буфер
Описание слайда:
Группы символьных потоков CharArray и String CharArrayReader и CharArrayWriter аналогичны ByteArrayInputStream и ByteArrayOutputStream, но оперируют с массивом символов StringReader и StringWriter имеют аналогичную функциональность, позволяют считывать символы из строки и записывать данные в строковый буфер

Слайд 21





Группа потоков Print
Обертки PrintStream и PrintWriter содержат методы, упрощающие задачу вывода данных простых типов в текстовом виде
Методы print() и println() не выбрасывают исключений
System.out и System.err – единственные потоки PrintStream
Описание слайда:
Группа потоков Print Обертки PrintStream и PrintWriter содержат методы, упрощающие задачу вывода данных простых типов в текстовом виде Методы print() и println() не выбрасывают исключений System.out и System.err – единственные потоки PrintStream

Слайд 22





Класс StreamTokenizer
Не является потоком чтения, но позволяет обрабатывать информацию из них
Содержит методы лексической обработки текста
Ряд методов предназначен для настройки работы анализатора
Метод nextToken() производит обработку очередной лексемы, после чего:
Поле ttype содержит константу типа лексемы
Поля nval и sval содержат числовое и строковое представление лексемы
Описание слайда:
Класс StreamTokenizer Не является потоком чтения, но позволяет обрабатывать информацию из них Содержит методы лексической обработки текста Ряд методов предназначен для настройки работы анализатора Метод nextToken() производит обработку очередной лексемы, после чего: Поле ttype содержит константу типа лексемы Поля nval и sval содержат числовое и строковое представление лексемы

Слайд 23





Группа байтовых потоков Data
Интерфейсы DataInput и DataOutput содержат объявления методов ввода и вывода значений простых типов
void writeLong(long v), void writeFloat(float v)
boolean readBoolean(), String readUTF() 
Обертки DataInputStream и DataOutputStream, соответственно, реализуют эти интерфейсы
Класс RandomAccessFile реализует оба интерфейса Data и позволяет работать с файлами в режиме произвольного доступа
Описание слайда:
Группа байтовых потоков Data Интерфейсы DataInput и DataOutput содержат объявления методов ввода и вывода значений простых типов void writeLong(long v), void writeFloat(float v) boolean readBoolean(), String readUTF() Обертки DataInputStream и DataOutputStream, соответственно, реализуют эти интерфейсы Класс RandomAccessFile реализует оба интерфейса Data и позволяет работать с файлами в режиме произвольного доступа

Слайд 24





Класс File
Инкапсулирует платформенно-независимые методы работы с файлами и директориями:
создание
проверка атрибутов
удаление
переименование
Позволяет  создавать временные файлы, удаляемые при завершении работы программы
API класса изучите самостоятельно
Описание слайда:
Класс File Инкапсулирует платформенно-независимые методы работы с файлами и директориями: создание проверка атрибутов удаление переименование Позволяет создавать временные файлы, удаляемые при завершении работы программы API класса изучите самостоятельно

Слайд 25





Группа потоков File
FileInputStream, FileReader
FileOutputStream, FileWriter
Позволяют трактовать файл как поток, предназначенный для ввода и вывода данных
Связаны с исключениями FileNotFoundException и SecurityException
Конструкторы могут получать параметры:
Строку String, задающую имя файла
Объект класса File
Объект FileDescriptor
(возвращается методом getFD() байтовых потоков)
Описание слайда:
Группа потоков File FileInputStream, FileReader FileOutputStream, FileWriter Позволяют трактовать файл как поток, предназначенный для ввода и вывода данных Связаны с исключениями FileNotFoundException и SecurityException Конструкторы могут получать параметры: Строку String, задающую имя файла Объект класса File Объект FileDescriptor (возвращается методом getFD() байтовых потоков)

Слайд 26





Пример записи 
в текстовый файл
Описание слайда:
Пример записи в текстовый файл

Слайд 27





Пример записи 
в байтовый файл
Описание слайда:
Пример записи в байтовый файл

Слайд 28





Пример чтения из
текстового файла и из консоли
Описание слайда:
Пример чтения из текстового файла и из консоли

Слайд 29





Пример чтения
из байтового файла
Описание слайда:
Пример чтения из байтового файла

Слайд 30





Форматированные 
ввод и вывод (Java 5)
java.util.Formatter
Обеспечивает преобразования формата, позволяющие выводить числа, строки, время и даты в практически любом нужном вам формате
java.util.Scanner
Позволяет использовать форматированный ввод и преобразовывать значения к нужным типам
Описание слайда:
Форматированные ввод и вывод (Java 5) java.util.Formatter Обеспечивает преобразования формата, позволяющие выводить числа, строки, время и даты в практически любом нужном вам формате java.util.Scanner Позволяет использовать форматированный ввод и преобразовывать значения к нужным типам

Слайд 31





java.util.Formatter
Конструкторы
Имеет множество конструкторов, позволяющих задать следующие параметры (либо, если они не заданы, использовать значения по умолчанию)
Объект вывода
Appendable a
File file
String fileName
OutputStream os
PrintStream ps
по умолчанию – без автоматического вывода
Кодовая таблица
String charSet
по умолчанию – текущая таблица
Параметры локализации
Locale locale
по умолчанию – текущие параметры
Описание слайда:
java.util.Formatter Конструкторы Имеет множество конструкторов, позволяющих задать следующие параметры (либо, если они не заданы, использовать значения по умолчанию) Объект вывода Appendable a File file String fileName OutputStream os PrintStream ps по умолчанию – без автоматического вывода Кодовая таблица String charSet по умолчанию – текущая таблица Параметры локализации Locale locale по умолчанию – текущие параметры

Слайд 32





java.util.Formatter
Важные методы
Formatter format(String fmtString,
                 Object ... args)
Форматирует указанные аргументы в соответствии со строкой форматирования
Formatter format(Locale loc,
                 String fmtString,
                 Object ... args)
Форматирует указанные аргументы в соответствии со строкой форматирования и указанной локализацией
Описание слайда:
java.util.Formatter Важные методы Formatter format(String fmtString, Object ... args) Форматирует указанные аргументы в соответствии со строкой форматирования Formatter format(Locale loc, String fmtString, Object ... args) Форматирует указанные аргументы в соответствии со строкой форматирования и указанной локализацией

Слайд 33





java.util.Formatter
Важные методы
IOException ioException()
Возвращает объект исключения, генерируемый объектом-приемником, иначе null
Appendable out()
Возвращает ссылку на объект-приемник выходных данных
Locale locale()
Возвращает ссылку на объект локализации
Описание слайда:
java.util.Formatter Важные методы IOException ioException() Возвращает объект исключения, генерируемый объектом-приемником, иначе null Appendable out() Возвращает ссылку на объект-приемник выходных данных Locale locale() Возвращает ссылку на объект локализации

Слайд 34





java.util.Formatter
Важные методы
String toString()
Возвращает объект типа String, содержащий отформатированный вывод
void flush()
Переносит информацию из буфера форматирования
void close()
Закрывает объект форматировщика, освобождает ресурсы
Описание слайда:
java.util.Formatter Важные методы String toString() Возвращает объект типа String, содержащий отформатированный вывод void flush() Переносит информацию из буфера форматирования void close() Закрывает объект форматировщика, освобождает ресурсы

Слайд 35





Строка форматирования
Строка форматирования состоит из:
простых символов
Просто копируются в вывод
спецификаторов формата
Определяют способ отображения аргументов
Спецификатор формата:
знак процента (%)
преобразующий спецификатор формата
Описание слайда:
Строка форматирования Строка форматирования состоит из: простых символов Просто копируются в вывод спецификаторов формата Определяют способ отображения аргументов Спецификатор формата: знак процента (%) преобразующий спецификатор формата

Слайд 36





Преобразующие спецификаторы формата
Описание слайда:
Преобразующие спецификаторы формата

Слайд 37





Возможности форматирования
Порядковый номер аргумента
Позволяет использовать не текущий аргумент, а заданный
Относительный номер
Позволяет несколько раз вывести одно и то же значение без явной нумерации
Описание слайда:
Возможности форматирования Порядковый номер аргумента Позволяет использовать не текущий аргумент, а заданный Относительный номер Позволяет несколько раз вывести одно и то же значение без явной нумерации

Слайд 38





Возможности форматирования
Управление регистром вывода
Сложное форматирование времени и даты
Задание минимальной ширины поля
Описание слайда:
Возможности форматирования Управление регистром вывода Сложное форматирование времени и даты Задание минимальной ширины поля

Слайд 39





Возможности форматирования
Задание точности вывода для вещественных значений
Выравнивание вывода
Разделение групп цифр и т.д.
Описание слайда:
Возможности форматирования Задание точности вывода для вещественных значений Выравнивание вывода Разделение групп цифр и т.д.

Слайд 40





Метод printf()
Использует автоматически создаваемый экземпляр класса Formatter
Объявлен в классах:
 java.io.PrintWriter
 java.io.PrintStream
Имеет такие же параметры, что и метод Formatter.format()
Описание слайда:
Метод printf() Использует автоматически создаваемый экземпляр класса Formatter Объявлен в классах: java.io.PrintWriter java.io.PrintStream Имеет такие же параметры, что и метод Formatter.format()

Слайд 41





Сериализация объектов
Сериализация – преобразование состояния объекта в поток байтов
Десериализация – восстановление состояния объекта из данных потока
Не все объекты могут быть
сериализованы
Класс должен быть 
подготовлен к сериализации
Описание слайда:
Сериализация объектов Сериализация – преобразование состояния объекта в поток байтов Десериализация – восстановление состояния объекта из данных потока Не все объекты могут быть сериализованы Класс должен быть подготовлен к сериализации

Слайд 42





Группа байтовых потоков Object
Класс ObjectOutputStream реализует сериализацию
Класс ObjectInputStream реализует десериализацию
Классы позволяют выводить и вводить графы объектов с сохранением структуры
Результатом десериализации является объект, равнозначный исходному
Описание слайда:
Группа байтовых потоков Object Класс ObjectOutputStream реализует сериализацию Класс ObjectInputStream реализует десериализацию Классы позволяют выводить и вводить графы объектов с сохранением структуры Результатом десериализации является объект, равнозначный исходному

Слайд 43





Пример сериализации в файл
Описание слайда:
Пример сериализации в файл

Слайд 44





Пример десериализации 
из файла
Описание слайда:
Пример десериализации из файла

Слайд 45





Подготовка классов
к сериализации
Должен реализовываться интерфейс-маркер java.io.Serializable
Все сериализуемые поля должны иметь сериализуемый тип
Родительский класс должен иметь конструктор по умолчанию (без параметров) или быть подготовленным к сериализации
Сериализуются поля объекта, не обозначенные как transient или static
Описание слайда:
Подготовка классов к сериализации Должен реализовываться интерфейс-маркер java.io.Serializable Все сериализуемые поля должны иметь сериализуемый тип Родительский класс должен иметь конструктор по умолчанию (без параметров) или быть подготовленным к сериализации Сериализуются поля объекта, не обозначенные как transient или static

Слайд 46





Порядок сериализации и десериализации
В нисходящем порядке по древовидной иерархии типов: от первого сериализуемого класса до частного типа
Объекты, на которые ссылаются поля, сериализуются в порядке обнаружения
Перед десериализацией выполняется загрузка участвующих классов (возможен выброс исключения ClassNotFoundException)
Описание слайда:
Порядок сериализации и десериализации В нисходящем порядке по древовидной иерархии типов: от первого сериализуемого класса до частного типа Объекты, на которые ссылаются поля, сериализуются в порядке обнаружения Перед десериализацией выполняется загрузка участвующих классов (возможен выброс исключения ClassNotFoundException)

Слайд 47





Пример иерархии классов
Описание слайда:
Пример иерархии классов

Слайд 48





Порядок сериализации
Описание слайда:
Порядок сериализации

Слайд 49





Порядок десериализации
Описание слайда:
Порядок десериализации

Слайд 50





Настройка сериализации
Для изменения работы механизма сериализации на уровне вашего класса в самом классе надо описать методы:
реализация сериализации
private void writeObject(ObjectOutputStream out) throws IOException
реализация десериализации
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
Уровень доступа методов позволяет им независимо существовать в различных классах в иерархии наследования
Можно не переписывать чтение/запись полностью, а лишь изменить порядок записи полей и их формат (см. методы ObjectOutputStream.writeFields() и ObjectInputStream.readFields())
Описание слайда:
Настройка сериализации Для изменения работы механизма сериализации на уровне вашего класса в самом классе надо описать методы: реализация сериализации private void writeObject(ObjectOutputStream out) throws IOException реализация десериализации private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException Уровень доступа методов позволяет им независимо существовать в различных классах в иерархии наследования Можно не переписывать чтение/запись полностью, а лишь изменить порядок записи полей и их формат (см. методы ObjectOutputStream.writeFields() и ObjectInputStream.readFields())

Слайд 51





Контроль версий
Каждый класс имеет уникальный идентификатор номера версии – 64 битовое значение long 
По умолчанию значение рассчитывается как функция от кода класса (включая методы)
Несовпадение версий при десериализации объекта выбрасывает исключение InvalidClassException
Проблему можно обойти, явно введя в класс поле
private static final long
      serialVersionUID = ...;
Описание слайда:
Контроль версий Каждый класс имеет уникальный идентификатор номера версии – 64 битовое значение long По умолчанию значение рассчитывается как функция от кода класса (включая методы) Несовпадение версий при десериализации объекта выбрасывает исключение InvalidClassException Проблему можно обойти, явно введя в класс поле private static final long serialVersionUID = ...;

Слайд 52





Интерфейс Externalizable
«Ручная» сериализация:
реализация сериализации
public void writeExternal(ObjectOutputStream out) throws IOException
реализация десериализации
private void readExternal(ObjectInputStream in) throws IOException, ClassNotFoundException
Требует наличия конструктора по умолчанию у класса.
    JVM сначала вызывает конструктор без параметров, и только
    потом на уже созданном объекте вызывает метод readExternal
Выигрыш в производительности при грамотной реализации
Нарушение целостности графа
Описание слайда:
Интерфейс Externalizable «Ручная» сериализация: реализация сериализации public void writeExternal(ObjectOutputStream out) throws IOException реализация десериализации private void readExternal(ObjectInputStream in) throws IOException, ClassNotFoundException Требует наличия конструктора по умолчанию у класса.   JVM сначала вызывает конструктор без параметров, и только потом на уже созданном объекте вызывает метод readExternal Выигрыш в производительности при грамотной реализации Нарушение целостности графа

Слайд 53





Спасибо за внимание!
Описание слайда:
Спасибо за внимание!

Слайд 54





Дополнительные источники
Арнолд, К. Язык программирования Java [Текст] / Кен Арнолд, Джеймс Гослинг, Дэвид Холмс. – М. : Издательский дом «Вильямс», 2001. – 624 с.
Вязовик, Н.А. Программирование на Java. Курс лекций [Текст] / Н.А. Вязовик. – М. : Интернет-университет информационных технологий, 2003. – 592 с.
Хорстманн, К. Java 2. Библиотека профессионала. Том 1. Основы [Текст] / Кей Хорстманн, Гари Корнелл. – М. : Издательский дом «Вильямс», 2010 г. – 816 с.
Эккель, Б. Философия Java [Текст] / Брюс Эккель. – СПб. : Питер, 2011. – 640 с.
JavaSE at a Glance [Электронный ресурс]. – Режим доступа: http://www.oracle.com/technetwork/java/javase/overview/index.html, дата доступа: 21.10.2011.
JavaSE APIs & Documentation [Электронный ресурс]. – Режим доступа: http://www.oracle.com/technetwork/java/javase/documentation/api-jsp-136079.html, дата доступа: 21.10.2011.
Описание слайда:
Дополнительные источники Арнолд, К. Язык программирования Java [Текст] / Кен Арнолд, Джеймс Гослинг, Дэвид Холмс. – М. : Издательский дом «Вильямс», 2001. – 624 с. Вязовик, Н.А. Программирование на Java. Курс лекций [Текст] / Н.А. Вязовик. – М. : Интернет-университет информационных технологий, 2003. – 592 с. Хорстманн, К. Java 2. Библиотека профессионала. Том 1. Основы [Текст] / Кей Хорстманн, Гари Корнелл. – М. : Издательский дом «Вильямс», 2010 г. – 816 с. Эккель, Б. Философия Java [Текст] / Брюс Эккель. – СПб. : Питер, 2011. – 640 с. JavaSE at a Glance [Электронный ресурс]. – Режим доступа: http://www.oracle.com/technetwork/java/javase/overview/index.html, дата доступа: 21.10.2011. JavaSE APIs & Documentation [Электронный ресурс]. – Режим доступа: http://www.oracle.com/technetwork/java/javase/documentation/api-jsp-136079.html, дата доступа: 21.10.2011.



Похожие презентации
Mypresentation.ru
Загрузить презентацию