a603f05135
Use data object to send |
||
---|---|---|
client | ||
gradle/wrapper | ||
protocol | ||
server | ||
.gitignore | ||
Klassendiagramm.svg | ||
README.md | ||
gradle.properties | ||
gradlew | ||
gradlew.bat | ||
settings.gradle |
README.md
Übung – Multichat
Uebung-hk1-Schrom01-Fassband-Brandleo
#most important Problems
Our 5 most important functional Errors
Our 5 most important structural problems
Description of our solution
###Classdiagram of original handout
###Classdiagram of our new structure
Structure of Client:
The instances of ClientConnectionHandler and ClientMessageList are not created in the ChatWindowControllerClass anymore. It's created in the ClientUI Class and the ChatWindowController Class has access to them. This makes it possible for a client to have multiple windows open or close all windows without losing the message list or closing the connection. The ClientConnectionHandlder does't need a ChatWindowController Object now. Received Messages are added directly into the message list. This makes it possible to receive and store new messages without having a Window open. The ChatWindowController adds listeners in the clientConnectionHandler and in ClientMessageList to refresh the view if there are new Messages or if there are any changes in the connection handler.
Structure of protocol:
####Datatype: A new Class Message represents a Message which can be sent from a Client to the Server from the Server to a Client and can also directly be stored in ClientMessageList. This makes it much easier to process the received data and to send a message because no String parsing and String building is needed. ####Class ConnectionHandler A new Abstract Class ConnectionHandler contains Code which is used in ClientConnectionHandler and ServerConnectionHandler. For Example Method send Data. This removes a lot of duplicated methods and data fields.
Ideas to extend the application:
- It would be easyer to use for a User if it was possible to open a separate Window for a private Chat with a specific user.
- Users could be divided into groups, and it would be nice if a group name could be used as receiver.
- registration and login with username and password and store credentials in a Database in Server.