The Iterator Pattern provides a way to access the elements of an aggregate object sequentially without
exposing its underlying representation