Похожие презентации:
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.
Класс Scanner13.
Вопросы и ответы14.
Глава 9.2Перечисляемые типы
15.
Enums• Иногда в Java нужно создать свой тип данных,
который имеет ограниченное количество значений
• Для этого в Java используются ENUMS
16.
Enums17.
Enums18.
Вопросы и ответы19.
Глава 9.3Разделение ответственности
классов (прототип идеи SOLID и
MVC)
20.
Разделение ответственностей дляклассов
• Каждый класс должен быть Single-Responsible, то есть
отвечать за что то одно
• Такой подход позволяет лучше переиспользовать код
• Например, класс, реализующий логику поиска каких
ни будь данных в файле/любом другом месте, лучше
отделять от класса, реализующего консольный
пользовательский интерфейс
• Тогда можно сделать несколько интерфейсов для
одной и той же логики
21.
Глава 9.4Практический пример.
Интерфейсные классы и классы с
логикой
22.
Чего хотим• Пусть есть файл с номерами телефонов
• Хотим загружать его в память коллекцию
• Добавлять и удалять телефоны из этой коллекции
• Сохранять файл
23.
Как принято делить классы• Классы, ответственные только за загрузку/сохранение
данных (Repository)
• Классы с бизнес логикой (Services)
• Интерфейсные классы (с которыми взаимодейтсвует
юзер) (UI)