Библиотека для работы с гарфами
Project description
TreeFast: Библиотека для работы с деревьями
Введение
TreeFast — это библиотека, созданная для работы с деревьями и графами, реализующая основные структуры данных, такие как узлы (Node), ребра (Edge), графы (Graph) и деревья (Tree). Данный проект предназначен для демонстрации принципов объектно-ориентированного анализа и дизайна (ООАД) в рамках учебного курса. TreeFast предоставляет удобные интерфейсы для создания, манипулирования и управления деревьями и графами, а также включает набор тестов для проверки корректности работы структур данных.
Цели и задачи
Цель разработки TreeFast заключается в создании качественной и гибкой библиотеки для работы с деревьями, которая будет полезна как для образовательных целей, так и для практического применения. Основные задачи включают:
- Проектирование и реализация классов для основных структур данных (узлы, ребра, графы, деревья).
- Обеспечение удобных интерфейсов для работы с данными структурами.
- Разработка тестов для обеспечения корректности и надежности библиотеки.
- Демонстрация принципов ООП и дизайна программных систем.
Установка и настройка
Установка для пользователя через pip:
bash pip install treefast
Для начала работы с библиотекой TreeFast через git выполните следующие шаги:
-
Клонируйте репозиторий:
git clone https://github.com/ritatay635/treefast.git cd treefast
-
Создайте виртуальное окружение и активируйте его:
python -m venv venv source venv/bin/activate # для Windows используйте `venv\Scripts\activate`
-
Установите необходимые зависимости:
pip install -r requirements.txt
Краткий обзор компонентов
Node (Узел)
Класс Node представляет узел дерева или графа. Он содержит идентификатор, данные и список дочерних узлов. Этот класс также включает методы для добавления и удаления дочерних узлов, а также методы для сериализации и десериализации узлов.
Основные методы:
add_child(node): добавляет дочерний узел.remove_child(node): удаляет дочерний узел.serialize(): сериализует узел в строку.deserialize(data): десериализует узел из строки.
Edge (Ребро)
Класс Edge представляет ребро в графе, соединяющее два узла. Он включает возможности задания веса ребра и методы для сериализации и десериализации.
Основные методы:
get_weight(): возвращает вес ребра.serialize(): сериализует ребро в строку.deserialize(data): десериализует ребро из строки.
Graph (Граф)
Класс Graph представляет граф, состоящий из узлов и ребер. Основные функции включают добавление и удаление узлов и ребер, а также методы для поиска узлов.
Основные методы:
add_node(node): добавляет узел в граф.remove_node(node): удаляет узел из графа.add_edge(edge): добавляет ребро в граф.remove_edge(edge): удаляет ребро из графа.
Tree (Дерево)
Класс Tree является частным случаем графа и представляет собой иерархическую структуру данных. Класс включает методы для добавления и удаления дочерних узлов, обходов в глубину и в ширину, а также методы для сериализации и десериализации деревьев.
Основные методы:
add_child(node): добавляет дочерний узел.remove_child(node): удаляет дочерний узел.depth_first_search(node): выполняет обход в глубину.breadth_first_search(node): выполняет обход в ширину.serialize(): сериализует дерево в строку.deserialize(data): десериализует дерево из строки.
Тестирование
TreeFast включает набор тестов, которые написаны с использованием фреймворка pytest. Тесты покрывают основные функции и методы каждого класса, обеспечивая корректность и надежность кода.
Для запуска тестов выполните команду:
pytest
Структура тестов
Директория tests содержит тестовые файлы для каждого компонента библиотеки:
tests/
├── __init__.py
├── test_nodes.py # Тесты для класса Node
├── test_edges.py # Тесты для класса Edge
├── test_graphs.py # Тесты для класса Graph
└── test_trees.py # Тесты для класса Tree
Принципы объектно-ориентированного анализа и дизайна (ООАД)
TreeFast разработана с использованием принципов объектно-ориентированного программирования и дизайна, таких как инкапсуляция, наследование и полиморфизм. Дизайн библиотеки демонстрирует следующие концепции:
- Инкапсуляция: данные и методы каждого класса скрыты и защищены от внешней модификации, доступ предоставляется через публичные интерфейсы.
- Наследование: классы узлов и деревьев наследуются от базовых классов, что обеспечивает повторное использование кода и поддержание порядка.
- Полиморфизм: методы могут быть переопределены в наследниках, что позволяет использовать объекты различных классов через общий интерфейс.
Заключение
TreeFast является мощной и гибкой библиотекой для работы с деревьями и графами, предназначенной для демонстрации принципов объектно-ориентированного анализа и дизайна. Она обеспечивает высокую степень модульности и расширяемости, что делает её отличным инструментом как для образовательных целей, так и для практического применения в различных задачах, связанных с обработкой и управлением деревьями и графами.
Авторы
Этот проект был разработан Тышко Станиславом в 2024 году.
Лицензия
TreeFast лицензирован под лицензией MIT. Для подробностей ознакомьтесь с файлом LICENSE в корневом каталоге проекта.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file treefast-0.2.0.tar.gz.
File metadata
- Download URL: treefast-0.2.0.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.8.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
215f5acfeff6432feff82f9d2a0db9dd483a7d6a5d6a504c8b6d118e626bd731
|
|
| MD5 |
1b16a613953487139ab39170c894f415
|
|
| BLAKE2b-256 |
26bf6b190d52cceee47c795b79d9b649115f932413ac48df70604902b4475653
|
File details
Details for the file treefast-0.2.0-py3-none-any.whl.
File metadata
- Download URL: treefast-0.2.0-py3-none-any.whl
- Upload date:
- Size: 12.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.8.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb02c9cb357ecb6c987de6a807f5671ea66acb8ef0be4e83465dc4713b54feee
|
|
| MD5 |
99f423c0d8eb477c4f17ae02efaf7e8f
|
|
| BLAKE2b-256 |
a33abb8cd5fc22fdbe3c1474039cc90355be4e881c2038c457c34880e9a29018
|