From 1c59594b05882405e1f460c2dce730ee51db82bf Mon Sep 17 00:00:00 2001 From: Maxim Derksen Date: Mon, 7 Feb 2022 09:43:50 +0100 Subject: [PATCH] =?UTF-8?q?Diagramme=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Queue.java | 228 +++++++++--------- Server.java | 106 ++++---- .../Objektdiagramm Wordle Projekt.uxf | 145 +++++++++++ .../Sequenzdiagramm Wordle Projekt.uxf | 169 +++++++++++++ WordleServer.java | 4 +- package.bluej | 122 +++++----- 6 files changed, 538 insertions(+), 236 deletions(-) create mode 100644 Wordle Diagramme/Objektdiagramm Wordle Projekt.uxf create mode 100644 Wordle Diagramme/Sequenzdiagramm Wordle Projekt.uxf diff --git a/Queue.java b/Queue.java index e7835c0..b6f9c59 100644 --- a/Queue.java +++ b/Queue.java @@ -16,127 +16,127 @@ * @version Generisch_02 2014-02-21 */ public class Queue { - - /* --------- Anfang der privaten inneren Klasse -------------- */ - - private class QueueNode { + + /* --------- Anfang der privaten inneren Klasse -------------- */ + + private class QueueNode { - private ContentType content = null; - private QueueNode nextNode = null; + private ContentType content = null; + private QueueNode nextNode = null; - /** - * Ein neues Objekt vom Typ QueueNode wird erschaffen. - * Der Inhalt wird per Parameter gesetzt. Der Verweis ist leer. - * - * @param pContent das Inhaltselement des Knotens vom Typ ContentType - */ - public QueueNode(ContentType pContent) { - content = pContent; - nextNode = null; - } + /** + * Ein neues Objekt vom Typ QueueNode wird erschaffen. + * Der Inhalt wird per Parameter gesetzt. Der Verweis ist leer. + * + * @param pContent das Inhaltselement des Knotens vom Typ ContentType + */ + public QueueNode(ContentType pContent) { + content = pContent; + nextNode = null; + } - /** - * Der Verweis wird auf das Objekt, das als Parameter uebergeben wird, - * gesetzt. - * - * @param pNext der Nachfolger des Knotens - */ - public void setNext(QueueNode pNext) { - nextNode = pNext; - } - - /** - * Liefert das naechste Element des aktuellen Knotens. - * - * @return das Objekt vom Typ QueueNode, auf das der aktuelle Verweis zeigt - */ - public QueueNode getNext() { - return nextNode; - } + /** + * Der Verweis wird auf das Objekt, das als Parameter uebergeben wird, + * gesetzt. + * + * @param pNext der Nachfolger des Knotens + */ + public void setNext(QueueNode pNext) { + nextNode = pNext; + } + + /** + * Liefert das naechste Element des aktuellen Knotens. + * + * @return das Objekt vom Typ QueueNode, auf das der aktuelle Verweis zeigt + */ + public QueueNode getNext() { + return nextNode; + } - /** - * Liefert das Inhaltsobjekt des Knotens vom Typ ContentType. - * - * @return das Inhaltsobjekt des Knotens - */ - public ContentType getContent() { - return content; - } - - } - - /* ----------- Ende der privaten inneren Klasse -------------- */ - - private QueueNode head; - private QueueNode tail; + /** + * Liefert das Inhaltsobjekt des Knotens vom Typ ContentType. + * + * @return das Inhaltsobjekt des Knotens + */ + public ContentType getContent() { + return content; + } + + } + + /* ----------- Ende der privaten inneren Klasse -------------- */ + + private QueueNode head; + private QueueNode tail; - /** - * Eine leere Schlange wird erzeugt. - * Objekte, die in dieser Schlange verwaltet werden, muessen vom Typ - * ContentType sein. - */ - public Queue() { - head = null; - tail = null; - } + /** + * Eine leere Schlange wird erzeugt. + * Objekte, die in dieser Schlange verwaltet werden, muessen vom Typ + * ContentType sein. + */ + public Queue() { + head = null; + tail = null; + } - /** - * Die Anfrage liefert den Wert true, wenn die Schlange keine Objekte enthaelt, - * sonst liefert sie den Wert false. - * - * @return true, falls die Schlange leer ist, sonst false - */ - public boolean isEmpty() { - return head == null; - } + /** + * Die Anfrage liefert den Wert true, wenn die Schlange keine Objekte enthaelt, + * sonst liefert sie den Wert false. + * + * @return true, falls die Schlange leer ist, sonst false + */ + public boolean isEmpty() { + return head == null; + } - /** - * Das Objekt pContentType wird an die Schlange angehaengt. - * Falls pContentType gleich null ist, bleibt die Schlange unveraendert. - * - * @param pContent - * das anzuhaengende Objekt vom Typ ContentType - */ - public void enqueue(ContentType pContent) { - if (pContent != null) { - QueueNode newNode = new QueueNode(pContent); - if (this.isEmpty()) { - head = newNode; - tail = newNode; - } else { - tail.setNext(newNode); - tail = newNode; - } - } - } + /** + * Das Objekt pContentType wird an die Schlange angehaengt. + * Falls pContentType gleich null ist, bleibt die Schlange unveraendert. + * + * @param pContent + * das anzuhaengende Objekt vom Typ ContentType + */ + public void enqueue(ContentType pContent) { + if (pContent != null) { + QueueNode newNode = new QueueNode(pContent); + if (this.isEmpty()) { + head = newNode; + tail = newNode; + } else { + tail.setNext(newNode); + tail = newNode; + } + } + } - /** - * Das erste Objekt wird aus der Schlange entfernt. - * Falls die Schlange leer ist, wird sie nicht veraendert. - */ - public void dequeue() { - if (!this.isEmpty()) { - head = head.getNext(); - if (this.isEmpty()) { - head = null; - tail = null; - } - } - } + /** + * Das erste Objekt wird aus der Schlange entfernt. + * Falls die Schlange leer ist, wird sie nicht veraendert. + */ + public void dequeue() { + if (!this.isEmpty()) { + head = head.getNext(); + if (this.isEmpty()) { + head = null; + tail = null; + } + } + } - /** - * Die Anfrage liefert das erste Objekt der Schlange. - * Die Schlange bleibt unveraendert. - * Falls die Schlange leer ist, wird null zurueckgegeben. - * - * @return das erste Objekt der Schlange vom Typ ContentType oder null, - * falls die Schlange leer ist - */ - public ContentType front() { - if (this.isEmpty()) { - return null; - } else { - return head.getContent(); - } - } + /** + * Die Anfrage liefert das erste Objekt der Schlange. + * Die Schlange bleibt unveraendert. + * Falls die Schlange leer ist, wird null zurueckgegeben. + * + * @return das erste Objekt der Schlange vom Typ ContentType oder null, + * falls die Schlange leer ist + */ + public ContentType front() { + if (this.isEmpty()) { + return null; + } else { + return head.getContent(); + } + } } diff --git a/Server.java b/Server.java index 710ecc0..d21a506 100644 --- a/Server.java +++ b/Server.java @@ -244,16 +244,16 @@ public abstract class Server public boolean isOpen() { - return(connectionHandler.active); + return(connectionHandler.active); } public boolean isConnectedTo(String pClientIP, int pClientPort) { - ClientMessageHandler aMessageHandler = findClientMessageHandler(pClientIP, pClientPort); + ClientMessageHandler aMessageHandler = findClientMessageHandler(pClientIP, pClientPort); if (aMessageHandler != null) - return(aMessageHandler.active); + return(aMessageHandler.active); else - return(false); + return(false); } public void send(String pClientIP, int pClientPort, String pMessage) @@ -265,15 +265,15 @@ public abstract class Server public void sendToAll(String pMessage) { - synchronized(messageHandlers) - { - messageHandlers.toFirst(); - while (messageHandlers.hasAccess()) - { - messageHandlers.getContent().send(pMessage); - messageHandlers.next(); - } - } + synchronized(messageHandlers) + { + messageHandlers.toFirst(); + while (messageHandlers.hasAccess()) + { + messageHandlers.getContent().send(pMessage); + messageHandlers.next(); + } + } } public void closeConnection(String pClientIP, int pClientPort) @@ -294,15 +294,15 @@ public abstract class Server synchronized(messageHandlers) { - ClientMessageHandler aMessageHandler; - messageHandlers.toFirst(); - while (messageHandlers.hasAccess()) - { - aMessageHandler = messageHandlers.getContent(); - processClosingConnection(aMessageHandler.getClientIP(), aMessageHandler.getClientPort()); - aMessageHandler.close(); - messageHandlers.remove(); - } + ClientMessageHandler aMessageHandler; + messageHandlers.toFirst(); + while (messageHandlers.hasAccess()) + { + aMessageHandler = messageHandlers.getContent(); + processClosingConnection(aMessageHandler.getClientIP(), aMessageHandler.getClientPort()); + aMessageHandler.close(); + messageHandlers.remove(); + } } } @@ -314,46 +314,46 @@ public abstract class Server private void addNewClientMessageHandler(Socket pClientSocket) { - synchronized(messageHandlers) - { - messageHandlers.append(new Server.ClientMessageHandler(pClientSocket)); - } + synchronized(messageHandlers) + { + messageHandlers.append(new Server.ClientMessageHandler(pClientSocket)); + } } private void removeClientMessageHandler(ClientMessageHandler pClientMessageHandler) { - synchronized(messageHandlers) - { - messageHandlers.toFirst(); - while (messageHandlers.hasAccess()) - { - if (pClientMessageHandler == messageHandlers.getContent()) - { - messageHandlers.remove(); - return; - } - else - messageHandlers.next(); - } - } + synchronized(messageHandlers) + { + messageHandlers.toFirst(); + while (messageHandlers.hasAccess()) + { + if (pClientMessageHandler == messageHandlers.getContent()) + { + messageHandlers.remove(); + return; + } + else + messageHandlers.next(); + } + } } private ClientMessageHandler findClientMessageHandler(String pClientIP, int pClientPort) { - synchronized(messageHandlers) - { - ClientMessageHandler aMessageHandler; - messageHandlers.toFirst(); + synchronized(messageHandlers) + { + ClientMessageHandler aMessageHandler; + messageHandlers.toFirst(); - while (messageHandlers.hasAccess()) - { - aMessageHandler = messageHandlers.getContent(); - if (aMessageHandler.getClientIP().equals(pClientIP) && aMessageHandler.getClientPort() == pClientPort) - return (aMessageHandler); - messageHandlers.next(); - } - return (null); - } + while (messageHandlers.hasAccess()) + { + aMessageHandler = messageHandlers.getContent(); + if (aMessageHandler.getClientIP().equals(pClientIP) && aMessageHandler.getClientPort() == pClientPort) + return (aMessageHandler); + messageHandlers.next(); + } + return (null); + } } } \ No newline at end of file diff --git a/Wordle Diagramme/Objektdiagramm Wordle Projekt.uxf b/Wordle Diagramme/Objektdiagramm Wordle Projekt.uxf new file mode 100644 index 0000000..75de23c --- /dev/null +++ b/Wordle Diagramme/Objektdiagramm Wordle Projekt.uxf @@ -0,0 +1,145 @@ + + + 8 + + UMLClass + + 224 + 400 + 360 + 128 + + _object: WordleServer_ +-- ++ int DEFAULT_PORT ++ DatabaseConnector db +-- ++ WordleServer ++ WordleServer(int pPort) ++ processNewConnection(String pClientIP, int pClientPort) ++ processClosingConnection(String pClientIP, int pClientPort) ++ processMessage(String pClientIP, int pClientPort, String pMessage) + + + + UMLClass + + 312 + 272 + 168 + 56 + + _object: Server_ +-- + + + + + + UMLClass + + 80 + 632 + 168 + 56 + + _object: Queue<ContentType>_ +-- + + + + + UMLClass + + 320 + 632 + 168 + 56 + + _object: DatabaseConnector_ +-- + + + + + UMLClass + + 312 + 136 + 168 + 56 + + _object: List<ContentType>_ +-- + + + + + UMLClass + + 552 + 632 + 168 + 56 + + _object: QueryResult_ +-- + + + + + Relation + + 392 + 320 + 24 + 96 + + lt=<<<- + 10.0;100.0;10.0;10.0 + + + Relation + + 392 + 184 + 24 + 104 + + lt=<.. + 10.0;10.0;10.0;110.0 + + + Relation + + 392 + 520 + 24 + 128 + + lt=<.. + 10.0;140.0;10.0;10.0 + + + Relation + + 240 + 648 + 96 + 24 + + lt=<.. + 10.0;10.0;100.0;10.0 + + + Relation + + 480 + 648 + 88 + 24 + + lt=<.. + 90.0;10.0;10.0;10.0 + + diff --git a/Wordle Diagramme/Sequenzdiagramm Wordle Projekt.uxf b/Wordle Diagramme/Sequenzdiagramm Wordle Projekt.uxf new file mode 100644 index 0000000..b6a088c --- /dev/null +++ b/Wordle Diagramme/Sequenzdiagramm Wordle Projekt.uxf @@ -0,0 +1,169 @@ + + + 8 + + UMLGeneric + + 584 + 160 + 80 + 24 + + _Client 2_ + + + + UMLGeneric + + 120 + 160 + 80 + 24 + + _Client 1_ + + + + UMLGeneric + + 352 + 160 + 80 + 24 + + _Wordle Server_ + + + + Relation + + 152 + 176 + 24 + 536 + + lt=. + 10.0;650.0;10.0;10.0 + + + Relation + + 384 + 176 + 24 + 536 + + lt=. + 10.0;650.0;10.0;10.0 + + + Relation + + 616 + 176 + 24 + 536 + + lt=. + 10.0;650.0;10.0;10.0 + + + UMLGeneric + + 376 + 240 + 16 + 56 + + + + + + Relation + + 152 + 216 + 240 + 40 + + lt=<- + 280.0;30.0;10.0;10.0 + + + Relation + + 152 + 288 + 240 + 40 + + lt=<- + 10.0;30.0;280.0;10.0 + + + Relation + + 400 + 280 + 240 + 48 + + lt=<- + 10.0;40.0;280.0;10.0 + + + Relation + + 400 + 352 + 240 + 48 + + lt=<- + 280.0;40.0;10.0;10.0 + + + UMLGeneric + + 392 + 312 + 16 + 48 + + + + + + Relation + + 152 + 328 + 240 + 48 + + lt=<- + 280.0;40.0;10.0;10.0 + + + UMLGeneric + + 376 + 360 + 16 + 48 + + + + + + Relation + + 152 + 400 + 240 + 40 + + lt=<- + 10.0;30.0;280.0;10.0 + + diff --git a/WordleServer.java b/WordleServer.java index ac0fd17..e2ab8c5 100644 --- a/WordleServer.java +++ b/WordleServer.java @@ -4,14 +4,14 @@ */ public class WordleServer extends Server { - publib static final int DEFAULT_PORT = 1000; + public static final int DEFAULT_PORT = 1000; public static void main( String[] args ) { new WordleServer(); } - private DatabaseConnector db; + private DatabaseConnector db; public WordleServer() { diff --git a/package.bluej b/package.bluej index 460a419..b335418 100755 --- a/package.bluej +++ b/package.bluej @@ -1,91 +1,79 @@ #BlueJ package file -dependency1.from=DecisionNode -dependency1.to=Dataset +dependency1.from=DatabaseConnector +dependency1.to=QueryResult dependency1.type=UsesDependency -dependency2.from=Classification -dependency2.to=Dataset +dependency2.from=DatabaseConnector +dependency2.to=Queue dependency2.type=UsesDependency -dependency3.from=Decision -dependency3.to=Dataset +dependency3.from=Server +dependency3.to=List dependency3.type=UsesDependency -dependency4.from=DecisionTreeBuilder -dependency4.to=BinaryTree +dependency4.from=WordleServer +dependency4.to=DatabaseConnector dependency4.type=UsesDependency -dependency5.from=DecisionTreeBuilder -dependency5.to=DecisionNode -dependency5.type=UsesDependency -dependency6.from=DecisionTreeBuilder -dependency6.to=Classification -dependency6.type=UsesDependency -dependency7.from=DecisionTreeBuilder -dependency7.to=Decision -dependency7.type=UsesDependency -dependency8.from=DecisionTreeBuilder -dependency8.to=Dataset -dependency8.type=UsesDependency -editor.fx.0.height=722 -editor.fx.0.width=800 -editor.fx.0.x=388 -editor.fx.0.y=50 -objectbench.height=66 -objectbench.width=1201 +editor.fx.0.height=1017 +editor.fx.0.width=854 +editor.fx.0.x=-7 +editor.fx.0.y=0 +objectbench.height=96 +objectbench.width=653 package.divider.horizontal=0.6 -package.divider.vertical=0.8983286908077994 -package.editor.height=622 -package.editor.width=1078 -package.editor.x=39 -package.editor.y=24 -package.frame.height=776 -package.frame.width=1241 -package.numDependencies=8 +package.divider.vertical=0.8876772082878953 +package.editor.height=794 +package.editor.width=542 +package.editor.x=0 +package.editor.y=0 +package.frame.height=1017 +package.frame.width=693 +package.numDependencies=4 package.numTargets=6 package.showExtends=true package.showUses=true project.charset=UTF-8 -readme.height=58 +readme.height=60 readme.name=@README -readme.width=47 +readme.width=49 readme.x=10 readme.y=10 -target1.height=40 -target1.name=Classification +target1.height=70 +target1.name=DatabaseConnector target1.showInterface=false target1.type=ClassTarget -target1.width=210 -target1.x=40 -target1.y=460 -target2.height=50 -target2.name=Decision +target1.width=150 +target1.x=410 +target1.y=100 +target2.height=70 +target2.name=QueryResult target2.showInterface=false target2.type=ClassTarget -target2.width=190 +target2.width=120 target2.x=300 -target2.y=460 -target3.height=120 -target3.name=BinaryTree +target2.y=190 +target3.height=70 +target3.name=Server target3.showInterface=false -target3.type=ClassTarget -target3.width=440 -target3.x=890 -target3.y=250 -target4.height=40 -target4.name=Dataset +target3.type=AbstractTarget +target3.width=120 +target3.x=540 +target3.y=410 +target4.height=70 +target4.name=WordleServer target4.showInterface=false target4.type=ClassTarget -target4.width=270 -target4.x=430 -target4.y=30 -target5.height=50 -target5.name=DecisionNode +target4.width=120 +target4.x=530 +target4.y=240 +target5.height=70 +target5.name=List target5.showInterface=false -target5.type=AbstractTarget -target5.width=110 -target5.x=210 -target5.y=290 -target6.height=60 -target6.name=DecisionTreeBuilder +target5.type=ClassTarget +target5.width=150 +target5.x=290 +target5.y=530 +target6.height=70 +target6.name=Queue target6.showInterface=false target6.type=ClassTarget -target6.width=270 -target6.x=580 -target6.y=230 +target6.width=160 +target6.x=280 +target6.y=420