Skip to content

jegius/java-oop-ps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Введение в проект для изучения ООП

В ветке 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

Конфигурация для 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

Для macOS:

  1. Загрузите Docker Desktop для Mac по ссылке: Загрузка Docker
  2. Дважды кликните по загруженному DMG файлу и перетащите Docker в папку Applications.
  3. Запустите Docker Desktop из папки Applications.
  4. Откройте терминал и проверьте установку, набрав docker --version.

Для Windows:

  1. Загрузите Docker Desktop для Windows по ссылке: Загрузка Docker
  2. Запустите установщик и следуйте инструкциям.
  3. После установки откройте Docker Desktop.
  4. Откройте командную строку или PowerShell и проверьте установку, набрав docker --version.

Использование приложения

  1. Убедитесь, что Docker запущен и работает корректно.
  2. Запустите контейнер с базой данных командой docker-compose up.
  3. Запустите приложение, запустив главный класс Main.

Дополнительные замечания

  • Всегда убеждайтесь в доступности Docker Engine перед запуском контейнеров.
  • Проверьте содержимое файла app.properties перед началом использования приложения.
  • Настройте вашу среду разработки для корректной работы с внедрением зависимостей через Injector.
  • Приложение готово к использованию сразу после запуска контейнера с базой данных и соблюдения вышеуказанных инструкций.

Обзор Maven

Maven — это инструмент автоматизации сборки проектов на Java. Он управляет зависимостями проекта, его жизненным циклом и позволяет собирать и тестировать приложение.

Основные функции Maven:

  • Управление зависимостями: Maven автоматически скачивает нужные библиотеки и плагины в соответствии с указанными координатами и версиями.
  • Стандартизация проектов: Maven предоставляет универсальную структуру проектов и стандартизированное управление ими.
  • Сборка и тестирование проектов: Maven позволяет легко собирать проекты (компиляция, упаковка, тестирование) и управлять этими процессами.

Описание файла pom.xml

Файл pom.xml (Project Object Model) — это XML-файл, который содержит информацию о проекте и конфигурацию деталей, используемых Maven для сборки проекта.

Содержимое файла pom.xml и его основные компоненты:

<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

Установка Maven отличается в зависимости от операционной системы. Ниже приведены шаги для macOS и Windows.

Для macOS:

  1. Откройте терминал.
  2. Установите Maven через Homebrew:
    brew install maven
    
  3. Проверьте установку командой:
    mvn -v
    

Для Windows:

  1. Скачайте Maven с официального сайта: Maven download.
  2. Распакуйте архив в подходящую директорию (например, C:\Program Files\Apache Maven).
  3. Добавьте путь к Maven (M2_HOME и MAVEN_HOME) в системные переменные.
  4. Добавьте путь к каталогу с исполняемыми файлами Maven (PATH) в системные переменные.
  5. Откройте командную строку и введите mvn -v для проверки установки.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages