Skip to main content

Библиотека для работы с гарфами

Project description

TreeFast: Библиотека для работы с деревьями

Введение

TreeFast — это библиотека, созданная для работы с деревьями и графами, реализующая основные структуры данных, такие как узлы (Node), ребра (Edge), графы (Graph) и деревья (Tree). Данный проект предназначен для демонстрации принципов объектно-ориентированного анализа и дизайна (ООАД) в рамках учебного курса. TreeFast предоставляет удобные интерфейсы для создания, манипулирования и управления деревьями и графами, а также включает набор тестов для проверки корректности работы структур данных.

Цели и задачи

Цель разработки TreeFast заключается в создании качественной и гибкой библиотеки для работы с деревьями, которая будет полезна как для образовательных целей, так и для практического применения. Основные задачи включают:

  1. Проектирование и реализация классов для основных структур данных (узлы, ребра, графы, деревья).
  2. Обеспечение удобных интерфейсов для работы с данными структурами.
  3. Разработка тестов для обеспечения корректности и надежности библиотеки.
  4. Демонстрация принципов ООП и дизайна программных систем.

Установка и настройка

Установка для пользователя через pip: bash pip install treefast

Для начала работы с библиотекой TreeFast через git выполните следующие шаги:

  1. Клонируйте репозиторий:

    git clone https://github.com/ritatay635/treefast.git
    cd treefast
    
  2. Создайте виртуальное окружение и активируйте его:

    python -m venv venv
    source venv/bin/activate  # для Windows используйте `venv\Scripts\activate`
    
  3. Установите необходимые зависимости:

    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 разработана с использованием принципов объектно-ориентированного программирования и дизайна, таких как инкапсуляция, наследование и полиморфизм. Дизайн библиотеки демонстрирует следующие концепции:

  1. Инкапсуляция: данные и методы каждого класса скрыты и защищены от внешней модификации, доступ предоставляется через публичные интерфейсы.
  2. Наследование: классы узлов и деревьев наследуются от базовых классов, что обеспечивает повторное использование кода и поддержание порядка.
  3. Полиморфизм: методы могут быть переопределены в наследниках, что позволяет использовать объекты различных классов через общий интерфейс.

Заключение

TreeFast является мощной и гибкой библиотекой для работы с деревьями и графами, предназначенной для демонстрации принципов объектно-ориентированного анализа и дизайна. Она обеспечивает высокую степень модульности и расширяемости, что делает её отличным инструментом как для образовательных целей, так и для практического применения в различных задачах, связанных с обработкой и управлением деревьями и графами.

Авторы

Этот проект был разработан Тышко Станиславом в 2024 году.

Лицензия

TreeFast лицензирован под лицензией MIT. Для подробностей ознакомьтесь с файлом LICENSE в корневом каталоге проекта.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

treefast-0.2.0.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

treefast-0.2.0-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

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

Hashes for treefast-0.2.0.tar.gz
Algorithm Hash digest
SHA256 215f5acfeff6432feff82f9d2a0db9dd483a7d6a5d6a504c8b6d118e626bd731
MD5 1b16a613953487139ab39170c894f415
BLAKE2b-256 26bf6b190d52cceee47c795b79d9b649115f932413ac48df70604902b4475653

See more details on using hashes here.

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

Hashes for treefast-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eb02c9cb357ecb6c987de6a807f5671ea66acb8ef0be4e83465dc4713b54feee
MD5 99f423c0d8eb477c4f17ae02efaf7e8f
BLAKE2b-256 a33abb8cd5fc22fdbe3c1474039cc90355be4e881c2038c457c34880e9a29018

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page