-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathlanguage-features.puml
127 lines (67 loc) · 3.89 KB
/
language-features.puml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
@startuml
skinparam {
shadowing false
arrowColor #46749F
RectangleBorderColor #CCCCCC
RectangleBackgroundColor #F5F2F0
ComponentBorderColor #46749F
ComponentBackgroundColor #E5ECF0
AgentBorderColor #46749F
AgentBackgroundColor #E5ECF0
UsecaseBorderColor #46749F
UsecaseBackgroundColor #E5ECF0
ControlBorderColor #0081C6
ControlBackgroundColor #55DDCA
}
rectangle "Functional" as functional {
agent "'First Class' \n Functions" as firstClassFunctions [[https://www.dartlang.org/guides/language/language-tour#functions]]
agent "Arrow \n Functions" as arrowFunctions [[https://www.dartlang.org/resources/dart-tips/dart-tips-ep-7]]
agent "Rich \n Collections" as collectionOperators [[https://api.dartlang.org/stable/dart-collection/dart-collection-library.html]]
agent "Named & Optional \n parameters" as namedParams [[https://www.dartlang.org/guides/language/language-tour#optional-parameters]]
agent "*sync \n functions" as syncGenerators [[https://www.dartlang.org/articles/language/beyond-async#synchronous-generators-sync]]
agent "Typedefs" as typedefs [[https://www.dartlang.org/guides/language/language-tour#typedefs]]
syncGenerators -up-> collectionOperators: generate
typedefs -up-> firstClassFunctions: assigns \n name
}
rectangle "Object Oriented" as objectOriented {
agent "Named & other \n Constructors" as constructors [[https://www.dartlang.org/guides/language/language-tour#named-constructors]]
agent "Method \n Cascades" as cascading [[https://www.dartlang.org/guides/language/language-tour#cascade-notation-]]
agent "Smart \n Getters / Setters" as gettersSetters [[https://www.dartlang.org/guides/language/language-tour#getters-and-setters]]
agent "Mixins" as mixins [[https://www.dartlang.org/guides/language/language-tour#adding-features-to-a-class-mixins]]
agent "Implicit \n Interfaces" as interfaces [[https://www.dartlang.org/guides/language/language-tour#implicit-interfaces]]
}
rectangle "Asynchronous" as async {
agent "Futures" as futures [[https://www.dartlang.org/tutorials/language/futures]]
agent "async / await" as asyncAwait [[https://www.dartlang.org/tutorials/language/futures#async-and-await]]
agent "Zones" as zones [[https://www.dartlang.org/articles/libraries/zones]]
asyncAwait -up-> futures : builds on
zones -> futures : wrap
rectangle "Concurrent" as concurrent #DDDDDD {
agent "Isolates" as isolates [[https://api.dartlang.org/stable/dart-isolate/dart-isolate-library.html]]
}
}
rectangle "Reactive" as reactive {
agent "Streams" as streams [[https://www.dartlang.org/tutorials/language/streams]]
agent "await for" as awaitFor [[https://www.dartlang.org/articles/language/beyond-async#await-for]]
agent "*async \n functions" as asyncGenerators [[https://www.dartlang.org/articles/language/beyond-async#asynchronous-generators-async]]
awaitFor <- streams: consumed by
asyncGenerators -up-> streams: generate
isolates -> streams : communicate \n through
}
rectangle "Dynamic" as dynamic {
agent "'dynamic' \n type" as dynamicType [[https://www.dartlang.org/dart-2.0#strong-mode-and-static-typing]]
agent "noSuchMethod" as noSuchMethod [[https://api.dartlang.org/stable/dart-core/Object/noSuchMethod.html]]
agent "Mirrors" as mirrors [[https://www.dartlang.org/articles/dart-vm/reflection-with-mirrors]]
}
rectangle "Various" as various {
agent "String \n Interpolation" as interpolation [[https://www.dartlang.org/guides/language/language-tour#strings]]
agent "Null aware \n operators" as nullAware [[http://news.dartlang.org/2015/08/dart-112-released-with-null-aware.html]]
}
control "<size:20>Dart Language</size>\n<size:20>Sweet Features</size>" as dartLang
dartLang -up-> functional
dartLang -> async
dartLang -> various
dartLang -> dynamic
dartLang -> reactive
dartLang -up-> objectOriented
@enduml