
Задания Java / Лабораторная работа №3
.docЛабораторная работа №3
Задание на лабораторную работу
В процессе написания тестовых заданий ознакомиться с механизмом систем ввода и вывода данных.
Задание 1
Модифицировать класс Pupils из предыдущей работы, добавив в него новые методы:
- записи информации об ученике в байтовый поток (использовать DataOutputStream)
public static void output Pupil (Pupil v, OutputStream out),
- чтения информации об ученике из байтового потока (использовать DataInputStream)
public static Pupil input Pupil (InputStream in),
- записи информации об ученике в символьный поток (использовать PrintWriter)
public static void write Pupil (Pupil v, Writer out),
- чтения информации об ученике из символьного потока (использовать BufferedReader или StreamTokenizer)
public static Pupil readPupil(Reader in).
В обоих случаях нужно записать фамилию ученика, количество предметов (оценок), а затем список предметов и оценок. При записи строки в байтовый поток использовать метод getBytes() для перевода строки в массив байт. Перед строкой нужно записать её длину.
Проверить возможности методов (в методе main), в качестве реальных потоков используя файловые потоки (FileInputStream, FileOutputStream, FileReader и FileWriter), а также потоки System.in и System.out.
Задание 2
Модифицировать классы Student и Schoolboy таким образом, чтобы они были сериализуемыми.
Продемонстрировать возможности сериализации (в методе main), записав в файл объект, затем считав и сравнив с исходным (по сохраненным значениям). Использовать ObjectOutputStream, ObjectInputStream.
Вопросы
-
Потоки данных. Байтовые потоки. Базовые абстрактные классы байтовых потоков.
-
Символьные потоки. Базовые абстрактные классы символьных потоков.
-
Стандартные потоки.
-
InputStreamReader и OutputStreamWriter.
-
Примеры байтовых и символьных классов потоков.
-
Сериализация объектов. Подготовка классов к сериализации.
-
Порядок сериализации и десериализации. Настройка механизма сериализации.
-
Контроль версий объектов.