Примеры программ на Java: изучаем основы языка
Полный рабочий код этого приложения-календаря вы можете запросить у меня. Попробуйте запустить его у себя в IDE и поэкспериментировать с добавлением новых праздников!
В этом примере мы увидели, как можно использовать такие возможности Java как классы, списки, циклы и работу с вводом данных. Далее рассмотрим еще несколько полезных программ для закрепления знаний.
Пример приложения для учета контактов
Давайте рассмотрим еще один полезный пример программы на Java - простая адресная книга для хранения контактов. В ней мы будем сохранять для каждого контакта такие данные как имя, фамилия, номер телефона и email.
Создадим класс Contact
с соответствующими полями и методами доступа к ним (геттерами и сеттерами):
public class Contact { private String firstName; private String lastName; private String phone; private String email; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } // аналогично для остальных полей }
Теперь опишем класс AddressBook
, который будет хранить и управлять списком контактов:
import java.util.ArrayList; public class AddressBook { private ArrayList<Contact> contacts; public AddressBook() { contacts = new ArrayList<>(); } public void addContact(Contact contact) { contacts.add(contact); } }
Мы видим здесь создание списка contacts
и метод addContact
для добавления новых контактов в адресную книгу. Добавьте также функции удаления и поиска контактов для полноценного приложения.
Интеграция почтового сервиса
Эту пример программы на Java можно улучшить, добавив интеграцию с почтовым сервисом для отправки писем прямо из нашего приложения. Воспользуемся для этого библиотекой JavaMail:
import javax.mail.*; import javax.mail.internet.*; public class MailUtils { public void sendMail(String to, String subject, String text) throws Exception { Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("admin@example.com")); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject(subject); message.setText(text); Transport.send(message); } }
Этот класс позволяет отправлять письма из Java-приложения с помощью SMTP. Подключите его к нашей адресной книге!
Хранение данных в БД
До этого мы хранили данные о контактах в оперативной памяти приложения. Но при перезапуске они терялись. Давайте подключим постоянное хранилище данных - базу данных SQLite:
import java.sql.*; public class SQLiteExample { public static void main(String[] args) { try (Connection conn = DriverManager.getConnection("jdbc:sqlite:contacts.db")) { Statement stmt = conn.createStatement(); stmt.execute("CREATE TABLE IF NOT EXISTS contacts (first_name TEXT, last_name TEXT)"); // Вставка и выборка контактов } catch (SQLException e) { System.out.println(e.getMessage()); } } }
Здесь происходит подключение к БД файл contacts.db и создается таблица contacts
со строками для контактов приложения. Теперь данные не пропадут и будут доступны в любой момент.
Графический интерфейс приложения
На данный момент наше приложение для учета контактов работает в текстовом режиме через консоль. Давайте создадим для него графический пользовательский интерфейс с окнами, меню и кнопками. Для этого воспользуемся библиотекой Swing:
import javax.swing.*; import java.awt.event.*; public class ContactsForm extends JFrame { private JTextField firstNameField; private JTextField lastNameField; private JButton addContactButton; private JButton searchContactsButton; // Код инициализации элементов интерфейса ... }
Мы наследуем наш класс от JFrame для создания окна приложения и добавляем различные элементы управления - текстовые поля, метки и кнопки. Теперь контакты можно добавлять и искать через это графическое окно.
Добавление валидации данных
Пользовательский интерфейс, который мы реализовали, позволяет вводить данные о контактах. Однако в текущем виде возможен ввод некорректных или неполных данных, например пустого имени. Давайте добавим валидацию.
При попытке сохранить контакт будем проверять заполненность обязательных полей. Также можно проверить формат номера телефона с помощью регулярного выражения:
public class ContactsForm extends JFrame { ... private boolean validateContact() { if (firstNameField.getText().trim().length() == 0 || phoneField.getText().trim().length() == 0) { return false; } String phone = phoneField.getText(); if (!phone.matches("\\d{10}")) { return false; } return true; } }
Теперь при попытке добавить контакт будет вызываться функция validateContact
. И только если валидация пройдена успешно, контакт будет сохранен.
Логирование событий
Полезной возможностью для отладки приложения является ведение журнала событий (логирование). Добавим вывод в журнал основных действий пользователя:
import java.util.logging.Logger; import java.util.logging.Level; public class ContactsForm extends JFrame { private static final Logger log = Logger.getLogger(ContactsForm.class.getName()); ... private void addContact() { log.log(Level.INFO, "Пользователь нажал на кнопку 'Добавить контакт'"); // далее сохранение контакта } }
Теперь в отдельный файл будут попадать сообщения о нажатии на кнопки формы, заполнении полей, возникновении ошибок. Это поможет разработчику при доработке и сопровождении приложения.
Деплой приложения
Мы разработали полноценное десктопное Java-приложение для хранения контактов пользователя. Теперь его необходимо подготовить к выпуску для обычных пользователей без среды разработки Java.
Варианты деплоя:
- Создание исполняемого JAR-приложения
- Публикация в магазине приложений (Mac App Store, Google Play и др.)
- Распространение через специальные инсталляторы
После добавления иконок, описания и скриншотов наше приложение будет готово для скачивания пользователями на их компьютеры и использования без установки дополнительных библиотек Java.