@startuml
skinparam class {
    BackgroundColor White
    ArrowColor Black
    BorderColor Black
    FontColor Black
    FontSize 14
}

Title "Class Diagram - Most Referenced Words"

package "presentation" {
    class MostReferencedWordsUI {
        + doShow()
        + selectCandidate(applications)
        + headline()
    }
}

package "controller" {
    class MostReferencedWordsController {
        + findCustomerManagerApplications()
        + getCandidateFiles(selectedCandidate)
        + findMostReferencedWords(candidateFiles)
        + countWordsFile(file, fileLines)
        + isWord(possibleWord)
        + readFile(file)
        + sortMap(totalWordCount)
    }
}

package "services" {
    class ApplicationService {
        + registerApplication(rank, applicationFiles, jobReference, candidate, operator)
        + findApplicationById(applicationID)
        + allApplications()
        + findApplicationsForJobOpening(jobOpening)
        + updateRank(rank, application)
        + applicationsByCM(cm)
    }
}

package "repositories" {
    interface ApplicationRepository {
        + allApplications()
        + ofIdentity(applicationId)
    }
}

MostReferencedWordsUI --> MostReferencedWordsController
MostReferencedWordsController --> ApplicationService
ApplicationService --> ApplicationRepository

@enduml