@startuml RendderItemList


class SubmitEventController{
    cardControllerProtocol: CardControllerProtocol
    onClick(form: Form): void
}


interface CardControllerProtocol{
    render(): void
}

class CardController{
    concreteItemFactoryProtocol: ConcreteItemFactoryProtocol
    - create(): CardModel
    render(): void
}

interface CardModelProtocol{
      convertItemToCard({problem, answer, id: complete}: Item, templateId: string): HTMLElement
}

class CardModel{
     item: Item
     templateId: string

    - getCardDom(templateId: string): HTMLElement
    - setCardConfig({problem,answer,id,complete}: Item): void
    - setCardContent({problem, answer}: Item): void
    - setCardId(id: string): void
    - validateCheck(complete: boolean): void
    convertItemToCard({problem, answer, id: complete}: Item, templateId: string): HTMLElement
}

interface CardViewProtocol{
    render(cardModel: CardModel): void
}

class CardView{
    render(cardModel: CardModel): void
}

SubmitEventController -> CardControllerProtocol
CardControllerProtocol <|-. CardController
CardController -> CardModelProtocol
CardModelProtocol <|--. CardModel
CardViewProtocol <- CardController
CardViewProtocol <|--. CardView

@enduml
