606.30K
Category: programmingprogramming

Java. Ввод и вывод данных (глава 9.1)

1.

2.

Глава 9.1
Ввод и вывод данных

3.

Ввод и вывод данных
• Ввод/вывод может происходить из разных
источников (Консоль, Файл, Интернет)
• В Java мы рассмотрим основные возможность
ввода/вывода
• Вообще в Java есть интерфейсы, которые
абстрагируют ввод и вывод. То есть мы можем
читать/писать данные, а откуда они приходят –
инкапсулированно.

4.

Ввод и вывод данных

5.

Ввод и вывод данных
Когда IS вернет 0 или
меньше, значит
данных в потоке нет
Если close() выбросит
эксепшен, или он
выбросится где-то раньше,
до close(), ресурс не
закроется

6.

Ввод и вывод данных
• Вспомним паттерн «декоратор», который позволял
оборачивать объекты друг в друга, для добавления
новой функциональности
• InputStreams в java основаны на этом паттерне

7.

Closable и Autoclosable
• Closable говорит о том, что ресурс «закрываемый»
• Autoclosable говорит о том, что для закрытия можно
использовать конструкцию try with resource (новых
методов не содержит)

8.

Closable и Autoclosable
• В старые добрые времена закрывать ресурсы нужно
было ручным вызовом close()
• К счастью, это сейчас не актуально, поэтому мы
будем использовать сразу конструкцию try with
resource

9.

Try with resource
Закроется
автоматически в
любом случае

10.

Читаем и пишем
Reader позволяет
читать char

11.

Класс Scanner
• Iterable and Closable
• Позволяет читать конкретные типы, например строки

12.

Класс Scanner

13.

Вопросы и ответы

14.

Глава 9.2
Перечисляемые типы

15.

Enums
• Иногда в Java нужно создать свой тип данных,
который имеет ограниченное количество значений
• Для этого в Java используются ENUMS

16.

Enums

17.

Enums

18.

Вопросы и ответы

19.

Глава 9.3
Разделение ответственности
классов (прототип идеи SOLID и
MVC)

20.

Разделение ответственностей для
классов
• Каждый класс должен быть Single-Responsible, то есть
отвечать за что то одно
• Такой подход позволяет лучше переиспользовать код
• Например, класс, реализующий логику поиска каких
ни будь данных в файле/любом другом месте, лучше
отделять от класса, реализующего консольный
пользовательский интерфейс
• Тогда можно сделать несколько интерфейсов для
одной и той же логики

21.

Глава 9.4
Практический пример.
Интерфейсные классы и классы с
логикой

22.

Чего хотим
• Пусть есть файл с номерами телефонов
• Хотим загружать его в память коллекцию
• Добавлять и удалять телефоны из этой коллекции
• Сохранять файл

23.

Как принято делить классы
• Классы, ответственные только за загрузку/сохранение
данных (Repository)
• Классы с бизнес логикой (Services)
• Интерфейсные классы (с которыми взаимодейтсвует
юзер) (UI)

24.

Как принято делить классы

25.

Порассуждаем

26.

Вопросы и ответы
English     Русский Rules