owlps/doc/figures/positioner_class_diagram_si...

209 lines
4.5 KiB
Plaintext

@startuml
'''''''''''''''''''
' Syntax reminder '
'''''''''''''''''''
'
' <|-- ' Extension
' *-- ' Composition
' o-- ' Agregation
'
' Orientation of the links:
' 2 dashes: vertical
' 1 dash: horizontal
''''''''''''''
' Parameters '
''''''''''''''
hide empty members
title (Somewhat simplified) OwlPS Positioner's class diagram
''''''''''''''
' Executable '
''''''''''''''
class "owlps-positionerd" as owlps_positionerd << (X, orchid) executable >>
owlps_positionerd *-- Positioning
'''''''''''''''''''''
' Utilitary classes '
'''''''''''''''''''''
' Note: for the sake of clarity, PosUtil and posexcept are not
' associated with the other classes, but they should actually be
' linked with pretty much all of them.
package "Utilitary classes" {
class PosUtil << static >>
note top
The functions of <i>PosUtil</i> are
used by too many classes to
link them all in this diagram
end note
class posexcept
note bottom
<i>posexcept</i> is the super-class of
a bunch of exception classes that
do not appear in this diagram
end note
' Text file reading and writing
class TextFileWriter
class TextFileReader
CSVFileReader <|-- TextFileReader
}
'''''''''''''''''''''''''
' Configuration classes '
'''''''''''''''''''''''''
package "Configuration classes" {
class Configuration << static >>
UserInterface ..> Configuration
}
owlps_positionerd *-- UserInterface
Configuration <.. Positioning
''''''''''''''''''''''
' Data input classes '
''''''''''''''''''''''
package "Data input classes" {
class InputDataReader
MobilesReaderCSV <.. InputDataReader
CapturePointsReaderCSV <.. InputDataReader
TopologyReaderCSV <.. InputDataReader
}
owlps_positionerd *-- InputDataReader
UserInterface --> InputDataReader
CSVFileReader <-- MobilesReaderCSV
CSVFileReader <-- CapturePointsReaderCSV
CSVFileReader <-- TopologyReaderCSV
'''''''''''''''''
' Input classes '
'''''''''''''''''
package "Input classes" {
class Input
abstract InputMedium --* Input
InputCSV --|> InputMedium
InputUDPSocket --|> InputMedium
abstract InputLogMedium --* Input
InputLogCSV --|> InputLogMedium
}
Input --* Positioning
InputMedium <-- InputDataReader
CSVFileReader <-- InputCSV
TextFileWriter <-- InputLogCSV
'''''''''''''''''''''''''''''''''
' Positioning algorithm classes '
'''''''''''''''''''''''''''''''''
package "Positioning algorithm classes" {
abstract PositioningAlgorithm
RealPosition --|> PositioningAlgorithm
abstract TrilaterationAlgorithm --|> PositioningAlgorithm
InterlinkNetworks --|> TrilaterationAlgorithm
FBCM --|> TrilaterationAlgorithm
abstract TrilaterationMethod <-- TrilaterationAlgorithm
MinMax --|> TrilaterationMethod
abstract CartographyAlgorithm --|> PositioningAlgorithm
NSS --|> CartographyAlgorithm
FRBHMBasic --|> FBCM
FRBHMBasic --|> NSS
}
PositioningAlgorithm <.. Positioning
''''''''''''''''''
' Output classes '
''''''''''''''''''
package "Output classes" {
class Output
abstract OutputMedium --* Output
OutputCSV --|> OutputMedium
OutputTerminal --|> OutputMedium
abstract OutputNetworkSocket --|> OutputMedium
OutputUDPSocket --|> OutputNetworkSocket
OutputTCPSocketEvAAL --|> OutputNetworkSocket
}
Output --* Positioning
TextFileWriter <-- OutputCSV
''''''''''''''''
' Data classes '
''''''''''''''''
package "Data classes" {
class Stock << static >>
' Points
class Point3D
Waypoint --|> Point3D
ReferencePoint --|> Point3D
ReferencePoint --o Stock
' Deployment area
Building --o Stock
Area --o Building
Waypoint --o Stock
Waypoint -- Area
Waypoint -- Building
' Devices
WifiDevice <|-- Mobile
Mobile --o Stock
WifiDevice <|-- CapturePoint
CapturePoint --o Stock
' Requests & results
Request <-- InputMedium
Mobile <-- Request
Timestamp --* Request
Measurement --* Request
Measurement -- CapturePoint
Result -- Request
Result *-- Point3D
ResultList *-- Result
CalibrationRequest --|> Request
ReferencePoint -- CalibrationRequest
Direction --* CalibrationRequest
}
owlps_positionerd o-- Stock
ReferencePoint <-- Positioning
ResultList <-- Output
@enduml
' vim: tw=0