Skip to content

Instantly share code, notes, and snippets.

@artbear
Last active December 3, 2023 05:43
Show Gist options
  • Save artbear/e81e87e90b9acfcb1554de1fc6a3f866 to your computer and use it in GitHub Desktop.
Save artbear/e81e87e90b9acfcb1554de1fc6a3f866 to your computer and use it in GitHub Desktop.
Диаграмма DFA-классов для BSL Language Server - PlantUML
@startuml Зачатки dfa
note "https://gist.github.com/artbear/e81e87e90b9acfcb1554de1fc6a3f866" as N1
interface Assumption
note top: Допущение о типе переменной
class DummyAssumption
note top: Некая хрень
abstract class ConstantAssumption
note top: Константные значения\nлитералы
class StringConstantAssumption
class NumberConstantAssumption
class DateConstantAssumption
class UndefinedConstantAssumption
class NullConstantAssumption
note "Скорее всего,\nнужно использовать общий класс UndefinedOrNullConstantAssumption\nсмысл у них будет один и тот же:\nотсутствие значения и запрет дереференса, вызова метода" as N2
UndefinedConstantAssumption .. N2
NullConstantAssumption .. N2
Assumption <|.. ConstantAssumption
Assumption <|.. DummyAssumption
ConstantAssumption <|-- StringConstantAssumption
ConstantAssumption <|-- NumberConstantAssumption
ConstantAssumption <|-- DateConstantAssumption
ConstantAssumption <|-- UndefinedConstantAssumption
ConstantAssumption <|-- Undefined
abstract class MethodCallAssumption
note top: При вычисления значения используются\nвызовы определенных глобальных методов или методов объектов
Assumption <|.. MethodCallAssumption
class DetailErrorDescriptionCallAssumption
note top: Вызов метода ПодробноеПредставлениеОшибки\n или ОбработкаОшибок.ПодробноеПредставлениеОшибки
MethodCallAssumption <|-- DetailErrorDescriptionCallAssumption
class BriefErrorDescriptionCallAssumption
note top: Вызов метода КраткоеПредставлениеОшибки\n или ОбработкаОшибок.КраткоеПредставлениеОшибки
MethodCallAssumption <|-- BriefErrorDescriptionCallAssumption
class ErrorDescriptionCallAssumption
note top: Вызов метода ОписаниеОшибки
MethodCallAssumption <|-- ErrorDescriptionCallAssumption
class NewAssumption
note bottom: А = Новый ХХХ(...) или Новый(ХХХ...)
Assumption <|.. NewAssumption
class StringAssumption
note bottom: Строки\А = СтроковаяФункцияХХХ() или литерал-строка [+ выражение]\nА = Формат(...)\nА = СтрШаблон(...) + выражение\nА = "литерал" + выражение\nА = "литерал" сюда не попадает, т.к. это явная константа
Assumption <|.. StringAssumption
@enduml
' Тип Символ Отображение
' Наследование <|--
' Композиция *--
' Агрегация o--
' Зависимость <..
' Ассоциация <--
' Реализация (Имплементация) <|..
' Class01 <|-- Class02
' Class03 *-- Class04
' Class05 o-- Class06
' Class07 .. Class08
' Class09 -- Class10
' note "Эта заметка привязана\nсразу к нескольким классам"
' @startuml
' abstract abstract
' abstract class "abstract class"
' annotation annotation
' circle circle
' () circle_short_form
' class class
' diamond diamond
' <> diamond_short_form
' entity entity
' enum enum
' interface interface
' protocol protocol
' struct struct
' @enduml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment