Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Отчет по проекту "Учет финансов"

Автор: Храновская Марина БПИ 249

1. Общая идея решения

Проект представляет собой консольное приложение для учета личных финансов с функционалом, который включает:

Основной функционал:

  • Управление банковскими счетами (добавление, просмотр, удаление)
  • Управление категориями доходов/расходов
  • Добавление финансовых операций
  • Просмотр аналитики (разница доходов/расходов, группировка по категориям)
  • Импорт/экспорт данных в форматах JSON, YAML и CSV
  • Валидация пользовательского ввода
  • Обработка ошибок

Дополнительные улучшения:

  • Реализована система меню с навигацией через нажатие клавиш
  • Добавлены проверки корректности ввода данных
  • Реализован механизм обработки ошибок
  • Добавлен функционал импорта/экспорта данных
  • Реализован Dependency Injection для управления зависимостями
  • Внедрен паттерн Factory для создания импортеров данных

2. Принципы SOLID и GRASP

SOLID:

Single Responsibility Principle (SRP)

  • Каждый класс имеет одну зону ответственности
  • DataProcessing - работа с пользовательским вводом
  • BankAccountFacade, CategoryFacade, OperationFacade - управление сущностями
  • AnalyticsFacade - аналитика данных
  • DataImporter - импорт данных

Open/Closed Principle (OCP)

  • Система импорта/экспорта расширяется через наследование
  • CsvDataImporter, JsonDataImporter, YamlDataImporter - разные форматы

Liskov Substitution Principle (LSP)

  • IDataParser реализации взаимозаменяемы
  • IMenuAction реализации работают в любой системе меню

Interface Segregation Principle (ISP)

  • Интерфейсы разделены по функциональности
  • IBankAccountRepository, ICategoryRepository, IOperationRepository
  • IDataExporterVisitor

Dependency Inversion Principle (DIP)

  • Фасады зависят от абстракций репозиториев
  • DI-контейнер управляет зависимостями

GRASP:

  1. Controller

    • MenuRenderer как контроллер для управления потоком приложения.
  2. Information Expert

    • Репозитории содержат всю информацию о соответствующих сущностях.
  3. Creator

    • Фабричные методы в репозиториях для создания новых объектов.
  4. Low Coupling

    • Использование интерфейсов и DI для минимизации связности.
  5. High Cohesion

    • Высокая связность внутри модулей благодаря четкому разделению ответственностей.

3. Паттерны проектирования GoF

  • Repository: Предоставляет абстракцию над хранилищем данных для сущностей BankAccount, Category и Operation
  • Facade: BankAccountFacade, CategoryFacade и OperationFacade содержат основную логику для работы с сущностями
  • Strategy: Используется для импорта и экспорта данных в различных форматах (CSV, JSON, YAML)
  • Visitor: Используется для экспорта данных различных типов
  • Command: Каждое действие в меню представлено отдельной командой, реализующей интерфейс IMenuAction
  • Factory Method: Используется для создания импортеров данных через IDataImporterFactory

4. Инструкция по запуску

  1. Установка зависимостей:

    dotnet restore
  2. Сборка проекта:

    dotnet build
  3. Запуск приложения:

    dotnet run --project kpo_bigHW1

Использование:

После запуска отобразится главное меню с доступными действиями. Навигация осуществляется через нажатие клавиш.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages