Проект представляет собой консольное приложение для учета личных финансов с функционалом, который включает:
- Управление банковскими счетами (добавление, просмотр, удаление)
- Управление категориями доходов/расходов
- Добавление финансовых операций
- Просмотр аналитики (разница доходов/расходов, группировка по категориям)
- Импорт/экспорт данных в форматах JSON, YAML и CSV
- Валидация пользовательского ввода
- Обработка ошибок
- Реализована система меню с навигацией через нажатие клавиш
- Добавлены проверки корректности ввода данных
- Реализован механизм обработки ошибок
- Добавлен функционал импорта/экспорта данных
- Реализован Dependency Injection для управления зависимостями
- Внедрен паттерн Factory для создания импортеров данных
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-контейнер управляет зависимостями
-
Controller
MenuRendererкак контроллер для управления потоком приложения.
-
Information Expert
- Репозитории содержат всю информацию о соответствующих сущностях.
-
Creator
- Фабричные методы в репозиториях для создания новых объектов.
-
Low Coupling
- Использование интерфейсов и DI для минимизации связности.
-
High Cohesion
- Высокая связность внутри модулей благодаря четкому разделению ответственностей.
- Repository: Предоставляет абстракцию над хранилищем данных для сущностей BankAccount, Category и Operation
- Facade: BankAccountFacade, CategoryFacade и OperationFacade содержат основную логику для работы с сущностями
- Strategy: Используется для импорта и экспорта данных в различных форматах (CSV, JSON, YAML)
- Visitor: Используется для экспорта данных различных типов
- Command: Каждое действие в меню представлено отдельной командой, реализующей интерфейс IMenuAction
- Factory Method: Используется для создания импортеров данных через IDataImporterFactory
-
Установка зависимостей:
dotnet restore
-
Сборка проекта:
dotnet build
-
Запуск приложения:
dotnet run --project kpo_bigHW1
После запуска отобразится главное меню с доступными действиями. Навигация осуществляется через нажатие клавиш.