Skip to content

Salavat-dev0/aston-java-tasks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aston Java Developer Course – Домашние задания

Этот репозиторий содержит решения практических задач, выполненных в рамках курса Java Developer. Все задания реализованы на языке Java без использования сторонних библиотек (кроме стандартных).

📚 Содержание


Домашнее задание 1

1.1 Аналог HashSet<E>

Реализован MyHashSet<E> с методами:

  • add(E element) – добавляет элемент, если его ещё нет
  • remove(E element) – удаляет элемент
  • contains(E element) – проверка наличия
  • автоматическое перехеширование при превышении LOAD_FACTOR = 0.75

Используется хеш-таблица с цепочками (Separate Chaining).

1.2 Аналог ArrayList<E>

Реализован MyArrayList<E> с методами:

  • add(E element) – добавление в конец
  • get(int index), remove(int index)
  • addAll(Collection<? extends E> c) – добавление всех элементов из коллекции

1.3 Работа со Stream API

Созданы классы Student и Book. В одном потоке выполняются операции:

  • вывод каждого студента
  • получение списка всех книг (flatMap)
  • сортировка по количеству страниц
  • фильтр книг, выпущенных после 2000 года
  • ограничение первыми 3 элементами
  • получение произвольного года выпуска через findAny() и обработка ifPresentOrElse()

Домашнее задание 2

Работа с файлами и исключения

  • Создано собственное непроверяемое исключение FileOperationException
  • Класс FileManager содержит методы:
    • writeToFile(String filename, String data) – запись строки в файл
    • readFromFile(String filename) – чтение содержимого файла
  • В main реализован консольный ввод данных и имени файла с последующей записью и чтением

Все операции ввода-вывода обёрнуты в try-with-resources, ошибки преобразуются в FileOperationException.


Домашнее задание 3

Паттерны проектирования (примеры)

Паттерн Описание Пример
Strategy Взаимозаменяемые алгоритмы оплаты creditCardPayment, PayPalPayment
Chain of Responsibility Цепочка логгеров (Console, File, Error) Обработка сообщений разного уровня
Builder Пошаговое создание компьютера Computer.ComputerBuilder
Proxy Ленивая загрузка изображений ProxyImageRealImage
Decorator Динамическое добавление опций к кофе MilkCoffee, SyrupCoffee
Adapter Адаптация LegacyRectangle к интерфейсу Shape рисует прямоугольник в консоли

Каждый паттерн представлен отдельным запускаемым классом.


Домашнее задание 4

Многопоточность

1. DeadLock

Два потока захватывают мониторы в разном порядке:
lock1 → lock2 и lock2 → lock1, что приводит к взаимной блокировке.
Состояние потоков выводится через getState().

2. LiveLock

Два Worker бесконечно уступают друг другу общий Resource, но не выполняют полезную работу.

3. Поочерёдный вывод чисел 1 и 2

Два потока через wait()/notifyAll() печатают бесконечную последовательность: 1 2 1 2 ...


Командный проект – Управление автопарком (мой вклад)

В рамках курса мы разработали приложение для работы с автомобилями.

Моя ответственность: реализация модуля ввода/вывода данных – создание массива автомобилей из разных источников и сохранение результатов в файл.

Классы, написанные мной:

Класс Назначение
InputManager Создание массива Car[] тремя способами: вручную (консоль), случайная генерация, чтение из CSV‑файла
OutputManager Сохранение массива автомобилей в текстовый файл в формате Модель,Мощность,Год

Вспомогательные модели (совместная работа):

  • Car – неизменяемый класс, построенный через Builder с валидацией полей.
  • CarComparators – готовые компараторы для сортировки по модели, мощности и году.

🛠 Технологии и требования

  • Java 17+ (можно использовать любую версию от 8)
  • Сборка: компиляция через javac или любая IDE (IntelliJ IDEA, Eclipse)
  • Никаких внешних зависимостей (Maven/Gradle не используется)

About

Solutions for practical assignments in the Aston Java Developer course. Includes custom implementations of HashSet and ArrayList, work with Stream API, file I/O, multithreading, design patterns, and a team project.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages