Примеры программ на 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.

Комментарии