Stavo leggendo l'introduzione di Oracle ai concetti di OOP e mi sono imbattuto in questa descrizione:
Gli oggetti del mondo reale condividono due caratteristiche: hanno tutti stato e comportamento. I cani hanno stato (nome, colore, razza, fame) e comportamento (abbaiare, andare a prendere, scodinzolare). Gli oggetti software sono concettualmente simili agli oggetti del mondo reale: anch'essi sono costituiti da stato e comportamento correlato.
Il mio problema con quel passaggio è che quando descrive lo stato mescola anche lì gli attributi . Ad esempio, il nome e il colore di un cane sono i suoi attributi, mentre essere affamato o malizioso sono i suoi stati.
Quindi secondo me è più accurato suddividere le caratteristiche degli oggetti in tre parti: attributi, stati e comportamenti .
Certo, quando traduco questo in un linguaggio di programmazione, vedo che la partizione tripla diventa duplice, perché sia gli attributi che gli stati verranno memorizzati in campi / variabili, mentre i comportamenti verranno archiviati in metodi / funzioni.
Ma concettualmente parlando ha più senso separare le 3 cose.
Ecco un altro esempio: considera una lampada. Dire che sia la dimensione della lampada sia l'accensione o meno sono degli stati è secondo me un allungamento. La dimensione della lampada è un attributo, non uno stato, mentre l'accensione o lo spegnimento è uno stato.
O mi sono perso qualcosa?