Sulla base di alcune domande ho chiesto ( 1 , 2 , 3 ) Spesso mi viene suggerito di separare i dati dalle funzioni (a causa di cambiamenti di funzione, singola responsabilità, separazione delle preoccupazioni, adozione di interfacce, immutabilità, ...).
Quindi la mia domanda è: in quali situazioni le funzioni dovrebbero essere incapsulate con i dati? che tipo di funzioni sono? Rappresentare un'entità o un concetto un'unica responsabilità? se sì, allora posso concludere che nessuna funzione dovrebbe essere introdotta in una classe che rappresenta un'entità! Mi sono perso qualcosa?
Secondo i seguenti approcci, che succede se seguo sempre il secondo approccio! Si noti che nella seconda classe di approccio Entity
non ha variabili di stato private in quanto non ha alcuna funzione, quindi i suoi campi sono accessibili in classe EntityOp1
e EntityOp23
class Entity
{
public data;
private s1, s2, s3;
operation1;
operation2;
operation3;
}
vs.
class Entity
{
public data;
}
class EntityOp1
{
Entity e;
private s1;
operation1;
}
class EntityOp23
{
Entity e;
private s2, s3;
operation2;
operation3;
}