Skip to content

Class Diagrams

Emre Kılıç edited this page Apr 16, 2024 · 22 revisions
classDiagram
    class Users{
        +get(username: String) User
        +create(username: String) int
        +delete(username: String) int
        +update( user: User) int
    }
    class Contents{
        +create(text: String, author: RegisteredUser, title: String, image: Image) int
        +find(keyword: String) List~Post~
        +get(id: int) Post
        +edit(post: Post) int
        +delete(id: int) int
    }

    class User{
        <<abstract>>
        -search_engine: SearchEngine
        +getSearchEngine() SearchEngine
        +login(username: String, password: String) int
    }

    class UserController{
        +register(username: String, password: String, email: String) int
        +login(username: String, password: String) int
        +logout(username: String) int
    }

    class GuestUser{
        +register(username: String, email: String, password: String) int
    }

    class RegisteredUser{
        -username: String
        -profile: Profile
        -password: String
        -blocked_list: List~RegisteredUser~
        -muted_list: List~RegisteredUser~
        +getProfile() Profile
        +getUsername() String
        +blockUser(user:RegisteredUser) int
        +unblockUser(user:RegisteredUser) int
        +followUser(user: RegisteredUser) int
        +unfollowUser(user: RegisteredUser) int
        +muteUser(user: RegisteredUser) int
        +unmuteUser(user: RegisteredUser) int
        
    }
    class Profile{
        -email: String
        -biography: String
        -profile_picture: Image    
        -registration_date: Date
        -following_list: List~RegisteredUser~ 
        -follower_list: List~RegisteredUser~ 
        +getEmail() String
        +setEmail(email: String) int
        +getBiography() String
        +setBiography(biography: String) int        
        +getProfilePicture() Image
        +setProfilePicture(image: Image) int        
    }
    class Content{
        -text: String
        -publication_date: Date
        -edit_date: Date
        -author: RegisteredUser
        -comments: List~Comment~
        
        +getText() String
        +getPublicationDate() Date
        +getEditDate() Date
        +getAuthor() RegisteredUser

        +setText(text: String) int        
        +addComment(comment: Comment) int
        +removeComment(comment: Comment) int
    }
    class Post {
        -title: String
        -image: Image

        -comment_count: int

        -like_count: int
        -like_list: List~RegisteredUser~

        -bookmark_count: int
        +getTitle() String
        +getImage() Image
        +getComments() List~Comment~
        +getLikeCount() int
        +getLikeList() List~RegisteredUser~
        +getBookmarkCount() int
        +getCommentCount() int
        
        +setTitle(title: String) int
        +setImage(image: Image) int


        +likePost(user: RegisteredUser) int
        +unlikePost(user: RegisteredUser) int
        +bookmarkPost(user: RegisteredUser) int
        +unbookmarkPost(user: RegisteredUser) int

    }  
    class Comment{
        -parent: Content

        +getParent() Content
    }
    class Feed{
        -post_list
        +populateFeed(user: User) int
    }
    class SearchEngine{
        -search_history: List~String~
        -wikidata_client : WikiData
        + updateSearchHistory(search: String) int
        + filter(post_list:List~Post~, filter: Filter) List~Post~
        + createFilter(author: String, from_date: Date, to_date: Date) Filter
        + weight(post_list:List~Post~,weights: List~int~) List~Post~
    }
    class Filter {
        -author: String
        -from_date: Date
        -to_date: Date
            
        +getAuthor() String
        +getFromDate() String
        +getToDate() String
    }

    class WikiData{
        +query(query: String) List~Wikidata_Entity~
        +getInfoBox(wikidata_entity: Wikidata_Entity) InfoBox
    }

    class InfoBox{
        -key_value_pairs: Hashmap~String, String~
        -weights: List~int~
        
        +getKey_value_pairs() Hashmap~String, String~
        +setKey_value_pairs(pairs: Hashmap~String, String~) int
    }

    class Image {
        -alt_text: String
        -url: String
        
        +getUrl() String
        +getAltText() String
    }

    Post "1" -- "0..*" RegisteredUser : likes
    Content "1" -- "1" RegisteredUser : owns
    User <|-- RegisteredUser
    Profile "1" *-- "1" RegisteredUser : has

    Contents "0..*" -- "0..*" Content : manages
    Users "0..*" -- "0..*" User : manages
    UserController "0..*" -- "0..*" User : controls

    RegisteredUser "0..*" -- "0..*" RegisteredUser : interacts
    Content <|-- Post
    Content <|-- Comment
    Content "1" --* "0..*" Comment : has
    Feed "1" *-- "1" User : has
    User "1" --* "1" SearchEngine : uses
    Post "0..*" --* "0..*" Image
    User <|-- GuestUser

    SearchEngine "1" --* "0..*" Filter : filtersWith
    SearchEngine "1" --* "1" WikiData : queries
    WikiData "1" --* "0..*" InfoBox : returns

Loading

BOUNSWE2024 - G11

Logo Turquiz App

⏳ Status

DONE

🧑🏼‍💻 Team

📝 Diagrams

📆 Lab Reports

📆 Meeting Notes

📍 Milestones

📎 Planning

📚 User Scenarios / Stories

📚 Resources

🔎 Research

🗂️ Templates

Clone this wiki locally