@startuml
title Task Management Domain Model

class Collaborator {
    name: string
    email: string
    provideTaskDetails()
    displayErrorMessage(message: string)
    displaySuccessMessage(message: string)
}

class Task {
    reference: string
    designation: string
    informalDesc: string
    technicalDesc: string
    duration: int
    cost: int
}

class TaskCategoryManager {
    retrieveTaskCategories(): List<string>
}

class Database {
    checkReferenceAvailability(reference: string): boolean
    saveTask(task: Task)
}

Collaborator "1" --> "*" Task
Collaborator "1" --> "1" TaskCategoryManager
TaskCategoryManager "1" --> "1" Database
@enduml
