Da es lang sein wird, können Sie das Diagramm nur mit dem Klassendiagramm und dem Sequenzdiagramm zeichnen.
Das Betriebssystem ist Windows 10.
Java
> java --version
openjdk 11.0.6 2020-01-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.6+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.6+10, mixed mode)
Die Installationsmethode wird weggelassen.
https://plantuml.com/ja/download
Lassen Sie plantuml.jar
von hier fallen.
Zum Zeitpunkt der Bestätigung war es "plantuml.1.2020.7.jar".
Graphviz http://www.graphviz.org/download/
Es sieht aus wie die Software, mit der die Figur gezeichnet wurde. Graphviz - Wikipedia
Dies ist praktisch erforderlich, da dies erforderlich ist, wenn Sie andere Diagramme als Sequenzdiagramme und Aktivitätsdiagramme ** erstellen möchten.
Ich habe "2.38" fallen lassen.
Wenn Sie PlantUML ausführen, müssen Sie die Position von "dot.exe" in Graphviz angeben. Die Benennungsmethode ist eine der folgenden (in der Reihenfolge der zu übernehmenden Priorität angeordnet).
-graphvizdot
anGRAPHVIZ_DOT
anGRAPHVIZ_DOT
Wenn der Ordner, in dem Graphviz installiert ist, "C: \ Graphviz" ist, geben Sie ihn wie folgt an.
-Wenn mit der Option graphvizdot angegeben
> java -jar plantuml.jar -graphvizdot C:\Graphviz\bin\dot.exe ...
Wenn in den Systemeigenschaften angegeben
> java -DGRAPHVIZ_DOT=C:\Graphviz\bin\dot.exe -jar plantuml.jar ...
Wenn durch Umgebungsvariable angegeben
> set GRAPHVIZ_DOT
GRAPHVIZ_DOT=C:\Graphviz\bin\dot.exe
VSCode Wenn Sie die folgenden Plug-Ins verwenden, legen Sie die Umgebungsvariable "GRAPHVIZ_DOT" fest, bevor Sie VSCode ausführen.
PlantUML PlantUML - Visual Studio Marketplace
--Plug-In zum Schreiben von PlantUML mit VSCode
Markdown Preview Enhanced Markdown Preview Enhanced - Visual Studio Marketplace
Hello World
hello.pu
@startuml
Hello <|-- World
@enduml
--Erstellen Sie eine Textdatei und beschreiben Sie den Inhalt als ↑
Lauf
> java -jar plantuml.jar hello.pu
hello.png
> dir /b
fuga.pu
hoge.pu
piyo.pu
> java -jar plantuml.jar hoge.pu fuga.pu piyo.pu
> dir /b
fuga.png
fuga.pu
hoge.png
hoge.pu
piyo.png
piyo.pu
Ordnerstruktur
`-hoge/
|-plantuml.pu
|-markdown.md
|-JavaSource.java
`-fuga/
`-fuga.pu
--Drei Dateien werden direkt unter dem Verzeichnis "hoge" abgelegt. ――Der Inhalt ist wie folgt
plantuml.pu
@startuml
class PlantUml
@enduml
markdown.md
```
@startuml
class Markdown
@enduml
```
JavaSource.java
/**
* @startuml
* class JavaSource {
* - String message
* }
* @enduml
*/
public class JavaSource {}
fuga.pu
@startuml
class Fuga
@enduml
> java -jar plantuml.jar hoge
Nach der Ausführung
`-hoge/
|-plantuml.pu
|-plantuml.png
|-markdown.md
|-JavaSource.java
|-JavaSource.png
`-fuga/
`-fuga.pu
--plantuml.png
und JavaSource.png
wurden generiert
plantuml.png
JavaSource.png
.c
.h
.cpp
.txt
.pu
.tex
.html
.htm
.java
> java -jar plantuml.jar "hoge/**"
Ausführungsergebnis
`-hoge/
|-plantuml.pu
|-plantuml.png
|-markdown.md
|-markdown.png
|-JavaSource.java
|-JavaSource.png
`-fuga/
|-fuga.pu
`-fuga.png
--markdown.png
und fuga.png
werden ebenfalls generiert
markdown.png
fuga.png
*
Beliebige Zeichenfolge
--?
Beliebiges einzelnes Zeichen
--**
Beliebiges Unterverzeichnis> java -jar plantuml -x "**/*.pu" "hoge/**"
Ausführungsergebnis
`-hoge/
|-plantuml.pu
|-markdown.md
|-markdown.png
|-JavaSource.java
|-JavaSource.png
`-fuga/
`-fuga.pu
pu
wurden nicht als PNG-Dateien generiert.> java -jar plantuml.jar -charset UTF-8 hello.pu
--Character-Code wird mit der Option -charset angegeben
> type plantuml | java -jar plantuml.jar -pipe > result.png
-pipe
angegeben ist, wird sie von der Standardeingabe gelesen, sodass Pipes möglich sind.hoge.pu
@startuml
class Hoge
@enduml
@startuml
class Fuga
@enduml
@startuml
class Piyo
@enduml
--Wenn sich in einer Datei mehrere @startuml ... @ enduml
Beschreibungen befinden
Lauf
> java -jar plantuml.jar hoge.pu
Ausführungsergebnis
> dir /b
hoge.png
hoge.pu
hoge_001.png
hoge_002.png
hoge.png
hoge_001.png
hoge_002.png
filename.png
generierthoge.pu
@startuml hoge
class Hoge
@enduml
@startuml fuga
class Fuga
@enduml
@startuml piyo
class Piyo
@enduml
Lauf
> java -jar plantuml.jar hoge.pu
Ausführungsergebnis
> dir /b
fuga.png
hoge.png
hoge.pu
piyo.png
hoge.png
fuga.png
pioy.png
> java -jar plantuml.jar -h
--Hilfe kann mit -h
oder -help
angezeigt werden
@startuml no-scale
'Dies ist ein Kommentar
Hello <|-- World
@enduml
'
) wird der Rest als Kommentar behandelt@startuml
title Hello Title
Hello <|-- World
@enduml
@startuml
title
Hello
Title
end title
Hello <|-- World
@enduml
@startuml
title
* __Hello__
* **World**
end title
Hello <|-- World
@enduml
@startuml
Bildunterschrift Abbildung 1
Hello <|-- World
@enduml
@startuml
header Hello
Hello <|-- World
footer World
@enduml
@startuml
left header Hello
Hello <|-- World
right footer World
@enduml
@startuml
header
Hello
Header
end header
Hello <|-- World
footer
World
Footer
end footer
@enduml
@startuml
legend
Hello World
end legend
Hello <|-- World
class FizzBuzz
@enduml
legend ... end legend
einfügen@startuml right
legend right
Right
end legend
Hello <|-- World
class FizzBuzz
@enduml
@startuml top
legend top
Top
end legend
Hello <|-- World
class FizzBuzz
@enduml
@startuml top-left
legend top left
Top Left
end legend
Hello <|-- World
class FizzBuzz
@enduml
@startuml no-scale
Hello <|-- World
@enduml
@startuml scale-1.5
scale 1.5
Hello <|-- World
@enduml
@startuml scale-0.5
scale 0.5
Hello <|-- World
@enduml
Creole
@startuml
note left
--Überschrift--
=Überschrift 1
==Überschrift 2
===Überschrift 3
--Nicht nummerierte Liste--
*Listing 1:
*Listing 2:
**Listing 2-1
*Listing 3:
--Nummeriert--
#Nummerierte Liste 1
#Nummerierte Liste 2
##Nummerierte Liste 2-1
#Nummerierte Liste 3
--Dekoration--
* **Fett gedruckt**
* //kursiv//
* ""Schriftart gleicher Breite(monospace)""
* --Stornierungslinie--
* __Unterstreichen__
--Tabelle--
|= |= Column1 |= Column2 |
|1 |Value1-1 |Value1-2 |
|2 |Value2-1 |Value2-2 |
--HTML--
* <color:red>Angabe des Farbnamens</color>
* <color:#00FF00>Farbcode-Spezifikation</color>
* <back:skyblue>Hintergrundfarbe</back>
* <size:18>Schriftgröße</size>
* <b>Fett gedruckt</b>
--Baumstruktur--
|_build.gradle
|_src
|_main
|_java
|_**bold**
|_--strike--
|_//itaric//
|___underline__
|_""monospace""
|_test
--Unicode--
* <U+20BB7>
--Escape--
* **Dies wird fett sein**
* ~**Das wird nicht mutig**
--Horizont--
--Fügen Sie den Titel ein--
----
==Fügen Sie den Titel ein==
====
..Fügen Sie den Titel ein..
....
end note
@enduml
@startuml
skinparam DefaultFontName Meilio
Guten Morgen<|--Welt
@enduml
skinparam
kann verschiedene Skin-Einstellungen im Formatskinparam <key> <value>
festlegen
--DefaultFontName
ist der Schlüssel zur Angabe der Standardschriftart<key>
angegeben werden können, kann mit dem folgenden Befehl bestätigt werden.> java -jar plantuml.jar -language
...
;skinparameter
;536
ActivityBackgroundColor
ActivityBarColor
ActivityBorderColor
ActivityBorderThickness
ActivityDiamondBackgroundColor
ActivityDiamondBorderColor
ActivityDiamondFontColor
...
@startuml
class Hello
class World
@enduml
@startuml
interface Hello
interface World
@enduml
@startuml
abstract class Hello
@enduml
abstract class <Typname>
deklarieren.@startuml
enum HelloWorld {
ONE
TWO
THREE
}
@enduml
enum <Typname>
deklarieren{...}
schreiben und eine Konstante darin deklarieren.@startuml
Hello -- World
@enduml
-
kann nur einfache Assoziationen beschreiben@startuml
class One
One --> Two
Three <-- Four
Five <--> Six
Seven x-- Eight
Nine --x Ten
@enduml
-- <
,>
, x
kann Induzierbarkeit ausdrücken
@startuml
One ..> Two
Three <.. Four
@enduml
..>
und <..
ausgedrückt werden@startuml
One --|> Two
Three <|-- Four
@enduml
<|--
, --|>
Kann Verallgemeinerung mit ausdrücken@startuml
One ..|> Two
Three <|.. Four
@enduml
..|>
, <|..
Kann die Erkenntnis ausdrücken@startuml
One --o Two
Three o-- Four
@enduml
@startuml
One --* Two
Three *-- Four
@enduml
- *
, * -
ausgedrückt werden@startuml
One -- Two : Hoge
Three -- Four : Fuga >
Five -- Six : < Piyo
@enduml
:
setzen, können Sie den Beziehungsnamen danach schreiben.@startuml
One "Foo" -- Two
Three -- "Bar" Four
Five "1" -- "1..*" Six
Seven "1 Fizz" -- "~* Buzz" Eight
@enduml
"
) zwischen dem Typnamen und der zugehörigen Zeile schreiben.*
) wie * Buzz
beginnen, wird es außerdem als Liste der kreolischen Notation behandelt, sodass Sie mit ~
entkommen müssen@startuml
class Hello {
one: String
three(param1: String, param2: int): boolean
String two
int four(List<String> param)
}
@enduml
class <Typname>
deklariert werden, gefolgt von wellenförmigen Klammern ({...}
).Feldname: Typname
) schreiben, sondern auch Java-ähnliches Schreiben ( Typname Feldname
)
――Es scheint, dass Sie alles schreiben können, aber ich denke, es ist sicher, die offizielle UML-Notation zu verwenden.@startuml
class Hello {
- privateField: int
# protectedField: int
~ packagePrivateField: int
+ publicField: int
- privateMethod(): void
# protectedMethod(): void
~ packagePrivateMethod(): void
+ publicMethod(): void
}
@enduml
@startuml
skinparam classAttributeIconSize 0
class Hello {
- privateField: int
# protectedField: int
~ packagePrivateField: int
+ publicField: int
- privateMethod(): void
# protectedMethod(): void
~ packagePrivateMethod(): void
+ publicMethod(): void
}
@enduml
skinparam classAttributeIconSize 0
gesetzt ist, verschwindet die Anzeige des Sichtbarkeitssymbols.@startuml
class Hello {
{abstract} one: int
{abstract} two(): int
}
@enduml
@startuml
class Hello {
{static} ONE: int
{static} two(): int
}
@enduml
@startuml
class Hello <<Hoge>>
class World <<Fuga>> {
message: String
}
@enduml
@startuml
class Hello<H>
class World<W> <<Hoge>>
@enduml
@startuml
interface One
interface Two
interface Three extends Two
interface Four
class Five implements One, Three
class Six extends Five implements Four {
field: String
method(): void
}
@enduml
@startuml
package one.two {
class Hello
}
package three.four {
World -- Hello
}
@enduml
package <name> {...}
geschrieben wird.Wenn die Reihenfolge der Paketdeklaration umgekehrt ist
@startuml
package three.four {
World -- Hello
}
package one.two {
class Hello
}
@enduml
@startuml
class Fizz
note left: fizz
class Buzz
note right: buzz
class Foo
note top: foo
class Bar
note bottom: bar
@enduml
-Hinter der Klassenerklärung etc.note <top|bottom|left|right>: <Kommentar>
Durch Schreiben können Sie eine Notiz für das unmittelbar vorhergehende Element schreiben.
@startuml
Fizz -- Buzz
note left of Fizz: fizz
note right of Buzz: buzz
@enduml
--note <Position> von <Ziel>: Durch Schreiben von <Kommentar>
können Sie dem durch <Ziel>
angegebenen Element eine Notiz hinzufügen.
@startuml
Fizz -- Buzz
note on link: fizz-buzz
note left: buzz
@enduml
@startuml
note "Hello World" as n1
Hello -- n1
World .. n1
note "Fizz Buzz" as n2
@enduml
@startuml
class Hello
note left
Hello
World
end note
Fizz -- Buzz
note on link
Fizz
Buzz
end note
note left of Fizz
fizz
buzz
end note
note as n1
Foo
Bar
end note
@enduml
@startuml
Alice -> Bob: Hi
Bob --> Alice: Hi
Alice -> Bob: Is this a pen?
Bob --> Alice: No! This is an apple!!
@enduml
<message>
wird zu einer synchronen Nachricht mit->
--->
macht die Linie gepunktet und kann in Antwortnachrichten verwendet werden@startuml
Alice ->> Bob: Hi
Alice ->> Bob: Is this a pen?
Alice ->> Bob: Is this a pen??
Alice ->> Bob: Is this a pen???
Alice ->> Bob: Is this a pen????
Bob -> Alice: This is an apple!!!
@enduml
- >>
ausgedrückt werden@startuml
participant Alice
participant Bob
participant Carol
Carol -> Bob: Is the tip included?
Bob -> Alice:Werden Sie eines Tages in der Lage sein, Teppen zu übertreffen?
@enduml
@startuml
actor Actor
boundary Boundary
control Control
entity Entity
database Database
collections Collections
@enduml
@startuml
Aclie -> Aclie:Lauf nicht weg
Aclie -> Aclie:Lauf nicht weg
Aclie -> Aclie:Lauf nicht weg
Aclie -> Aclie:Lauf nicht weg
Aclie -> Aclie:Lauf nicht weg
@enduml
@startuml
Alice -> Bob: Hi
autonumber
Bob -> Carol: Hi
Carol -> Dave: Hi
Bob -> Dave: Hi
@enduml
@startuml
autonumber 3
Alice -> Bob: Hi
Bob -> Carol: Hi
autonumber 2 3
Carol -> Dave: Hi
Bob -> Dave: Hi
@enduml
@startuml
autonumber
Alice -> Bob: Hi
autonumber stop
Bob -> Carol: Hi
Carol -> Dave: Hi
autonumber resume
Bob -> Dave: Hi
Carol -> Dave: Hi
@enduml
autonumber resume
können Sie die automatische Nummerierung an der Stelle fortsetzen, an der Sie aufgehört haben.@startuml
Alice -> Bob: Is this a pen?
alt yes
Alice <-- Bob: Yes! This is a pen!!
else no
Alice <-- Bob: Noooooooo! This is an apple!!!!!
end
@enduml
alt
/else
opt
loop
par
break
critical
Wenn verschachtelt
@startuml
Alice -> Bob: Is this a pen?
alt yes
Alice <-- Bob: Yes! This is a pen!!
else no
Alice <-- Bob: Noooooooo! This is an apple!!!!!
loop ∞
Alice -> Bob: Oh sorry! By the way, is this a pen?
Alice <-- Bob: Noooooooooooooooooo!!!!
end
end
@enduml
@startuml
Gruppenkopie
Alice -> Bob: Is this a pen?
Alice <-- Bob: No! This is an apple!!
end
@enduml
@startuml
activate Alice
Alice -> Bob
activate Bob
Bob -> Carol
activate Carol
Bob <-- Carol
deactivate Carol
Alice <-- Bob
deactivate Bob
@enduml
--activate <Name>
kann die Ausführungsspezifikationen der Rettungsleine mit dem angegebenen Namen ausdrücken.
disable <name>
deaktiviert werden@startuml
activate Alice
Alice -> Bob
activate Bob
Bob -> Bob
activate Bob
Bob -> Carol
activate Carol
Bob <-- Carol
deactivate Carol
Alice <-- Bob
deactivate Bob
@enduml
@startuml
Alice -> Bob
create Carol
Bob -> Carol: new
Bob -> Carol
Bob <-- Carol
Alice <-- Bob
@enduml
@startuml
Alice -> Bob
ref over Bob, Carol:Sehen Sie dort
Alice <-- Bob
ref over Alice
Da drüben
Referenz
end ref
@enduml
@startuml
== Foo ==
Alice -> Bob
Alice <-- Bob
== Bar ==
Bob -> Carol
Bob <-- Carol
@enduml
@startuml
[-> Alice: Hello
Alice ->]: Hello
@enduml
@startuml
Alice -> Bob
Alice <-- Bob
Alice -> Bob
Alice <-- Bob
|||
Alice -> Bob
Alice <-- Bob
||80||
Alice -> Bob
Alice <-- Bob
@enduml
-Zwischen Nachrichten|||
Sie können ein wenig Platz lassen, indem Sie ein Sandwich machen
||<Pixel>||
とすれば、間隔の大きさをPixelで指定できる@startuml
Alice -> Bob
note left: Hello
Alice <-- Bob
note right: World
Alice -> Alice
note left
Hello
World
end note
@enduml
top
und bottom
können nicht verwendet werden (wenn sie verwendet werden, werden sie als Klassendiagramm interpretiert)dot.exe
von Graphviz angeben, genau wie beim Ausführen über die Befehlszeile.build.gradle
plugins {
id "application"
}
sourceCompatibility = 11
targetCompatibility = 11
compileJava.options.encoding = "UTF-8"
mainClassName = "sandbox.plantuml.Main"
repositories {
mavenCentral()
}
dependencies {
implementation "net.sourceforge.plantuml:plantuml:8059"
}
Main.java
package sandbox.plantuml;
import net.sourceforge.plantuml.SourceStringReader;
import java.io.File;
public class Main {
public static void main(String[] args) throws Exception {
String source = "@startuml\n"
+ "Foo <-- Bar\n"
+ "@enduml";
final SourceStringReader reader = new SourceStringReader(source);
reader.generateImage(new File("result.png "));
}
}
@startuml ... @ enduml
s gibt, wird nur das erste Bild generiertAusführungsergebnis
> gradle run
...
Main.java
package sandbox.plantuml;
import net.sourceforge.plantuml.SourceStringReader;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class Main {
public static void main(String[] args) throws Exception {
String source = "@startuml FooBar\n"
+ "Foo <-- Bar\n"
+ "@enduml\n"
+ "\n"
+ "@startuml FizzBuzz\n"
+ "Fizz <-- Buzz\n"
+ "@enduml";
final SourceStringReader reader = new SourceStringReader(source);
try (
OutputStream fooBar = new FileOutputStream("foobar.png ");
OutputStream fizzBuzz = new FileOutputStream("fizzbuzz.png ");
) {
reader.generateImage(fooBar, 0);
reader.generateImage(fizzBuzz, 1);
}
}
}
generateImage (OutputStream, int)
verwenden, um das Bild mit der angegebenen Nummer zu generieren.
--Bildnummern beginnen mit 0 und sind von oben geordnetOrdnerstruktur
|-source.pu
|-build.gradle
`-src/main/java/
`-sandbox/plantuml/
`-Main.java
source.pu
@startuml FooBar
Foo <-- Bar
@enduml
@startuml FizzBuzz
Fizz <-- Buzz
@enduml
――Zwei Zahlen sind definiert
Main.java
package sandbox.plantuml;
import net.sourceforge.plantuml.SourceFileReader;
import java.io.File;
public class Main {
public static void main(String[] args) throws Exception {
final SourceFileReader reader = new SourceFileReader(new File("source.pu"));
reader.getGeneratedImages();
}
}
SourceFileReader
--Wenn Sie getGeneratedImages () ausführen, werden Bilder generiert.Ausführungsergebnis
> gradle run
...
Ordnerstruktur
|-source.pu
|-FooBar.png
|-FizzBuzz.png
|-build.gradle
`-src/main/java/
`-sandbox/plantuml/
`-Main.java
FooBar.png
FizzBuzz.png
getGeneratedImage ()
gibt Liste
des File
-Objekts zurück, das die generierte Bilddatei darstelltRecommended Posts