Leggevo l'introduzione di Oracle ai concetti OOP e ho trovato questa descrizione:
Real-world objects share two characteristics: They all have state and behavior. Dogs have state (name, color, breed, hungry) and behavior (barking, fetching, wagging tail). Software objects are conceptually similar to real-world objects: they too consist of state and related behavior.
Il mio problema con quel passaggio è che quando si descrive stato i suoi mix attributi anche lì. Ad esempio, il nome e il colore di un cane sono i suoi attributi, mentre è affamato o impetuoso sono i suoi stati.
Quindi secondo me è più accurato spezzare le caratteristiche degli oggetti in tre parti: attributi, stati e comportamenti .
Certo, quando si traduce questo in un linguaggio di programmazione posso vedere che la partizione triplice diventa doppia, perché sia gli attributi che gli stati saranno memorizzati in campi / variabili, mentre i comportamenti saranno memorizzati in metodi / funzioni .
Ma concettualmente ha più senso avere le 3 cose separate.
Ecco un altro esempio: considera una lampada. Dicendo che sia la dimensione della lampada sia se è accesa o meno sono degli stati è un tratto a mio parere. La dimensione della lampada è un attributo, non uno stato, mentre la sua accensione o spegnimento è uno stato.
O mi sono perso qualcosa?