![](https://habrastorage.org/storage2/4cd/458/287/4cd45828711ffea9d6c41bc332f1c2e9.jpg)
В средневековые времена программирования, к данным мы применяли функции. Для того, чтобы нарезать хлеб, брали структуру «хлеб» и передавали ее как параметр функции «нарезать»:
нарезать(хлеб);
Потом пришла эпоха объектно-ориентированного программирования. И вместо функии «нарезать», нам надо попросить «хлеб» нарезать себя — вызываем метод «нарезать» у объекта «хлеб»:
хлеб.нарезать();
Очевидно, что это значительное улучшение.
В настоящее время объектно-ориентированное программирование стало еще изысканнее. Сначала мы создаем объект «хлеборезка» и затем просто передаем ему «хлеб» для «нарезки»:
Хлеборезка хлеборезка = new Хлеборезка();
хлеборезка.нарезать(хлеб);
Прогресс налицо.
Вывод: Во всем нужно знать меру. Иногда мне нужен просто банан, а не горилла с бананом.