Я читав вступ Oracle до концепцій OOP, і натрапив на цей опис:
Об'єкти реального світу мають дві характеристики: всі вони мають стан та поведінку. Собаки мають стан (ім’я, колір, породу, голодний) та поведінку (гавкіт, плодоношення, виття хвоста). Програмні об'єкти концептуально схожі на об'єкти реального світу: вони теж складаються із стану та пов'язаної з ними поведінки.
Моя проблема з цим уривком полягає в тому, що при описі стану його атрибути також поєднуються . Наприклад, ім'я та колір собаки - її атрибути, тоді як вона є голодною чи поштовхом - це її стану.
Тож, на мою думку, точніше розбити характеристики предметів на три частини: атрибути, стани та поведінку .
Звичайно, перекладаючи це на мову програмування, я бачу, що триразовий розділ стає дворазовим, оскільки обидва атрибути і стани будуть зберігатися у полях / змінних, а поведінка буде зберігатися у методах / функціях.
Але концептуально кажучи, має сенс розділити 3 речі окремо.
Ось ще один приклад: розгляньте лампу. Сказати, що і розмір лампи, і включена чи ні, є станом, на мій погляд. Розмір лампи - це атрибут, а не стан, а ввімкнення або вимкнення - стан.
Або я щось пропустив?