diff --git a/Implementierungsphase/Klassendiagramme.md b/Implementierungsphase/Klassendiagramme.md
index ba68a2d..a7e416c 100644
--- a/Implementierungsphase/Klassendiagramme.md
+++ b/Implementierungsphase/Klassendiagramme.md
@@ -2,4 +2,17 @@ Hier werden die neuen Versionen der Klassendiagramme veröffentlicht:
* [ClassChart_V4.0](../uploads/Implementierungsphase/Klassendiagramme/ClassChart_V4.0.svg)
* [ClassChart_V4.1](../uploads/Implementierungsphase/Klassendiagramme/ClassChart_V4.1.svg)
-* [ClassChart_V4.2](../uploads/Implementierungsphase/Klassendiagramme/ClassChart_V4.2.svg)
\ No newline at end of file
+* [ClassChart_V4.2](../uploads/Implementierungsphase/Klassendiagramme/ClassChart_V4.2.svg)
+
+Präsentationsfertige Diagramme:
+
+* [client](../uploads/Implementierungsphase/Klassendiagramme/client.svg)
+* [clientMessage](../uploads/Implementierungsphase/Klassendiagramme/clientMessage.svg)
+* [fields](../uploads/Implementierungsphase/Klassendiagramme/fields.svg)
+* [gui](../uploads/Implementierungsphase/Klassendiagramme/gui.svg)
+* [model.game.client](../uploads/Implementierungsphase/Klassendiagramme/model.game.client.svg)
+* [model.game.server](../uploads/Implementierungsphase/Klassendiagramme/model.game.server.svg)
+* [model.model](../uploads/Implementierungsphase/Klassendiagramme/model.model.svg)
+* [model](../uploads/Implementierungsphase/Klassendiagramme/model.svg)
+* [notification](../uploads/Implementierungsphase/Klassendiagramme/notification.svg)
+* [serverMessage](../uploads/Implementierungsphase/Klassendiagramme/serverMessage.svg)
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/client.svg b/uploads/Implementierungsphase/Klassendiagramme/client.svg
new file mode 100644
index 0000000..39f3bc3
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/client.svg
@@ -0,0 +1 @@
+AcceptTrade close(): void createOverlayBackground(): Geometry escape(): void BackgroundListener cursorEntered(CursorMotionEvent, Spatial, Spatial): void cursorExited(CursorMotionEvent, Spatial, Spatial): void cursorMoved(CursorMotionEvent, Spatial, Spatial): void Bankrupt close(): void escape(): void createOverlayBackground(): Geometry BoardSynchronizer receivedEvent(ItemAddedEvent): void receivedEvent(ItemRemovedEvent): void translate(Item): Spatial addExisting(): void BuildingPropertyCard escape(): void close(): void BuyHouse playerProperties: List<BuildingProperty> createPropertyDropdown(): Container update(float): void escape(): void onDropdownSelectionChanged(Selector<String>): void close(): void CameraController position: int fieldIdToVector(int): Vector3f setPosition(float, float): void update(float): void ChoosePartner update(float): void onDropdownSelectionChanged(String): void createButtonContainer(): Container close(): void createDropdown(): Container addBackgroundImage(): void escape(): void ClickListener cursorExited(CursorMotionEvent, Spatial, Spatial): void click(CursorButtonEvent, Spatial, Spatial): void cursorEntered(CursorMotionEvent, Spatial, Spatial): void cursorButtonEvent(CursorButtonEvent, Spatial, Spatial): void ConfirmTrade escape(): void close(): void FoodFieldCard escape(): void createOverlayBackground(): Geometry close(): void GameAppState initializeGuiComponents(): void click(boolean): void disableState(): void layoutGuiComponents(): void update(float): void addGuiComponents(): void enableState(): void GameBoardSynchronizer calculateRotationAngle(Rotation): float createBox(Figure): Spatial visit(Figure): Spatial createColoredMaterial(ColorRGBA): Material GameMusic volume: float enabled: boolean initialize(AppStateManager, Application): void enabledInPreferences(): boolean loadSound(Application, String): AudioNode toggleSound(): void volumeInPreferences(): float GameSound volume: float enabled: boolean button(): void looser(): void gulag(): void tradeAccepted(): void receivedEvent(SoundEvent): void volumeInPreferences(): float moneyLost(): void toggleSound(): void diceRoll(): void enabledInPreferences(): boolean loadSound(Application, String): AudioNode initialize(AppStateManager, Application): void moneyCollect(): void eventCard(): void tradeRejected(): void passStart(): void winner(): void GateFieldCard close(): void createOverlayBackground(): Geometry escape(): void GridListener reshape(GuiControl, Vector3f, Vector3f): void GridModelDelegate rowCount: int columnCount: int version: long object: GridModel<Panel> createReference(): VersionedReference<GridModel<Panel>> getCell(int, int, Panel): Panel setCell(int, int, Panel): void GridPanel halignements: HAlignment[] row: int visibleRows: int columnwidths: Float[] columnHalignement: HAlignment[] layout: SpringGridLayout visibleColumns: int model: GridModel<Panel> column: int rowheights: Float[] rowheight: Float[] preparegridsizes(Integer, boolean): boolean setRowheight(Float[], boolean): void setcheckedsize(Float, int, boolean, boolean): void setHalignements(HAlignment, int): void checkexistinghal(HAlignment[]): boolean setAlpha(float, boolean): void setHalignementchecked(HAlignment, int, boolean): void setColumnwidths(Float, int): void updateLogicalState(float): void getCell(int, int): Panel setRowheight(Float, int): void setLocation(int, int): void toString(): String refreshGrid(): void setHalignements(HAlignment[], boolean): void setVisibleSize(int, int): void initializeDefaultStyles(Attributes): void setColumnwidths(Float[], boolean): void Gulag close(): void createOverlayBackground(): Geometry escape(): void GulagInfo close(): void escape(): void «enumeration» ListAction values(): ListAction[] valueOf(String): ListAction ListBox T cellRenderer: ValueRenderer<T> listCommands: Map<ListAction, List<Command<ListBox>>> clickCommands: List<Command<ListBox>> slider: Slider gridPanel: GridPanel model: VersionedList<T> visibleItems: int visibleColumns: int scrollOnHover: boolean selectionModel: SelectionModel selectedItem: T selectionMode: SelectionMode getListCell(int, int, Panel): Panel replace_LB_value(int, int, T): void add_StringValue(Integer, String[], boolean): void lbaddvalue(int, String): void remove_Row(int): void getLBvalues(int): List<T> getlbvalue(int): String[] resetModelhorRange(): void lbaddvalue(String): void lbaddvalue(String[]): void prepare_Values_foradd(List<T>, boolean): List<T> add_StringValue(String[]): void updateLogicalState(float): void setAlpha(float, boolean): void refreshSelector(): void add_StringValue(int, String): void activate(): void adjustothercolumnmodel(): void add_StringValue(int, String[]): void lbbaddvalue(int, String[], boolean): void addClickCommands(Command<ListBox>[]): void removeClickCommands(Command<ListBox>[]): void initializeDefaultStyles(Styles, Attributes): void refreshActivation(): void deactivate(): void check_columns(int): void addCommands(ListAction, Command<ListBox>[]): void add_Values(int, int, T): void sliderhorsetup(): void add_StringValue(String): void setavailableColumns(int): void multi_Valueadd(int, List<T>): void detachItemListeners(): void lbremovevalue(int): void scroll(int): void resetModelRange(): void lbaddvalue(int, String[]): void gethorizontalSlider(): Slider add_StringValue(int, int, String): void lbaddvalue(String[], boolean): void add_Values(Integer, List<T>): void multi_Stringadd(int, String[]): void prepare_Stringvalue_foradd(String[], boolean): String[] getCommands(ListAction): List<Command<ListBox>> setSelectorColor(ColorRGBA, boolean): void replace_LB_StringValues(int, String[], boolean): void lbcolumnadjust(): void toString(): String gridResized(Vector3f, Vector3f): void lbreplacevalue(int, String[], boolean): void lbreplacevalue(int, int, String): void lbreplacevalue(int, String): void MonopolyApp id: int dialogManager: DialogManager infoText: String config: MonopolyAppConfig draw: Draw executor: ExecutorService gameLogic: ClientGameLogic receivedEvent(InfoTextEvent): void attachGameMusic(): void requestClose(boolean): void closeApp(): void connect(): void disconnect(): void setupInput(): void makeServerConnection(): ServerConnection handleB(boolean): void receivedEvent(ClientStateEvent): void attachGameSound(): void simpleInitApp(): void confirmDialog(String, Runnable): void setupStates(): void escape(boolean): void setupGui(): void errorDialog(String): void simpleUpdate(float): void main(String[]): void makeSettings(): AppSettings close(): void stop(boolean): void MonopolyAppConfig resolutionWidth: int resolutionHeight: int showStatistics: boolean topColor: ColorRGBA showSettings: boolean convertToType(String, Class<?>): Object useRetinaFrameBuffer(): boolean useGammaCorrection(): boolean fullScreen(): boolean makeColorRGBA(String): ColorRGBA MonopolyAppState app: MonopolyApp gameLogic: ClientGameLogic enabled: boolean disableState(): void enableState(): void initialize(AppStateManager, Application): void NetworkSupport connected: boolean id: int app: MonopolyApp clientConnected(Client): void connect(): void disconnect(): void messageReceived(Client, Message): void clientDisconnected(Client, DisconnectInfo): void send(ClientMessage): void initNetwork(String, int): void NoMoneyWarning close(): void createOverlayBackground(): Geometry escape(): void ParticleEffectFactory RejectTrade escape(): void createOverlayBackground(): Geometry close(): void Rent createRentContainer(String, int): Container createOverlayBackground(): Geometry close(): void centerContainers(): void escape(): void createBackgroundContainer(): Container RepayMortage playerProperties: List<PropertyField> onDropdownSelectionChanged(Selector<String>): void update(float): void close(): void createPropertyDropdown(): Container escape(): void «interface» SelectionActionListener T onSelectionChanged(T): void «interface» SelectionListener selectionChanged(Spatial, Spatial): void SelectorClickListener click(CursorButtonEvent, Spatial, Spatial): void SellHouse playerProperties: List<BuildingProperty> close(): void update(float): void onDropdownSelectionChanged(Selector<String>): void escape(): void createPropertyDropdown(): Container SliderValueChangeListener controlUpdate(float): void controlRender(RenderManager, ViewPort): void SoundSlider update(): void TakeMortage playerProperties: List<PropertyField> onDropdownSelectionChanged(Selector<String>): void close(): void createPropertyDropdown(): Container escape(): void update(float): void TestWorld calculateFieldPosition(int, int): Vector3f createBoard(): void receivedEvent(EventCardEvent): void animateMovementAlongPath(Spatial, List<Vector3f>): void initializeScene(): void receivedEvent(PopUpEvent): void calculatePath(int, int, int): List<Vector3f> updateHousesOnBoard(): void setSkyColor(): void receivedEvent(UpdatePlayerView): void getFieldIDFromPosition(Vector3f): int addLighting(): void calculateCornerPosition(Vector3f, Vector3f): Vector3f movePlayerFigure(Player): void createPlayerFigures(): void calculateBuildingPosition(int): Vector3f calculateRotationForField(int): Quaternion calculatePlayerIndexOnField(int, int): int TimeOut createOverlayBackground(): Geometry close(): void escape(): void Toolbar createPropertyMenuButton(): Button createEndTurnButton(): Button createDiceLabel(String): Label receivedEvent(DiceRollEvent): void receivedEvent(ButtonStatusEvent): void escape(): void receivedEvent(UpdatePlayerView): void createToolbarContainer(): Container showFinalDiceResult(DiceRollEvent): void diceToString(int): String createDiceSection(): Container createDiceContainer(Label): Container createTradeButton(): Button createDiceDisplay(): Container setDiceIcon(Label, String): void close(): void update(): void startDiceAnimation(): void animateDice(long): void createBackground(): QuadBackgroundComponent Toolbar2 addDiceRollButton(): void remove(): void calculatePosition(int): Vector3f addButton(String, int): void rollDice(): void initializeButtons(): void createPositionDisplay(): BitmapText moveCube(int): void updatePositionDisplay(): void VersionedList T object: List<T> version: long size(): int createReference(): VersionedReference<List<T>> add(int, T): void wrap(List<T>): VersionedList<T> get(int): T remove(int): T incrementVersion(): void set(int, T): T VolumeSlider update(): void build metaClass: MetaClass main(String[]): void getProperty(String): Object run(): Object invokeMethod(String, Object): Object setProperty(String, Object): void 1 app 1 1 backgroundListener 1 1 app 1 1 bankrupt 1 1 app 1 1 buildingProperty 1 1 app 1 1 buyHouse 1 1 app 1 1 clickListener 1 1 app 1 1 app 1 1 foodField 1 1 testWorld 1 1 app 1 1 particleFactory 1 1 app 1 1 gateField 1 1 app 1 1 app 1 1 grid 1 1 selectorlistener 1 1 model 1 1 config 1 1 repayMortage 1 1 app 1 1 sellHouse 1 1 app 1 1 takeMortage 1 1 app 1 1 testWorld 1 1 app 1 1 timeOut 1 1 app 1 1 app 1 1 app 1 1 app 1 1 app 1 1 app 1 1 app 1 1 sound 1 1 cameraController 1 1 toolbar 1 1 app 1 1 app 1 1 music 1
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/clientMessage.svg b/uploads/Implementierungsphase/Klassendiagramme/clientMessage.svg
new file mode 100644
index 0000000..9328664
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/clientMessage.svg
@@ -0,0 +1 @@
+AlterProperty keyword: String properties: Set<Integer> accept(ClientInterpreter, int): void BuyPropertyResponse accept(ClientInterpreter, int): void «interface» ClientInterpreter received(AlterProperty, int): void received(ViewAssetsRequest, int): void received(TradeOffer, int): void received(TradeResponse, int): void received(EndTurn, int): void received(PlayerReady, int): void received(BuyPropertyResponse, int): void received(RollDice, int): void received(NotificationAnswer, int): void ClientMessage accept(ClientInterpreter, int): void EndTurn accept(ClientInterpreter, int): void NotificationAnswer A: String accept(ClientInterpreter, int): void PlayerReady figure: String name: String isReady: boolean startMoney: int accept(ClientInterpreter, int): void RollDice accept(ClientInterpreter, int): void TradeOffer tradeHandler: TradeHandler accept(ClientInterpreter, int): void TradeResponse accepted: boolean tradeHandler: TradeHandler accept(ClientInterpreter, int): void ViewAssetsRequest accept(ClientInterpreter, int): void
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/fields.svg b/uploads/Implementierungsphase/Klassendiagramme/fields.svg
new file mode 100644
index 0000000..841b6bf
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/fields.svg
@@ -0,0 +1 @@
+BoardManager board: List<Field> propertiesWithBuildings: List<BuildingProperty> getIndexOfField(Field): int getPropertyFields(List<Integer>): List<PropertyField> getFieldByName(String): Field canBuild(BuildingProperty): boolean createBoard(): List<Field> getFieldAtIndex(int): Field canSell(BuildingProperty): boolean BuildingProperty hotel: int allRent: List<Integer> color: FieldColor housePrice: int houses: int accept(Player): void calcRent(): int sell(): boolean build(): boolean EventField accept(Player): void Field name: String id: int accept(Player): void «enumeration» FieldColor color: ColorRGBA values(): FieldColor[] valueOf(String): FieldColor FineField fine: int accept(Player): void FoodField accept(Player): void calcRent(): int GateField calcRent(): int accept(Player): void GoField accept(Player): void GulagField bailCost: int accept(Player): void PropertyField owner: Player hypo: int price: int mortgaged: boolean calcRent(): int TestStreckeField addMoney(int): void collectMoney(): int accept(Player): void WacheField accept(Player): void create create create create create create create create create 1 color 1
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/gui.svg b/uploads/Implementierungsphase/Klassendiagramme/gui.svg
new file mode 100644
index 0000000..281d279
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/gui.svg
@@ -0,0 +1 @@
+BoardSynchronizer BoardSynchronizer(Board, Node): receivedEvent(ItemAddedEvent): void receivedEvent(ItemRemovedEvent): void addExisting(): void translate(Item): Spatial CameraController position: int CameraController(Camera): setPosition(float, float): void update(float): void fieldIdToVector(int): Vector3f ChoosePartner ChoosePartner(MonopolyApp): escape(): void update(float): void close(): void addBackgroundImage(): void createDropdown(): Container onDropdownSelectionChanged(String): void createButtonContainer(): Container GameBoardSynchronizer GameBoardSynchronizer(MonopolyApp, Node, Board): visit(Figure): Spatial calculateRotationAngle(Rotation): float createColoredMaterial(ColorRGBA): Material createBox(Figure): Spatial ParticleEffectFactory ParticleEffectFactory(MonopolyApp): «interface» SelectionActionListener T onSelectionChanged(T): void SliderValueChangeListener SliderValueChangeListener(): controlRender(RenderManager, ViewPort): void controlUpdate(float): void SoundSlider SoundSlider(GameSound): update(): void TestWorld TestWorld(MonopolyApp): initializeScene(): void receivedEvent(EventCardEvent): void receivedEvent(PopUpEvent): void receivedEvent(UpdatePlayerView): void calculatePlayerIndexOnField(int, int): int setSkyColor(): void calculateBuildingPosition(int): Vector3f calculateRotationForField(int): Quaternion createBoard(): void calculateCornerPosition(Vector3f, Vector3f): Vector3f calculatePath(int, int, int): List<Vector3f> movePlayerFigure(Player): void animateMovementAlongPath(Spatial, List<Vector3f>): void addLighting(): void createPlayerFigures(): void updateHousesOnBoard(): void calculateFieldPosition(int, int): Vector3f getFieldIDFromPosition(Vector3f): int Toolbar Toolbar(MonopolyApp): receivedEvent(DiceRollEvent): void receivedEvent(ButtonStatusEvent): void receivedEvent(UpdatePlayerView): void close(): void update(): void escape(): void createDiceDisplay(): Container createEndTurnButton(): Button createDiceLabel(String): Label createPropertyMenuButton(): Button createToolbarContainer(): Container createBackground(): QuadBackgroundComponent showFinalDiceResult(DiceRollEvent): void createDiceSection(): Container diceToString(int): String createTradeButton(): Button startDiceAnimation(): void animateDice(long): void setDiceIcon(Label, String): void createDiceContainer(Label): Container VolumeSlider VolumeSlider(GameMusic): update(): void «package» package pp.monopoly.client.gui.hslider «package» package pp.monopoly.client.gui.popups create 1 particleFactory 1 1 cameraController 1 create create 1 toolbar 1 create
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/model.game.client.svg b/uploads/Implementierungsphase/Klassendiagramme/model.game.client.svg
new file mode 100644
index 0000000..176cd7c
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/model.game.client.svg
@@ -0,0 +1 @@
+ActiveState ClientGameLogic board: Board infoText: String boardManager: BoardManager state: ClientState playerHandler: PlayerHandler tradeHandler: TradeHandler send(ClientMessage): void removeListener(GameEventListener): void movePreview(IntPoint): void update(float): void received(JailEvent): void playSound(Sound): void received(GameOver): void received(NotificationMessage): void addListener(GameEventListener): void received(TradeReply): void notifyListeners(GameEvent): void received(TradeRequest): void received(GameStart): void received(PlayerStatusUpdate): void received(TimeOutWarning): void received(DiceResult): void received(EventDrawCard): void received(ViewAssetsResponse): void received(NextPlayerTurn): void received(BuyPropertyRequest): void «interface» ClientSender send(ClientMessage): void ClientState name: String showTurn(): boolean loadMap(File): void update(float): void entry(): void movePreview(IntPoint): void LobbyState «interface» MonopolyClient gameLogic: ClientGameLogic config: MonopolyClientConfig enqueue(Runnable): void MonopolyClientConfig map: File «interface» ServerConnection connected: boolean disconnect(): void connect(): void WaitForTurnState create 1 clientSender 1 1 state 1 1 logic 1 create create
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/model.game.server.svg b/uploads/Implementierungsphase/Klassendiagramme/model.game.server.svg
new file mode 100644
index 0000000..a32ee9b
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/model.game.server.svg
@@ -0,0 +1 @@
+ActiveState rollDice(): DiceResult payBail(): void useJailCard(): void Dice rollDice(): int JailState payBail(): void rollDice(): DiceResult? useJailCard(): void Player propertyFields: List<PropertyField> properties: List<Integer> color: PlayerColor name: String id: int accountBalance: int handler: PlayerHandler figure: Figure numHouses: int numHotels: int fieldID: int numJailCard: int state: PlayerState earnMoney(int): void finishTurn(): boolean visit(BuildingProperty): Void removeJailCard(): void buyProperty(PropertyField): void useJailCard(): void addProperty(Integer): void sellProperty(PropertyField): void rollDice(): DiceResult toString(): String setPosition(int): int visit(GoField): Void visit(TestStreckeField): Void visit(FineField): Void pay(int): void move(int): int setActive(): void canFinishTurn(): boolean visit(EventField): Void payBail(): void addJailCard(): void visit(GateField): Void visit(FoodField): Void visit(WacheField): Void getNumProp(PropertyField): int setPositionWithMoney(int): int bankrupt(): void visit(GulagField): Void removeProperty(Integer): void moveToJail(): void «enumeration» PlayerColor color: ColorRGBA values(): PlayerColor[] valueOf(String): PlayerColor PlayerHandler players: List<Player> playerCount: int logic: ServerGameLogic startBalance: int extraTurn(Player): void allPlayersReady(): boolean addPlayer(Player): void getPlayerAtIndex(int): Player nextPlayer(): Player getPlayerById(int): Player randomOrder(): void setPlayerReady(Player, boolean): void removePlayer(Player): void «interface» PlayerState rollDice(): DiceResult payBail(): void useJailCard(): void ServerGameLogic boardManager: BoardManager deckHelper: DeckHelper state: ServerState getPlayerById(int): Player received(AlterProperty, int): void received(EndTurn, int): void received(TradeResponse, int): void executeTrade(Player, Player, Set<PropertyField>, Set<PropertyField>): void received(RollDice, int): void received(NotificationAnswer, int): void addPlayer(Player): Player updateAllPlayers(): void addPlayer(int): Player received(ViewAssetsRequest, int): void received(BuyPropertyResponse, int): void send(Player, ServerMessage): void received(PlayerReady, int): void received(TradeOffer, int): void «interface» ServerSender send(int, ServerMessage): void «enumeration» ServerState valueOf(String): ServerState values(): ServerState[] WaitForTurnState payBail(): void useJailCard(): void rollDice(): DiceResult? create create create 1 handler 1 1 extra 1 1 state 1 create create 1 logic 1 create 1 playerHandler 1 1 serverSender 1 1 state 1
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/model.model.svg b/uploads/Implementierungsphase/Klassendiagramme/model.model.svg
new file mode 100644
index 0000000..9a7a3b0
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/model.model.svg
@@ -0,0 +1 @@
+Board items: List<Item> height: int width: int remove(Item): void clear(): void toString(): String getItems(Class<T>): Stream<T> isValid(int, int): boolean notifyListeners(GameEvent): void addItem(Item): void isValid(IntPosition): boolean BoardManager board: List<Field> propertiesWithBuildings: List<BuildingProperty> getIndexOfField(Field): int getPropertyFields(List<Integer>): List<PropertyField> getFieldByName(String): Field canBuild(BuildingProperty): boolean createBoard(): List<Field> getFieldAtIndex(int): Field canSell(BuildingProperty): boolean BuildingProperty hotel: int allRent: List<Integer> color: FieldColor housePrice: int houses: int accept(Player): void calcRent(): int sell(): boolean build(): boolean Card description: String keyword: String accept(DeckHelper, Player): void DeckHelper spendierhosenUnibar(Player): void spoTesten(Player): void vpEinstandsparty(Player): void gulakFrei(Player): void partyGewinn(Player): void verkaufenVersicherungen(Player): void drawCard(): Card spoparty(Player): void blutspendenSonderurlaub(Player): void partyEskaliert(Player): void hausfeierSturz(Player): void schimmelGulak(Player): void dienstreiseLourd(Player): void shuffle(): void dienstsportGym(Player): void dienstfuehrerschein(Player): void jodelEispenis(Player): void pruefungsphaseKrank(Player): void geldbeutelOktoberfest(Player): void bergmarsch(Player): void pubquiz(Player): void visit(Card, Player): void maibockOrganisiert(Player): void naechstesMonatsgehalt(Player): void lobChef(Player): void inventurHaeuserHotels(Player): void kranzExmatrikulation(Player): void jahresabschlussantreten(Player): void namensschildTruppenkueche(Player): void dienstKfzBlitzer(Player): void rueckstuferantrag(Player): void partynachtGulak(Player): void antretenVerschlafen(Player): void befoerderung(Player): void EventField accept(Player): void Field name: String id: int accept(Player): void «enumeration» FieldColor color: ColorRGBA values(): FieldColor[] valueOf(String): FieldColor «interface» FieldVisitor T visit(WacheField): T visit(BuildingProperty): T visit(GulagField): T visit(FineField): T visit(GoField): T visit(GateField): T visit(TestStreckeField): T visit(FoodField): T visit(EventField): T Figure length: int type: String maxX: int damaged: Set<IntPoint> minX: int minY: int x: int maxY: int rotation: Rotation destroyed: boolean y: int rot: Rotation fieldIdToPosition(int): IntPoint contains(IntPosition): boolean accept(VoidVisitor): void accept(Visitor<T>): T collidesWith(Figure): boolean contains(int, int): boolean moveTo(int, int): void hit(int, int): boolean fieldIdToRotation(int): Rotation moveTo(IntPosition): void hit(IntPosition): boolean rotated(): void moveTo(int): void toString(): String FineField fine: int accept(Player): void FoodField accept(Player): void calcRent(): int GateField calcRent(): int accept(Player): void GoField accept(Player): void GulagField bailCost: int accept(Player): void IntPoint y: int x: int hashCode(): int toString(): String equals(Object): boolean «interface» IntPosition y: int x: int «interface» Item accept(VoidVisitor): void accept(Visitor<T>): T LimitedLinkedList E maxSize: int add(E): boolean PropertyField owner: Player hypo: int price: int mortgaged: boolean calcRent(): int «enumeration» Rotation valueOf(String): Rotation dx(): int values(): Rotation[] rotate(): Rotation dy(): int TestStreckeField addMoney(int): void collectMoney(): int accept(Player): void TradeHandler requestedProperties: Set<PropertyField> offeredJailCards: int offeredProperties: Set<PropertyField> requestedJailCards: int requestedAmount: int receiver: Player offeredAmount: int sender: Player «interface» Visitor T visit(Figure): T «interface» VoidVisitor visit(Figure): void WacheField accept(Player): void create create create create create create create create create 1 color 1 create create 1 rot 1
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/model.svg b/uploads/Implementierungsphase/Klassendiagramme/model.svg
new file mode 100644
index 0000000..8d0b8b1
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/model.svg
@@ -0,0 +1 @@
+ActiveState payBail(): void rollDice(): DiceResult useJailCard(): void AlterProperty keyword: String properties: Set<Integer> accept(ClientInterpreter, int): void Board items: List<Item> height: int width: int remove(Item): void addItem(Item): void getItems(Class<T>): Stream<T> toString(): String isValid(IntPosition): boolean isValid(int, int): boolean notifyListeners(GameEvent): void clear(): void BoardManager board: List<Field> propertiesWithBuildings: List<BuildingProperty> getPropertyFields(List<Integer>): List<PropertyField> canBuild(BuildingProperty): boolean canSell(BuildingProperty): boolean createBoard(): List<Field> getFieldByName(String): Field getIndexOfField(Field): int getFieldAtIndex(int): Field BuildingProperty hotel: int allRent: List<Integer> color: FieldColor housePrice: int houses: int calcRent(): int sell(): boolean build(): boolean accept(Player): void «record» ButtonStatusEvent notifyListener(GameEventListener): void buttonsEnabled(): boolean BuyPropertyRequest infoTextKey: String accept(ServerInterpreter): void BuyPropertyResponse accept(ClientInterpreter, int): void Card description: String keyword: String accept(DeckHelper, Player): void ClientGameLogic board: Board infoText: String boardManager: BoardManager state: ClientState playerHandler: PlayerHandler tradeHandler: TradeHandler received(ViewAssetsResponse): void received(BuyPropertyRequest): void received(DiceResult): void send(ClientMessage): void received(JailEvent): void received(TimeOutWarning): void received(NotificationMessage): void received(GameStart): void received(NextPlayerTurn): void received(PlayerStatusUpdate): void notifyListeners(GameEvent): void received(EventDrawCard): void received(TradeReply): void movePreview(IntPoint): void addListener(GameEventListener): void update(float): void received(TradeRequest): void playSound(Sound): void removeListener(GameEventListener): void received(GameOver): void ClientGameLogicTest testEnterDisplayName(): void testDuplicateNameEntry(): void testSelectPlayerColor(): void testEnterStartingCapital(): void testDefaultPlayerName(): void testEnterHostName(): void testIncreaseStartingCapital(): void testCancelGameCreation(): void testEnterPortNumber(): void testDecreaseStartingCapital(): void setUp(): void testEnterPlayerLobby(): void «interface» ClientInterpreter received(ViewAssetsRequest, int): void received(TradeResponse, int): void received(PlayerReady, int): void received(BuyPropertyResponse, int): void received(NotificationAnswer, int): void received(TradeOffer, int): void received(EndTurn, int): void received(AlterProperty, int): void received(RollDice, int): void ClientLogicTest testOpenSettingsFromMenu1(): void testOpenStartMenu(): void testMainMenuButtons(): void setUp(): void testNavigateToPlayOption1(): void testOpenSettingsFromMenu(): void testExitApplicationFromMenu(): void testExitApplicationFromMenu1(): void testOpenStartMenu1(): void testOpenGameMenuWithESC1(): void testOpenGameMenuWithESC(): void testNavigateToPlayOption(): void testReturnToGame(): void testStartApplication(): void ClientMessage accept(ClientInterpreter, int): void «interface» ClientSender send(ClientMessage): void ClientState name: String entry(): void movePreview(IntPoint): void loadMap(File): void showTurn(): boolean update(float): void «record» ClientStateEvent notifyListener(GameEventListener): void DeckHelper jodelEispenis(Player): void drawCard(): Card spoTesten(Player): void partyEskaliert(Player): void hausfeierSturz(Player): void pubquiz(Player): void naechstesMonatsgehalt(Player): void dienstfuehrerschein(Player): void geldbeutelOktoberfest(Player): void spoparty(Player): void rueckstuferantrag(Player): void partyGewinn(Player): void lobChef(Player): void dienstsportGym(Player): void jahresabschlussantreten(Player): void befoerderung(Player): void dienstreiseLourd(Player): void vpEinstandsparty(Player): void namensschildTruppenkueche(Player): void blutspendenSonderurlaub(Player): void inventurHaeuserHotels(Player): void bergmarsch(Player): void dienstKfzBlitzer(Player): void visit(Card, Player): void partynachtGulak(Player): void spendierhosenUnibar(Player): void gulakFrei(Player): void pruefungsphaseKrank(Player): void kranzExmatrikulation(Player): void maibockOrganisiert(Player): void shuffle(): void antretenVerschlafen(Player): void verkaufenVersicherungen(Player): void schimmelGulak(Player): void Dice rollDice(): int DiceResult rollResult: List<Integer> doublets: boolean infoTextKey: String calcTotal(): int accept(ServerInterpreter): void «record» DiceRollEvent a(): int notifyListener(GameEventListener): void b(): int EndTurn accept(ClientInterpreter, int): void «record» EventCardEvent notifyListener(GameEventListener): void description(): String EventDrawCard infoTextKey: String cardDescription: String accept(ServerInterpreter): void EventField accept(Player): void Field name: String id: int accept(Player): void «enumeration» FieldColor color: ColorRGBA valueOf(String): FieldColor values(): FieldColor[] «interface» FieldVisitor T visit(WacheField): T visit(TestStreckeField): T visit(GoField): T visit(GulagField): T visit(BuildingProperty): T visit(FoodField): T visit(GateField): T visit(EventField): T visit(FineField): T Figure length: int type: String maxX: int damaged: Set<IntPoint> minX: int minY: int x: int maxY: int rotation: Rotation destroyed: boolean y: int rot: Rotation accept(Visitor<T>): T moveTo(int, int): void rotated(): void moveTo(int): void moveTo(IntPosition): void contains(IntPosition): boolean accept(VoidVisitor): void hit(IntPosition): boolean fieldIdToRotation(int): Rotation contains(int, int): boolean toString(): String fieldIdToPosition(int): IntPoint hit(int, int): boolean collidesWith(Figure): boolean FineField fine: int accept(Player): void FoodField accept(Player): void calcRent(): int «interface» GameEvent notifyListener(GameEventListener): void «interface» GameEventBroker notifyListeners(GameEvent): void «interface» GameEventListener receivedEvent(DiceRollEvent): void receivedEvent(ItemAddedEvent): void receivedEvent(SoundEvent): void receivedEvent(UpdatePlayerView): void receivedEvent(ButtonStatusEvent): void receivedEvent(ItemRemovedEvent): void receivedEvent(PopUpEvent): void receivedEvent(InfoTextEvent): void receivedEvent(ClientStateEvent): void receivedEvent(EventCardEvent): void GameOver infoTextKey: String isWinner: boolean accept(ServerInterpreter): void GameStart infoTextKey: String playerHandler: PlayerHandler accept(ServerInterpreter): void GateField calcRent(): int accept(Player): void GoField accept(Player): void GulagField bailCost: int accept(Player): void «record» InfoTextEvent key(): String notifyListener(GameEventListener): void IntPoint y: int x: int hashCode(): int toString(): String equals(Object): boolean «interface» IntPosition y: int x: int «interface» Item accept(VoidVisitor): void accept(Visitor<T>): T ItemAddedEvent item: Item board: Board ItemRemovedEvent item: Item board: Board JailEvent goingToJail: boolean infoTextKey: String accept(ServerInterpreter): void JailState rollDice(): DiceResult payBail(): void useJailCard(): void LimitedLinkedList E maxSize: int add(E): boolean LobbyState «interface» MonopolyClient gameLogic: ClientGameLogic config: MonopolyClientConfig enqueue(Runnable): void MonopolyClientConfig map: File MonopolyConfig mapWidth: int mapHeight: int port: int NextPlayerTurn infoTextKey: String accept(ServerInterpreter): void NotificationAnswer A: String accept(ClientInterpreter, int): void NotificationMessage rentOwnerId: String infoTextKey: String rentAmount: int keyWord: String rentOwner: String accept(ServerInterpreter): void Player propertyFields: List<PropertyField> properties: List<Integer> color: PlayerColor name: String id: int accountBalance: int handler: PlayerHandler figure: Figure numHouses: int numHotels: int fieldID: int numJailCard: int state: PlayerState addJailCard(): void removeJailCard(): void move(int): int sellProperty(PropertyField): void moveToJail(): void payBail(): void pay(int): void earnMoney(int): void removeProperty(Integer): void finishTurn(): boolean visit(GateField): Void rollDice(): DiceResult toString(): String visit(EventField): Void addProperty(Integer): void useJailCard(): void setPosition(int): int visit(BuildingProperty): Void setPositionWithMoney(int): int visit(GoField): Void visit(FoodField): Void visit(TestStreckeField): Void canFinishTurn(): boolean buyProperty(PropertyField): void getNumProp(PropertyField): int visit(FineField): Void visit(WacheField): Void setActive(): void bankrupt(): void visit(GulagField): Void «enumeration» PlayerColor color: ColorRGBA valueOf(String): PlayerColor values(): PlayerColor[] PlayerHandler players: List<Player> playerCount: int logic: ServerGameLogic startBalance: int extraTurn(Player): void getPlayerAtIndex(int): Player nextPlayer(): Player removePlayer(Player): void setPlayerReady(Player, boolean): void addPlayer(Player): void getPlayerById(int): Player allPlayersReady(): boolean randomOrder(): void PlayerReady figure: String name: String isReady: boolean startMoney: int accept(ClientInterpreter, int): void «interface» PlayerState rollDice(): DiceResult payBail(): void useJailCard(): void PlayerStatusUpdate infoTextKey: String playerHandler: PlayerHandler accept(ServerInterpreter): void PropertyField owner: Player hypo: int price: int mortgaged: boolean calcRent(): int Resources lookup(String): String RollDice accept(ClientInterpreter, int): void «enumeration» Rotation rotate(): Rotation values(): Rotation[] dy(): int valueOf(String): Rotation dx(): int «interface» ServerConnection connected: boolean connect(): void disconnect(): void ServerGameLogic boardManager: BoardManager deckHelper: DeckHelper state: ServerState received(ViewAssetsRequest, int): void received(NotificationAnswer, int): void getPlayerById(int): Player addPlayer(int): Player received(BuyPropertyResponse, int): void received(PlayerReady, int): void received(EndTurn, int): void received(TradeOffer, int): void updateAllPlayers(): void received(AlterProperty, int): void addPlayer(Player): Player executeTrade(Player, Player, Set<PropertyField>, Set<PropertyField>): void received(RollDice, int): void send(Player, ServerMessage): void received(TradeResponse, int): void ServerGameLogicTest testCardPurchaseFailed(): void testDeductGulagFreeCard(): void testReceivePenaltyPayment(): void testPartyorganisatorCard(): void testVersicherungenCard(): void testZieheVorUeberLosCard(): void testGoToGulagCard(): void testJahresabschlussantretenCard(): void testKrankInPruefungsphaseCard(): void testSkipTurnDueToPenalty(): void testFailPayToExitGulag(): void testPayToExitGulag(): void testBefoerderungCard(): void testMozzarellaCard(): void testUnfallCard(): void testTakeMortgage(): void testPayTaxesWithMock(): void testLourdesCard(): void testJodelCard(): void testSwitchTurnToNextPlayer(): void testBlitzerCard(): void testBuildHotel(): void testUseGetOutOfGulagCard(): void testDoubleRoll(): void testBankruptcyByPlayer(): void testMaxBuildHouses(): void testBuyProperty(): void testSumDiceResults(): void testBlutspenderCard(): void testAntretenVerschlafenCard(): void testFailRollToExitGulag(): void testPubquizCard(): void testVorbildlichesVerhaltenCard(): void testMaibockCard(): void testDeclareBankruptcy(): void testRentPaymentFailed(): void testMovePlayer(): void testSpendierhosenCard(): void testTriggerEventTile(): void testTriggerGulagTransfer(): void testUseGulagFreeCardToExit(): void testPayRent(): void testDienstfuehrerscheinCard(): void testBekanntschaftCard(): void testDetectDoubleForAllPossibleDoubles(): void testNamenschildCard(): void testOktoberfestCard(): void testBuyCard(): void testDrawEventCard(): void testTriggerGulagTransfer(): void testFailUseGulagFreeCardToExit(): void testPenaltyPayment(): void testBergmarschCard(): void testLeaveGulag(): void setUp(): void testEndTurn(): void testTripleDoubleGulag(): void testExmatrikulationCard(): void testVertrauenspersonCard(): void testRollToExitGulag(): void testRollDice(): void testPartyeskalationCard(): void testGenerationDice(): void testGameOverBankruptcy(): void testSpopartyCard(): void testGoToGulag(): void testPayBackMortgage(): void testRueckstuferantragCard(): void testDetermineTurnOrder(): void «interface» ServerInterpreter received(DiceResult): void received(GameOver): void received(EventDrawCard): void received(ViewAssetsResponse): void received(NotificationMessage): void received(TradeReply): void received(GameStart): void received(JailEvent): void received(TradeRequest): void received(PlayerStatusUpdate): void received(NextPlayerTurn): void received(TimeOutWarning): void received(BuyPropertyRequest): void ServerMessage infoTextKey: String accept(ServerInterpreter): void «interface» ServerSender send(int, ServerMessage): void «enumeration» ServerState valueOf(String): ServerState values(): ServerState[] «enumeration» Sound valueOf(String): Sound values(): Sound[] «record» SoundEvent notifyListener(GameEventListener): void sound(): Sound TestStreckeField collectMoney(): int accept(Player): void addMoney(int): void TimeOutWarning infoTextKey: String remainingTime: int accept(ServerInterpreter): void TradeHandler requestedProperties: Set<PropertyField> offeredJailCards: int offeredProperties: Set<PropertyField> requestedJailCards: int requestedAmount: int receiver: Player offeredAmount: int sender: Player TradeOffer tradeHandler: TradeHandler accept(ClientInterpreter, int): void TradeReply accepted: boolean infoTextKey: String tradeHandler: TradeHandler accept(ServerInterpreter): void TradeRequest infoTextKey: String tradeHandler: TradeHandler accept(ServerInterpreter): void TradeResponse accepted: boolean tradeHandler: TradeHandler accept(ClientInterpreter, int): void «record» UpdatePlayerView notifyListener(GameEventListener): void ViewAssetsRequest accept(ClientInterpreter, int): void ViewAssetsResponse infoTextKey: String accept(ServerInterpreter): void getboard(): BoardManager «interface» Visitor T visit(Figure): T «interface» VoidVisitor visit(Figure): void WacheField accept(Player): void WaitForTurnState useJailCard(): void payBail(): void rollDice(): DiceResult build metaClass: MetaClass setProperty(String, Object): void invokeMethod(String, Object): Object run(): Object main(String[]): void getProperty(String): Object
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/notification.svg b/uploads/Implementierungsphase/Klassendiagramme/notification.svg
new file mode 100644
index 0000000..e431550
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/notification.svg
@@ -0,0 +1 @@
+«record» ButtonStatusEvent notifyListener(GameEventListener): void buttonsEnabled(): boolean «record» ClientStateEvent notifyListener(GameEventListener): void «record» DiceRollEvent notifyListener(GameEventListener): void b(): int a(): int «record» EventCardEvent notifyListener(GameEventListener): void description(): String «interface» GameEvent notifyListener(GameEventListener): void «interface» GameEventBroker notifyListeners(GameEvent): void «interface» GameEventListener receivedEvent(InfoTextEvent): void receivedEvent(UpdatePlayerView): void receivedEvent(ItemRemovedEvent): void receivedEvent(SoundEvent): void receivedEvent(ClientStateEvent): void receivedEvent(ItemAddedEvent): void receivedEvent(DiceRollEvent): void receivedEvent(EventCardEvent): void receivedEvent(PopUpEvent): void receivedEvent(ButtonStatusEvent): void «record» InfoTextEvent notifyListener(GameEventListener): void key(): String ItemAddedEvent item: Item board: Board ItemRemovedEvent item: Item board: Board «enumeration» Sound valueOf(String): Sound values(): Sound[] «record» SoundEvent notifyListener(GameEventListener): void sound(): Sound «record» UpdatePlayerView notifyListener(GameEventListener): void 1 sound 1
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/serverMessage.svg b/uploads/Implementierungsphase/Klassendiagramme/serverMessage.svg
new file mode 100644
index 0000000..750c43d
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/serverMessage.svg
@@ -0,0 +1 @@
+BuyPropertyRequest infoTextKey: String accept(ServerInterpreter): void DiceResult rollResult: List<Integer> doublets: boolean infoTextKey: String calcTotal(): int accept(ServerInterpreter): void EventDrawCard infoTextKey: String cardDescription: String accept(ServerInterpreter): void GameOver infoTextKey: String isWinner: boolean accept(ServerInterpreter): void GameStart infoTextKey: String playerHandler: PlayerHandler accept(ServerInterpreter): void JailEvent goingToJail: boolean infoTextKey: String accept(ServerInterpreter): void NextPlayerTurn infoTextKey: String accept(ServerInterpreter): void NotificationMessage rentOwnerId: String infoTextKey: String rentAmount: int keyWord: String rentOwner: String accept(ServerInterpreter): void PlayerStatusUpdate infoTextKey: String playerHandler: PlayerHandler accept(ServerInterpreter): void «interface» ServerInterpreter received(NotificationMessage): void received(TimeOutWarning): void received(TradeReply): void received(BuyPropertyRequest): void received(TradeRequest): void received(DiceResult): void received(GameOver): void received(JailEvent): void received(ViewAssetsResponse): void received(GameStart): void received(NextPlayerTurn): void received(EventDrawCard): void received(PlayerStatusUpdate): void ServerMessage infoTextKey: String accept(ServerInterpreter): void TimeOutWarning infoTextKey: String remainingTime: int accept(ServerInterpreter): void TradeReply accepted: boolean infoTextKey: String tradeHandler: TradeHandler accept(ServerInterpreter): void TradeRequest infoTextKey: String tradeHandler: TradeHandler accept(ServerInterpreter): void ViewAssetsResponse infoTextKey: String getboard(): BoardManager accept(ServerInterpreter): void
\ No newline at end of file