Upload New File

parent eb328ecd
@startuml
left to right direction
class User {
+id: int
+username: string
+email: string
+passwordHash: string
+createdAt: DateTime
}
class UserProfile {
+userId: int
+progressLevel: int
+experiencePoints: int
+lastActive: DateTime
}
class AuthService {
+login(email: string, password: string): bool
+signUp(username: string, email: string, password: string): User
+resetPassword(email: string): void
}
class Exercise {
+id: int
+title: string
+difficulty: string
+startExercise(): void
+submitAnswer(answer: string): bool
}
class VocabularyExercise {
+word: string
+translation: string
}
class GrammarExercise {
+rule: string
+examples: string[]
}
class LearningMaterial {
+id: int
+title: string
+description: string
}
class VideoMaterial {
+videoUrl: string
+duration: int
}
class TextMaterial {
+content: string
}
class Achievement {
+id: int
+name: string
+description: string
+condition: string
+isUnlocked: bool
}
class AchievementSystem {
+checkProgress(userId: int): void
+unlockAchievement(userId: int, achievementId: int): void
}
User "1" -- "1" UserProfile : has >
User "1" -- "*" Achievement : unlocks >
User --> AuthService : authenticates via
Exercise <|-- VocabularyExercise
Exercise <|-- GrammarExercise
LearningMaterial <|-- VideoMaterial
LearningMaterial <|-- TextMaterial
Exercise "1" -- "*" LearningMaterial : uses >
UserProfile "1" -- "*" Exercise : completes >
AchievementSystem --> User : checks
AchievementSystem --> Achievement : manages
@enduml
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment