@startuml "Class Diagram"

class User <<Entity>> {
    + name: String
    + email: String
    + phone: String
    + findPT(): [PT]
}

class PT <<Entity>> {
    + price: Number
    + branch: Branch
    + location: [Location]
}

class Athlete <<Entity>> {
    + measurements: [Measurement]
}

enum Branch {
    FITNESS
    BODY_BUILDING
    YOGA
}

interface Measurement <<ValueObject>> {
    + type: String
    + value: Number
    + unit: String
}

class BMI <<ValueObject>> {
    + type: String
    + value: Number
    + unit: String
}

class Wall <<Entity>> {
    + text: String
    + comments: [Wall]
}

class Location <<Entity>> {
    + coords: [Number]
    + name: String
}

class Discount <<Entity>> {
    + discountPercentage: Number
}



BMI -up-|> Measurement
Athlete -up-|> User
PT -up-|> User
PT --> "1" Branch
PT "1..n" o--> "0..n" Location
User "0..n" *--> "n" Wall
Athlete --> Discount

@enduml