Благодаря наличию во всех языках программирования такой стандартной структуры данных, как массив, мы почти ежедневно усложняем себе жизнь.
Нет, конечно, жизнь усложняют не сами массивы, а наша легкомысленность, когда мы непосредственно объявляем массив объектов и работаем с ним напрямую, вместо того, чтобы обернуть массив в класс и вызывать соответствующие методы этого класса.
Фишка в том, что большая часть кода, работающего с массивом, содержит знания о правилах работы с массивом в целом либо с его элементами, а согласно принципу сокрытия реализации, такие знания должны прятаться в коде классов вместе с самими массивами.
Для меня самый понятный пример оборачивания массива в класс — корзина товаров в интернет-магазине.
С одной стороны это массив объектов «товар в корзине», а с другой, есть достаточно обширный набор специфических операций, выполняемый с этим списком. Самый простой пример: подсчёт количества и общей стоимости всех товаров в корзине. Ещё пример: оповещение всех заинтересованных при добавлении товара в корзину (с целью пересчёта стоимости и т. п.).
Явление настолько распространено, что я склонен ввести в употребление целый новый термин для его обозначения, унаследованный от термина «анемичный объект».