@startuml
'Attribute syntax: <visibility> <name> : <type> <multiplicity> = <default>
'Method syntax: <visibility> <name (parameter-list)> : <return-type> - For simplicity the type of the parameter-list is not specified

class Project {
    - projectCode : String {readOnly}
    - projectName : String {readOnly}
    - projectDescription : String {readOnly}
    - customer : Customer {readOnly}
    - projectTypology : ProjectTypology {readOnly}
    - businessSector : BusinessSector {readOnly}
    - startDate : LocalDate
    - endDate : LocalDate
    - projectStatus : ProjectStatus {readOnly}
    - productBacklog : ProductBacklog {readOnly}

    + Project(businessSector : BusinessSector, projectTypology : ProjectTypology, \ncustomer : Customer, projectStatus : ProjectStatus, projectCode : String, \nprojectName : String, projectDescription : String)
    + hasProjectCode(projectCode : String) : boolean
    + getProjectCode() : String
    + getName() : String
    + getDescription() : String
    + getCustomer() : Customer
    + getStatus() : Status
    + getProductBacklog() : ProductBacklog
    + getUserStory(usNumber : String) : UserStory
    + createUserStory(userStoryCode : String, description : String) : boolean
    + equals(object : Object) : boolean
    + hashCode() : int
}

@enduml