Ho chiesto una domanda se il comportamento di convalida debba essere trattato allo stesso modo degli altri tipi di comportamento rispetto al concetto di OOP come "dati + comportamento". Ho ricevuto alcune risposte positive che hanno affrontato la questione dal punto di vista filosofico e hanno confermato che la risposta a questa domanda sembra essere sì.
Ora vorrei affrontare questa domanda da una prospettiva diversa: gli oggetti non dovrebbero rappresentare le loro controparti del mondo reale?
Supponiamo che io dia un modulo cartaceo a qualcuno da compilare. Possono scrivere nei campi sul modulo nell'ordine che preferiscono e possono anche riempire tutti i tipi di valori errati. Quando mi consegnano la carta, rappresento un broker, posso restituirlo a loro e dirgli che non posso archiviarlo fino a quando non risolvono le voci non valide.
C'è anche un confronto tra il formato delle domande sulla carta e un'interfaccia utente che convalida l'input. Magari metti le checkbox sul foglio e chiedi alla persona di selezionarne solo una. Ovviamente il software può essere molto più elaborato con questo tipo di convalida rispetto a un foglio di carta fisico, ma è chiaro che questo tipo di convalida è tutto nell'interfaccia utente ... la convalida nel "dominio" semplicemente non esiste il regno fisico per questo tipo di oggetto.
La carta si accartoccia o si incendia se scrivi qualcosa di non valido su di esso?
Quindi la mia domanda è questa: se un pezzo di carta fisico non ha capacità di ereditare la convalida, allora perché questo comportamento appartiene al dominio?