@startuml
!include Style.puml
class FoodRecord {
    - name : String
    - calories : Int
}

class WhatIAteList {
    #addToList(recordToAdd : FoodRecord, isSilent boolean) : void
    #printIndexWithSuffix(index : int) : void
}

class "{abstract}\nListOfRecords<T>" {
#list:ArrayList<T>
#getList() : ArrayList<T>
#addToList(recordToAdd : T) : void
#printList() : void
#clearList() : void
}

class StorageFood {
- folderName : String
- fileName : String
- filePath : String
{static} +saveList(whatIAteList WhatIAteList) : void
{static} +load() : WhatIAteList
}

WhatIAteList -u StorageFood : < reads and writes
WhatIAteList --u|> "{abstract}\nListOfRecords<T>"
note right of WhatIAteList: Overrides T with FoodRecord
WhatIAteList --> "*" FoodRecord


@enduml