В ветке master
находится приложение написанное в ООП стиле
В ветке not-oop
находится похожее приложение, но написанное в процедурном стиле с нарушением всех практик ООП и чистого кода.
Для перехода между метками используйте команду git checkout <имя метки>
, например:
```bash
git checkout not-oop \\переключение на ветку not-oop
git checkout master \\переключение на ветку master
```
Проект, представленный в данном описании, является прекрасным ресурсом для изучения объектно-ориентированного программирования (ООП). Принципы ООП, такие как инкапсуляция, наследование, полиморфизм и абстракция, являются фундаментальными концепциями в мире программирования и особенно важны для разработки на языке Java.
Этот проект служит практическим примером работы с классами и объектами, показывая, как может быть организован код в более управляемые и логические структуры. Он предлагает целевую платформу для применения и углубления знаний о ООП-концепциях.
- Инкапсуляция: Учащиеся научатся группировать связанные данные и функции, а также реализуют контроль доступа к информации через использование модификаторов доступа.
- Наследование: Проект демонстрирует, как создавать новые классы на основе существующих, наследуя свойства и поведение, при этом предоставляя возможность расширения.
- Полиморфизм: Упражнения в проекте позволят освоить использование общих интерфейсов для взаимодействия с объектами различных типов.
- Абстракция: Учащиеся узнают, как определить абстрактные классы, представляющие общие концепции и от которых можно наследовать.
- Работа с базами данных: Через включение PostgreSQL и Docker, учащиеся получат опыт, необходимый для подключения и взаимодействия с базами данных.
- Использование Maven: Участники проекта научатся использовать Maven для управления зависимостями и сборкой проекта.
- Модульность: ООП позволяет разрабатывать программы как комплекты модульных компонентов, что упрощает понимание, разработку и тестирование программ.
- Повторное использование кода: Использование классов и объектов упрощает повторное использование и расширение существующего кода.
- Более легкая отладка и обслуживание: ООП предлагает четкую структуру, благодаря которой обнаружение и исправление ошибок становится менее трудоемким процессом.
- Расширяемость: ООП обеспечивает легкость в расширении и адаптации системы к изменяющимся требованиям, что делает ее устойчивой к техническим изменениям.
- Разделение интересов (Separation of Concerns): ООП способствует разделению программы на части, которые выполняют отдельные функции. Это декомпозиция упрощает понимание и поддержку программ.
Этот обучающий проект предлагает начинающим программистам возможность погрузиться и пройти через все фазы разработки программного обеспечения, используя объектно-ориентированный подход, от проектирования и написания кода до его тестирования и отладки.
Данное приложение реализует систему управления данными пользователями и статьями. Пользователи могут регистрироваться, авторизовываться, добавлять, редактировать и удалять статьи, а также просматривать их содержимое. Администраторы могут управлять учетными записями. Используемая база данных - PostgreSQL.
Main
: Точка входа в приложение.App
: Основной класс приложения, координирующий запуск и работу приложения.IDatabaseService
: Интерфейс для инициализации и взаимодействия с базой данных.MainMenu
: Главное меню приложения.Injector
: Класс, реализующий механизм внедрения зависимостей.
Файл конфигурации src/main/resources/app.properties
содержит параметры доступа к базе данных:
database.url=jdbc:postgresql://localhost:5432/oopshop
database.user=exampleuser
database.password=examplepass
Конфигурация для Docker Compose:
version: '3.1'
services:
db:
image: postgres:latest
environment:
POSTGRES_USER: 'exampleuser'
POSTGRES_PASSWORD: 'examplepass'
POSTGRES_DB: 'oopshop'
ports:
- '5432:5432'
Для старта базы данных PostgreSQL в Docker, выполните docker-compose up
в директории с файлом docker-compose.yml
.
В базе данных по умолчанию добавлен пользователь с учетными данными:
- Логин: admin
- Пароль: admin
Этот пользователь имеет права администратора и может использоваться для входа в систему и управления пользователями и статьями.
- Загрузите Docker Desktop для Mac по ссылке: Загрузка Docker
- Дважды кликните по загруженному DMG файлу и перетащите Docker в папку Applications.
- Запустите Docker Desktop из папки Applications.
- Откройте терминал и проверьте установку, набрав
docker --version
.
- Загрузите Docker Desktop для Windows по ссылке: Загрузка Docker
- Запустите установщик и следуйте инструкциям.
- После установки откройте Docker Desktop.
- Откройте командную строку или PowerShell и проверьте установку, набрав
docker --version
.
- Убедитесь, что Docker запущен и работает корректно.
- Запустите контейнер с базой данных командой
docker-compose up
. - Запустите приложение, запустив главный класс
Main
.
- Всегда убеждайтесь в доступности Docker Engine перед запуском контейнеров.
- Проверьте содержимое файла
app.properties
перед началом использования приложения. - Настройте вашу среду разработки для корректной работы с внедрением зависимостей через
Injector
. - Приложение готово к использованию сразу после запуска контейнера с базой данных и соблюдения вышеуказанных инструкций.
Maven — это инструмент автоматизации сборки проектов на Java. Он управляет зависимостями проекта, его жизненным циклом и позволяет собирать и тестировать приложение.
- Управление зависимостями: Maven автоматически скачивает нужные библиотеки и плагины в соответствии с указанными координатами и версиями.
- Стандартизация проектов: Maven предоставляет универсальную структуру проектов и стандартизированное управление ими.
- Сборка и тестирование проектов: Maven позволяет легко собирать проекты (компиляция, упаковка, тестирование) и управлять этими процессами.
Файл pom.xml
(Project Object Model) — это XML-файл, который содержит информацию о проекте и конфигурацию деталей, используемых Maven для сборки проекта.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
Это объявление XML-схемы, которое определяет структуру файла pom.xml
.
<modelVersion>4.0.0</modelVersion>
Версия модели POM, которую Maven будет использовать.
<groupId>org.oop</groupId>
<artifactId>java-oop</artifactId>
<version>1.0-SNAPSHOT</version>
- groupId - идентификатор организации или группы, которая создала проект.
- artifactId - название самого артефакта (например, jar-файла).
- version - версия проекта.
<dependencies>
Секция зависимостей, в которой перечисляются все библиотеки, необходимые для сборки и работы проекта.
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.6.0</version>
</dependency>
Зависимость от JDBC драйвера PostgreSQL для подключения к базе данных.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
JUnit — фреймворк для модульного тестирования. scope
указанный как test
означает, что зависимость используется только во время тестирования.
<dependency>
<groupId>org.mindrot</groupId>
<artifactId>jbcrypt</artifactId>
<version>0.4</version>
</dependency>
Библиотека jBCrypt используется для безопасного хэширования паролей.
<properties>
<maven.compiler.source>20</maven.compiler.source>
<maven.compiler.target>20</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
- properties - секция для определения свойств, которые используются Maven.
- maven.compiler.source/target - версия Java, используемая для компиляции.
- project.build.sourceEncoding - кодировка исходного кода проекта.
После определения всех основных параметров и зависимостей, Maven использует этот файл для сборки проекта. Запустить сборку можно командой mvn package
, а запуск тестов — командой mvn test
.
Установка Maven отличается в зависимости от операционной системы. Ниже приведены шаги для macOS и Windows.
- Откройте терминал.
- Установите Maven через Homebrew:
brew install maven
- Проверьте установку командой:
mvn -v
- Скачайте Maven с официального сайта: Maven download.
- Распакуйте архив в подходящую директорию (например,
C:\Program Files\Apache Maven
). - Добавьте путь к Maven (
M2_HOME
иMAVEN_HOME
) в системные переменные. - Добавьте путь к каталогу с исполняемыми файлами Maven (
PATH
) в системные переменные. - Откройте командную строку и введите
mvn -v
для проверки установки.