@startuml /' ITERATOR '/ class Client interface Aggregate { # createIterator() } class ConcreteAggregate { + createIterator() : Context + getItem() : Int + getSize(): Uint + addItem() : Context } interface Iterator { # next() : Context # first() : Context # isDone() : Bool # currentItem() : Context } class ConcreteIterator { + next() : Context + first() : Context + isDone() : Bool + currentItem() : Context } hide empty members Client --> Aggregate Client --> Iterator Aggregate <|-- ConcreteAggregate Iterator <|-- ConcreteIterator note as N1 Iterator Type: Behavioral Permet d'accéder aux données d'un agrégat de manière séquentielle sans avoir à connaitre la structure de données de l'objet. end note @enduml