💀
Второй курс РПО
Разработка программных модулей
Разработка программных модулей
  • Модели разработки
  • Ошибки и отладка программ
  • Средства разработки алгоритмов
    • Основные принципы и стадии тестирования
  • Сложностные классы
  • Эмуляторы операционных систем
  • Сложность сортировки
  • Уровни тестирования
  • Задание №1
  • Регрессионное тестирование
  • Тестирование «белым ящиком»
  • Как делать оценку сложности?
  • Алгоритмы и сложность
  • Тестирование "белым ящиком" №2
  • Сложность алгоритмов
  • Тестирование "белым ящиком" №3
  • Тестирование "Чёрным ящиком»" №1
  • Тестирование "Черным ящиком" №2
  • Оценка сложности эвристических алгоритмов
  • Принципы ООП
  • Тестирование "Черным ящиком" №3
  • КТ - В3
  • Модульное тестирование
    • С кодами
  • Модульное тестирование
  • Абстрактные классы и интерфейсы в Python
  • Структуры в Python по аналогии с C++
    • Диалоги гениев
  • Делегаты в Python
    • Ещё более не смешные диалоги
  • Регулярные выражения в Python от простого к сложному
  • Python: Коллекции
  • Параметризованные классы (шаблоны)
  • Указатели и операции со списками в Python
  • Интеграционное тестирование
  • Работа с классами. Перегрузка методов
  • Определение операций в классе.
  • Создание наследованных классов
  • Интеграционное тестирование
  • Работа с объектами через интерфейсы
  • Использование стандартных интерфейсов
  • Работа с типом данных "Структура"
  • Коллекции. Параметризованные классы
  • Использование регулярных выражений
  • Операции со списками
  • Что такое паттерны проектирования?
  • Шпаргалка по шаблонам проектирования
    • [Habr] Шпаргалка
  • UML-диаграммы проектирования
  • Использование основных шаблонов.
  • Использование каких то там шаблонов
  • 15-я Практическая
  • 16-я Практическая
  • Graphviz Online
  • 17-я Практическая
  • Введение в теорию программирования: Объектно-ориентированный подход
  • Документирование софта и стандарты
  • C# Ввод и вывод
  • Оптимизация кода: просто о главном
  • Автоматизация разработки технической документации
  • Автоматизированное документирование и первичные данные
  • ADO.NET что это?
Powered by GitBook
On this page
  • Подробное руководство по GraphvizOnline
  • 🔹 Основные элементы Graphviz
  • 🔹 Как создавать классы (группировка объектов)
  • 🔹 Как связать классы (наследование, композиция, агрегация)
  • 🔹 Дополнительные функции

Graphviz Online

21.02.2025 - Небольшая инструкция

Previous16-я ПрактическаяNext17-я Практическая

Last updated 3 months ago

Подробное руководство по GraphvizOnline

Graphviz – это мощный инструмент для создания диаграмм, использующий язык DOT. С помощью него можно строить схемы для классов, баз данных, сетей, алгоритмов и многого другого.

Онлайн-редактор позволяет быстро писать код, визуализировать графы и экспортировать схемы.


🔹 Основные элементы Graphviz

1️⃣ Типы графов

  • Ориентированный граф (digraph) – со стрелками между узлами.

  • Неориентированный граф (graph) – без стрелок, просто связи.

Пример разницы:

// Ориентированный граф (направленные связи)
digraph directed_example {
    A -> B;
    B -> C;
}
// Неориентированный граф (обычные связи)
graph undirected_example {
    A -- B;
    B -- C;
}

2️⃣ Создание узлов

Каждый узел можно оформить по-разному:

digraph nodes_example {
    A [shape=circle, color=red, style=filled];
    B [shape=box, color=blue, fontcolor=white, style=filled];
    C [shape=diamond, color=green, style=filled];
}

🔹 Возможные формы узлов (shape):

  • ellipse (по умолчанию)

  • box (прямоугольник)

  • diamond (ромб)

  • circle

  • record (используется для классов, таблиц)


3️⃣ Связывание узлов (стрелки и линии)

🔸 Простые связи

digraph simple_arrows {
    A -> B;
    B -> C;
}

🔸 Разные стили стрелок

digraph arrow_styles {
    A -> B [arrowhead=normal];   // Обычная стрелка
    B -> C [arrowhead=vee];      // Двойная V-образная стрелка
    C -> D [arrowhead=diamond];  // Ромбовидная стрелка
    D -> E [arrowhead=dot];      // Точечная стрелка
}

🔹 Возможные виды стрелок (arrowhead):

  • normal (обычная)

  • vee (V-образная)

  • diamond (ромб)

  • dot (точка)

  • odiamond (пустой ромб)

  • obox (пустой прямоугольник)


4️⃣ Типы линий (связей)

digraph line_styles {
    A -> B [style=solid];   // Обычная линия
    B -> C [style=dashed];  // Пунктирная
    C -> D [style=dotted];  // Точечная
    D -> E [style=bold];    // Жирная
}

🔹 Варианты style для линий:

  • solid (сплошная)

  • dashed (пунктирная)

  • dotted (точечная)

  • bold (жирная)


🔹 Как создавать классы (группировка объектов)

В Graphviz можно отображать структуру классов с их атрибутами и методами. Это делается с помощью shape=record.

📌 Пример класса

digraph class_example {
    node [shape=record];

    "Класс" [label="{ Класс | атрибут1: тип \l атрибут2: тип \l метод1(): тип \l }"];
}

🔹 Как связать классы (наследование, композиция, агрегация)

В программировании связи между классами бывают разными:

  • Наследование (обычная стрелка)

  • Композиция (заполненный ромб)

  • Агрегация (пустой ромб)

  • Зависимость (пунктирная линия)

📌 Пример UML-схемы классов

digraph uml_example {
    node [shape=record];

    "Файл" [label="{ Файл | Размер: int \l Расширение: string \l Название: string \l get_info(): string \l }"];
    "БазаВирусов" [label="{ База Вирусов | вирусы: list \l проверить_на_вирус(файл: Файл): bool \l }"];
    "Сканер" [label="{ Сканер | база_вирусов: БазаВирусов \l сканировать(файл: Файл): string \l }"];
    "Антивирус" [label="{ Антивирус | сканер: Сканер \l база: БазаВирусов \l проверить_файл(имя: string): string \l }"];

    "Антивирус" -> "БазаВирусов" [label="Композиция", arrowhead="diamond", fillcolor=black, style=filled];
    "Антивирус" -> "Сканер" [label="Агрегация", arrowhead="odiamond"];
    "Сканер" -> "БазаВирусов" [label="Агрегация", arrowhead="odiamond"];
    "Сканер" -> "Файл" [label="Зависимость", style="dashed", arrowhead="open"];
}

Что здесь происходит?

  • Антивирус состоит из Сканера и БазыВирусов (композиция)

  • Сканер использует БазуВирусов (агрегация)

  • Сканер анализирует Файл (зависимость, пунктирная линия)


🔹 Дополнительные функции

1️⃣ Ортогональные линии (прямоугольные связи)

digraph ortho_example {
    graph [splines=ortho];

    A -> B;
    B -> C;
}

2️⃣ Цветные связи

digraph color_links {
    A -> B [color=red];
    B -> C [color=blue];
    C -> D [color=green];
}

3️⃣ Изменение толщины линий

digraph thick_lines {
    A -> B [penwidth=2];
    B -> C [penwidth=4];
}

Приписка o делает фигуру полой, к примеру odot

GraphvizOnline
Graphviz Online