GithubHelp home page GithubHelp logo

hikschat's Introduction

HiksChat

HiksChat is a chat application that was developed in C# and offers various functions for user and group management as well as for communication. Here is an overview of the most important classes and their functions:

UML diagram of my project

classDiagram
    User --|> List
    User --o ChatGroup
    class User {
        - int UserId
        - string Username
        - string Password
        - string Language
        - string PreferredLanguage
        - List<ChatGroup> Groups
        + void RegisterUser(string username, string password, string language)
        + List<ChatGroup> GetGroups()
    }

    TranslationService --|> List
    class TranslationService {
        - int TranslationId
        - string ApiKey
        - List<string> supportedLanguages
        + string Translate(string text, string targetLanguage)
        + string DetectLanguage(string text)
        + List<string> GetSupportedLanguages()
        + void AddSupportedLanguage(string language)
        + void RemoveSupportedLanguage(string language)
    }

    ChatServer --|> List
    ChatServer --o ChatGroup
    ChatServer --o ChatClient
    class ChatServer {
        - List<ChatGroup> Groups
        - List<ChatClient> Users
        + ChatGroup CreateGroup(string groupName)
        + void JoinGroup(ChatClient client, string groupName)
        + ChatGroup GetGroupByName(string groupName)
        + ChatGroup GetGroupById(int groupId)
        + void RemoveGroup(int groupId)
        + ChatClient GetUserById(int userId)
        + ChatClient GetUserByUsername(string username)
        + void RemoveUser(int userId)
        + void ChangeUsername(int userId, string newUsername)
        + void ChangeLanguage(int userId, string newLanguage)
        + void CreateChat(ChatClient user1, ChatClient user2)
    }

    ChatGroup --|> List
    ChatGroup --o ChatClient
    class ChatGroup {
        - int GroupId
        - List<ChatClient> Members
        - string Name
        + void AddMember(ChatClient member)
        + void RemoveMember(ChatClient member)
        + void SaveToDatabase()
        + static ChatGroup LoadFromDatabase(int groupId)
        + void SaveMessageToDatabase(string sender, string content)
        + List<string> GetChatHistoryFromDatabase()
        + int GetGroupId()
    }

    ChatClient --|> List
    ChatClient --o User
    ChatClient --o TranslationService
    class ChatClient {
        - User User
        - TranslationService translationService
        - List<string> messageHistory
        - string preferredLanguage
        + void SetPreferredLanguage(string language)
        + void SendMessage(string message)
        + string ReceiveMessage()
        + List<string> ViewChatHistory()
        + void ClearChatHistory()
        + void ProcessCommand(string command)
        + int CalculatePing()
    }

    Program --|> DatabaseManager
    Program --o ConsoleUI
    class Program {
        + void Main(string[] args)
    }

    ConsoleUI --|> User
    ConsoleUI --|> DatabaseManager
    class ConsoleUI {
        - ConsoleColor defaultColor
        - User currentUser
        + static int selectedOptionIndex
        + static DatabaseManager databaseManager
        + ConsoleUI(User user)
        + static void RunMainMenu()
        + void RunChatMenu()
        + void DisplayMessage(string sender, string message, ConsoleColor color, string emoji)
        + string GetUserInput(string prompt)
    }

    DatabaseManager --|> List
    class DatabaseManager {
        - static string connectionString
        + void InitializeDatabase()
        + void SaveUser(string username, string password, string language)
        + bool CheckLogin(string username, string password)
    }

    DatabaseManager --|> List
    class DatabaseManager {
        - static string connectionString
        + void InitializeDatabase()
        + void SaveUser(string username, string password, string language)
        + bool CheckLogin(string username, string password)
    }
Loading

UML diagram of my database

classDiagram
    class DatabaseManager {
        -static string connectionString
        -DbSet<User> Users
        +void InitializeDatabase()
        +void CreateTablesIfNotExists(SqliteConnection connection)
        +bool CheckLogin(string username, string password)
        +void SaveUser(string username, string password, string language)
        +void RemoveUser(int userId)
        +void SaveMessage(string sender, string receiver, string content)
        +Task<List<string>> GetChatHistoryFromDatabaseAsync(int groupId)
        +Task<int> GetGroupIdAsync()
        +List<string> GetUserChats(string username)
        +void SaveGroup(string groupName)
        +void RemoveGroup(int groupId)
    }
    class SqliteConnection {
        +void Open()
    }
    class SqliteCommand {
        +void ExecuteNonQuery()
        +object ExecuteScalar()
        +SqliteDataReader ExecuteReader()
    }
    class SqliteDataReader {
        +bool Read()
        +string GetString(int ordinal)
    }
    class SqlCommand {
        +void ExecuteNonQuery()
        +object ExecuteScalar()
        +SqlDataReader ExecuteReader()
    }
    class SqlDataReader {
        +bool Read()
        +string GetString(int ordinal)
    }
    class User {
        -string Username
        -string Password
        -string Language
    }
    class SqlConnection {
        +void Open()
    }

    DatabaseManager --> SqliteConnection : Manages
    DatabaseManager --> User : Manages
    DatabaseManager --> SqliteCommand : Executes
    DatabaseManager --> SqlCommand : Executes
    DatabaseManager --> SqlConnection : Executes
    DatabaseManager --> SqliteDataReader : Executes
    SqliteCommand --> SqliteConnection : Uses
    SqlCommand --> SqlConnection : Uses
    SqliteDataReader --> SqliteCommand : Retrieves data
    SqlDataReader --> SqlCommand : Retrieves data
Loading

These classes work together to create a fully functional chat application that allows users to communicate with each other and organize group chats.

hikschat's People

Contributors

emircgn avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.