@startuml
skinparam defaultFontSize 15

    namespace de.sswis.view {

    }

    namespace de.sswis.controller {


        namespace de.sswis.controller.handlers {
        }
        together {

            class de.sswis.controller.ModelServiceLoader [[ModelServiceLoader.html]] {
                        +getAdaptAlgorithmList(): List<AdaptationAlgorithm>
                        +getPairAlgorithmList(): List<PairingAlgorithm>
                        +getRankAlgorithmList(): List<RankingAlgorithm>
                        +getConditionList(): List<Condition>
                        +getBaseStrategyList(): List<BaseStrategy>
                    }

            class de.sswis.controller.ModelParser [[ModelParser.html]] {
                        +parseSimulationToVMResult(Simulation): VMResult
                        +parseVMCombinedStrategyToCombinedStrategy(VMCombinedStrategy): CombinedStrategy
                        +parseVMConfigurationToConfigurations(VMConfiguration): Collection<Configuration>
                        +parseVMGameToGame(VMGame): Game
                        +parseVMGroupToGroup(VMGroup): Group
                        +parseVMInitializationToInitialization(VMInitialization): Collection<Initialization>
                        +parseVMStrategyToStrategy(VMStrategy): Strategy
                    }

            class de.sswis.controller.FileManager [[FileManager.html]] {
                +saveConfiguration(VMConfiguration): void
                +saveGame(VMGame): void
                +saveInitalization(VMInitialization): void
                +saveCombinedStrategy(VMCombinedStrategy): void
                +saveResult(VMResult): void
                +loadConfigurations(String): VMConfiguration
                +loadGame(String): VMGame
                +loadInitalization(String): VMInitialization
                +loadCombinedStrategy(String): VMCombinedStrategy
                +loadResult(String): VMResult
                +deleteConfiguration(String): void
                +deleteGame(String): void
                +deleteInitalization(String): void
                +deleteCombinedStrategy(String): void
                +deleteResult(String): void
            }

            class de.sswis.controller.ModelProvider [[ModelProvider.html]] {
                {static} +getInstance(): ModelProvider
                        +addConfigurations(Configuration): void
                        +addGame(Game): void
                        +addCombinedStrategy(CombinedStrategy): void
                        +addInitialization(Initialization): void
                        +addStrategy(Strategy): void
                        +deleteConfiguration(String): void
                        +deleteGame(String): void
                        +deleteCombinedStrategy(String): void
                        +deleteInitialization(String): void
                        +deleteStrategy(String): void

        }

        together {
            interface de.sswis.controller.AbstractGuiFactory [[AbstractGuiFactory.html]] {
                {abstract} +createMainView(): AbstractMainView
                        {abstract} +createShowResultView(): AbstractShowResultView
                        {abstract} +createCompareResultsView(): AbstractShowCompareView
                        {abstract} +createMultiResultsView(): AbstractShowMultiResultView
                        {abstract} +createManageConfigurationsView(): AbstractManageConfigurationsView
                        {abstract} +createManageInitializationsView(): AbstractManageInitializationsView
                        {abstract} +createManageStrategiesView(): AbstractManageStrategiesView
                        {abstract} +createManageCombinedStrategiesView(): AbstractManageCombinedStrategiesView
                        {abstract} +createManageGamesView(): AbstractManageGamesView
                        {abstract} +createManageResultsView(): AbstractManageResultsView
                        {abstract} +createNewConfigurationView(): AbstractNewConfigurationView
                        {abstract} +createNewInitializationView(): AbstractNewInitializationView
                        {abstract} +createNewStrategyView(): AbstractNewStrategyView
                        {abstract} +createNewCombinedStrategyView(): AbstractNewCombinedStrategyView
                        {abstract} +createNewGameView(): AbstractNewGameView
                    }

            class de.sswis.controller.SwingGuiFactory [[SwingGuiFactory.html]] {
                +createMainView(): AbstractMainView
                        +createShowResultView(): AbstractShowResultView
                        +createCompareResultsView(): AbstractShowCompareView
                        +createMultiResultsView(): AbstractShowMultiResultView
                        +createManageConfigurationsView(): AbstractManageConfigurationsView
                        +createManageInitializationsView(): AbstractManageInitializationsView
                        +createManageStrategiesView(): AbstractManageStrategiesView
                        +createManageCombinedStrategiesView(): AbstractManageCombinedStrategiesView
                        +createManageGamesView(): AbstractManageGamesView
                        +createManageResultsView(): AbstractManageResultsView
                        +createNewConfigurationView(): AbstractNewConfigurationView
                        +createNewInitializationView(): AbstractNewInitializationView
                        +createNewStrategyView(): AbstractNewStrategyView
                        +createNewCombinedStrategyView(): AbstractNewCombinedStrategyView
                        +createNewGameView(): AbstractNewGameView
                    }

        }

        together {

            interface de.sswis.controller.SimulationObserver [[SimulationObserver.html]] {
                        {abstract} +update(Simulation): void
            }

            class de.sswis.controller.ViewNotifier [[ViewNotifier.html]] {
                        +ViewNotifier(AbstractMainView)
                        +update(Simulation): void
            }

        }


        de.sswis.controller.Test -[hidden]--> de.sswis.controller.handlers
        hide de.sswis.controller.Test

        de.sswis.controller.ModelProvider -[hidden]-> de.sswis.controller.FileManager
        de.sswis.controller.ModelProvider -[hidden]> de.sswis.controller.handlers
        de.sswis.controller.ModelProvider -[hidden]--> de.sswis.controller.handlers
        de.sswis.controller.ModelProvider -[hidden]--> de.sswis.controller.ModelParser
        de.sswis.controller.FileManager -[hidden]-> de.sswis.controller.ModelServiceLoader
        de.sswis.controller.FileManager -[hidden]> de.sswis.controller.handlers
        de.sswis.controller.ModelServiceLoader -[hidden]> de.sswis.controller.handlers
        de.sswis.controller.ModelServiceLoader -[hidden]-> de.sswis.controller.ModelParser

        de.sswis.controller.handlers -[hidden]> de.sswis.controller.AbstractGuiFactory
        de.sswis.controller.handlers -[hidden]> de.sswis.controller.SimulationObserver
        de.sswis.controller.ModelParser -[hidden]> de.sswis.controller.handlers

        de.sswis.controller.SwingGuiFactory -[hidden]-> de.sswis.controller.SimulationObserver

        de.sswis.view o-- "1" de.sswis.controller.handlers : actionHandler
        de.sswis.controller.handlers --> "1" de.sswis.view : view
        de.sswis.controller.handlers --> "1" de.sswis.controller.AbstractGuiFactory : factory
        de.sswis.controller.handlers -> "1" de.sswis.controller.FileManager :fileManager
        de.sswis.controller.handlers -> "1" de.sswis.controller.ModelServiceLoader : loader
        de.sswis.controller.handlers --> "1" de.sswis.controller.ModelProvider : modelProvider
        de.sswis.controller.handlers --> "1..*" de.sswis.controller.SimulationObserver : observer
        de.sswis.controller.handlers -> "1" de.sswis.controller.ModelParser : parser
        de.sswis.controller.ModelProvider -> "1" de.sswis.controller.ModelProvider: instance
        de.sswis.controller.SwingGuiFactory -> "*" de.sswis.view
        de.sswis.controller.ViewNotifier -> "1" de.sswis.view : mainView
        de.sswis.controller.AbstractGuiFactory <|.. de.sswis.controller.SwingGuiFactory
        de.sswis.controller.SimulationObserver <|.. de.sswis.controller.ViewNotifier
    }

@enduml

PlantUML version 1.2018.09(Fri Jul 27 18:58:18 CEST 2018)
(APACHE source distribution)
Java Runtime: Java(TM) SE Runtime Environment
JVM: Java HotSpot(TM) 64-Bit Server VM
Java Version: 11.0.1+13-LTS
Operating System: Windows 10
OS Version: 10.0
Default Encoding: Cp1252
Language: de
Country: DE