Наши программные объекты являются отражением объектов реальности, состояние которых неразрывно связано с поведением. Возьмем для примера мяч. Его состояние можно описать размером, массой и положением. Размер и массу в небольших пределах мы можем изменить подкачивая мяч, а положение -- пнув его. И в первом и во втором случае воздействие на состояние происходит не прямым изменением параметров состояния, а через поведение мяча, как реакция на взаимодействие с ним. Подкачивая мы увеличиваем количество воздуха внутри оболочки мяча добавляя ему массу и увеличивая давление, которое, растягивая оболочку, увеличивает размер. Пнув же мяч мы прикладываем силу, создающую ускорение зависящее от массы и увеличивающее скорость мяча, а наличие скорости приводит к изменению положения. Отражение этой неразрывной связи в программировании называют инкапсуляцией. Для ее реализации языки программирования получили возможность объединять в единой структуре (классе) переменные и функции, работающие с ними, а т