Я читал введение Oracle в концепции ООП и наткнулся на это описание:
Реальные объекты имеют две общие характеристики: все они имеют состояние и поведение. Собаки имеют состояние (имя, окрас, порода, голодные) и поведение (лай, извлечение, вилять хвостом). Программные объекты концептуально похожи на объекты реального мира: они тоже состоят из состояния и связанного поведения.
Моя проблема с этим отрывком в том, что при описании состояния его атрибуты миксов тоже там. Например, имя и цвет собаки - это ее атрибуты, в то время как она голодна или голодна - это ее состояние.
Так что, на мой взгляд, точнее разбить характеристики объектов на три части: атрибуты, состояния и поведение .
Конечно, при переводе этого на язык программирования я вижу, что тройное разделение становится двойным, потому что и атрибуты, и состояния будут храниться в полях / переменных, а поведение - в методах / функциях.
Но с концептуальной точки зрения имеет смысл разделить эти 3 вещи.
Вот еще один пример: рассмотрим лампу. Сказать, что как размер лампы, так и то, включена она или нет, являются состояниями, на мой взгляд, натянуто. Размер лампы является атрибутом, а не состоянием, а включение или выключение - состоянием.
Или я что-то пропустил?