@startuml
'https://plantuml.com/use-case-diagram

legend top
Class Diagram US018 - As PO/SM/Team Member, I want to consult the product backlog,
                                i.e. to get the list of user stories sorted by priority
end legend

ListUserStoriesUI..>ListUserStoriesController
ListUserStoriesUI..>UserStoryDTO
ListUserStoriesController..>ProjectContainer:projectContainer
ListUserStoriesController..>Project
ListUserStoriesController..>UserStoryDTO
UserStoryMapper..>UserStoryDTO: userStories
UserStoryMapper..>UserStory
UserStory-->Status
ListUserStoriesController..>UserStoryMapper: userStoryMapper
ProjectContainer "1"*--"*" Project: contains
Project "1"*--"1" ProductBacklog: contains

class ListUserStoriesUI {}

class ListUserStoriesController{
- getProject(projectCode) : Project
- getProductBacklog(projectCode) : ProductBacklog
+ getProductBacklogDTO(projectCode): List<UserStoryDTO>
}

class ProjectContainer{
+ getProject(projectCode): Project
}

class Project{
+ getProductBacklog() : ProductBacklog
}

class UserStoryMapper{

- createUSDTO(userStoryNumber,\n userStoryText, status):void
+ getUserStoriesDTO(userStories)\n:List<UserStoryDTO>
}

class UserStory{
-userStoryNumber: String
-userStoryText: String
-status: Status
+ getUserStoryNumber(): String
+ getUserStoryText(): String
+ getStatus(): Status
}

class Status{
- description: String
+ getDescription(): String
}

class UserStoryDTO{
+ userStoryNumber: String
+ userStoryText: String
+ status: Status
+ setUserStoryNumber():void
+ setUserStoryText():void
+ setStatus():void
}

class ProductBacklog{
- userStories: List<UserStory>
+ getUserStories(): List<UserStory>
}

@enduml