@startuml package "Models" { class "Athlete" { + ID_Athlete : int + Name : string + Email : string + Password : string + PublicProfile : text + WeightHistory : string + Goals : text +registerObserver() +removeObserver() +notifyObservers() } abstract class DataManager{ } class StubManager extends DataManager{ } class PlainManager extends DataManager{ } interface GenericDataManager { +getItems() : List +getItemById(id: Int) : T } class AthleteManager implements GenericDataManager{ +getItemsByName(substring: String) : List } class ActivityManager implements GenericDataManager{ +getItemsByName(substring: String) : List } } package "Services" { class "AthleteService" { +createAthlete() +updateProfile() } class "AuthService" { +login() +register() +signInWithGoogle() +signOut() } interface "NotificationStrategy" { +sendNotification() } } DataManager --> "-activityMgr" ActivityManager DataManager --> "-activityMgr" ActivityManager DataManager --> "-athleteMgr" AthleteManager DataManager --> "+UserCurrent" Athlete @enduml @enduml