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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

Supported by

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