Non ci sono limiti ai metodi consentiti in un oggetto, ma ci sono filosofie sul comportamento quando si tratta di un buon design. Ci sono molte euristiche (regole empiriche che non offrono garanzie di un buon design, ma che hanno mostrato pregi in passato).
Come affermato da Bart , i comportamenti degli oggetti software possono essere classificati come accessors ( che non cambiano lo stato di un oggetto, ma di solito accedono alle informazioni all'interno dell'oggetto, ad esempio getter) e mutatori (che fanno in qualche modo cambiano lo stato di un oggetto, ad esempio, setter). Normalmente, i due devono essere separati - un accessor non dovrebbe anche modificare lo stato dell'oggetto. La combinazione di questi comportamenti porta a problemi di qualità del software, dal momento che è più difficile testare il funzionamento di questi comportamenti.
Forse se consideri i comportamenti degli oggetti in termini di responsabilità, potrebbe essere d'aiuto. Il design guidato dalla responsabilità è il nome del paradigma, se vuoi trovare maggiori informazioni.
Gli oggetti software non sono oggetti del mondo reale , quindi penso che i numerosi esempi con comportamenti di cani, uccelli, ecc. portino alla confusione. Gli oggetti software fanno parte di un progetto per risolvere un problema legato al mondo reale . Usare gli oggetti dovrebbe aiutare a capire la soluzione di un problema del mondo reale, dal momento che un'astrazione di un oggetto è più vicina al modo in cui pensiamo agli elementi nel dominio del problema reale. Detto questo, i comportamenti software non sono necessariamente comportamenti del mondo reale.
Cani : se stai progettando un software che aiuti i veterinari a gestire la loro attività, potresti avere oggetti Dog. Ma la loro "corteccia" probabilmente non avrà importanza per questo tipo di problema e certamente non sarà un comportamento dell'oggetto software. Tuttavia, potrebbe essere se stai cercando di simulare qualcosa in cui l'abbaiare di un cane fa parte del problema (ad esempio, un gioco di simulazione in cui la polizia compare se troppi cani del giocatore abbaiano nel suo cortile perché sono affamati o annoiato)
Blog : se un blog ha un limite al numero di messaggi che può contenere, un possibile comportamento potrebbe essere quello di "truncate ()" (anche se è discutibile che un blog debba applicare questo comportamento stesso o un'entità esterna). Truncate è un esempio di mutator . Un comportamento a "getAuthor ()" di un blog sarebbe un esempio di un accessore .
I comportamenti non dovrebbero rivelare l'implementazione delle tue classi, se desideri lottare per nascondere le informazioni nel tuo progetto. Per quanto riguarda le altre "regole pratiche" sui comportamenti, ce ne sono molti quando si utilizza il design basato sulla responsabilità (e vedrete che le cose si complicano molto con le aree grigie). Controlla GRASP e SOLID per iniziare (alcune delle regole si sovrappongono - è perché il design del software OO è ancora una disciplina relativamente immatura, rispetto al design Bridge o al design dei mobili).