Estaba leyendo la introducción de Oracle a los conceptos de OOP y me encontré con esta descripción:
Los objetos del mundo real comparten dos características: todos tienen estado y comportamiento. Los perros tienen estado (nombre, color, raza, hambre) y comportamiento (ladrar, buscar, mover la cola). Los objetos de software son conceptualmente similares a los objetos del mundo real: también consisten en estado y comportamiento relacionado.
Mi problema con ese pasaje es que al describir el estado también mezcla sus atributos . Por ejemplo, el nombre y el color de un perro son sus atributos, mientras que tener hambre o sed son sus estados.
Entonces, en mi opinión, es más preciso dividir las características de los objetos en tres partes: atributos, estados y comportamientos .
Claro, cuando traduzco esto a un lenguaje de programación, puedo ver que la partición triple se convierte en una doble, porque tanto los atributos como los estados se almacenarán en campos / variables, mientras que los comportamientos se almacenarán en métodos / funciones.
Pero conceptualmente hablando tiene más sentido tener las 3 cosas separadas.
Aquí hay otro ejemplo: considere una lámpara. En mi opinión, decir que tanto el tamaño de la lámpara como si está encendida o no son estados es una exageración. El tamaño de la lámpara es un atributo, no un estado, mientras que se enciende o apaga es un estado.
¿O me perdí algo?
fuente