Eu estava lendo a introdução da Oracle aos conceitos de OOP e me deparei com esta descrição:
Objetos do mundo real compartilham duas características: Todos eles têm estado e comportamento. Os cães têm estado (nome, cor, raça, fome) e comportamento (latir, buscar, abanar a cauda). Objetos de software são conceitualmente semelhantes aos objetos do mundo real: eles também consistem em estado e comportamento relacionado.
Meu problema com essa passagem é que, ao descrever o estado, suas misturas também são atribuídas lá. Por exemplo, o nome e a cor de um cão são os seus atributos, enquanto que a fome ou o excesso de gordura são os seus estados.
Então, na minha opinião, é mais preciso quebrar as características dos objetos em três partes: atributos, estados e comportamentos .
Certamente, ao traduzir isso para uma linguagem de programação, posso ver que a partição tripla se torna dupla, porque atributos e estados serão armazenados em campos / variáveis, enquanto comportamentos serão armazenados em métodos / funções.
Mas, conceitualmente, faz mais sentido separar as três coisas.
Aqui está outro exemplo: considere uma lâmpada. Dizer que o tamanho da lâmpada e se está ligado ou não são estados é um exagero na minha opinião. O tamanho da lâmpada é um atributo, não um estado, enquanto ligado ou desligado é um estado.
Ou eu perdi alguma coisa?