Universal Git Analyzer V16 OOP final
This commit is contained in:
97
CLASS_DIAGRAM.md
Normal file
97
CLASS_DIAGRAM.md
Normal 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` являются объектами предметной области.
|
||||
|
||||
То есть система теперь представлена не набором отдельных функций, а объектами, у каждого из которых есть своя зона ответственности.
|
||||
Reference in New Issue
Block a user