Universal Git Analyzer V16 OOP final

This commit is contained in:
2026-05-26 10:23:22 +03:00
commit b94ce5089d
14 changed files with 1392 additions and 0 deletions

97
CLASS_DIAGRAM.md Normal file
View File

@@ -0,0 +1,97 @@
# Диаграмма классов Universal Git Analyzer OOP
## Основные классы
```text
UniversalGitAnalyzerApp
├── storage: StorageManager
├── git_analyzer: GitAnalyzer
├── current_user
├── current_repo
├── current_index
└── current_data
StorageManager
├── data_file
├── register_user(login, password)
├── check_user(login, password)
├── get_repositories(login)
├── add_repository(login, link)
└── delete_repository(login, link)
UserProfile
├── login
├── password_hash
├── repositories
└── to_dict()
GitAnalyzer
├── languages
├── ignore_dirs
├── normalize_link(link)
├── clone_repo(link)
├── get_commits(repo_dir)
├── get_visible_branches_at_commit(repo_dir, selected_commit)
├── analyze_files_for_branches(repo_dir, selected_commit)
├── analyze_repository(link, selected_index)
└── format_analysis(data)
RepositoryInfo
├── link
├── repo_name
├── default_branch
├── branches
├── commits
├── total_files
└── total_lines
CommitInfo
├── hash
├── short
├── author
├── date
├── timestamp
└── message
BranchInfo
├── name
├── ref
├── total_files
└── total_lines
```
## Связи
```text
UniversalGitAnalyzerApp --> StorageManager
UniversalGitAnalyzerApp --> GitAnalyzer
StorageManager --> UserProfile
GitAnalyzer --> RepositoryInfo
RepositoryInfo --> CommitInfo
RepositoryInfo --> BranchInfo
```
## Объекты системы во время работы
Пример объектов, которые появляются при запуске:
```text
app = UniversalGitAnalyzerApp()
storage = StorageManager()
git_analyzer = GitAnalyzer()
user = UserProfile("egor", password_hash, repositories)
repository = RepositoryInfo(link, repo_name, default_branch, branches, commits)
commit = CommitInfo(hash, short, author, date, timestamp, message)
branch = BranchInfo(name, ref, total_files, total_lines)
```
## Что сказать на защите
В OOP-версии приложение разделено на классы:
- `UniversalGitAnalyzerApp` отвечает за интерфейс.
- `StorageManager` отвечает за локальное хранение пользователей и ссылок.
- `GitAnalyzer` отвечает за анализ Git-репозитория.
- `UserProfile`, `RepositoryInfo`, `CommitInfo`, `BranchInfo` являются объектами предметной области.
То есть система теперь представлена не набором отдельных функций, а объектами, у каждого из которых есть своя зона ответственности.