Buonasera a tutti, sono entrato nel mondo dell'OOP da poco, e sto sviluppando il mio primo progetto con questo nuovo approccio.
A tal proposito purtroppo, sono abbastanza incerto su come impostare questa situazione che vi vado a descrivere:

Ho una classe User con relativi metodi:
create();
login();
update();
delete();
etc..

Poniamo di avere anche una classe Game ( inteso come partita ), con relative classi:
create();
update();
delete();
etc..

Vorrei creare un metodo che permetta all'utente di "iscriversi" alla partita.
La mia domanda è: questo metodo lo devo ( a livello logico )..
A) inserire nella classe User ( perchè è l'utente che "entra" nel game ), per esempio come enterGame()
B) inserire nella classe Game ( perchè è il game che "fa entrare" l'utente ), per esempio come insertPlayer();

E' qualche giorno che ci sbatto la testa contro, onestamente ho valutato anche la situazione attributi, ma ho convenuto che nel caso A avrei tutti gli attributi dell'utente già loggato, e mi basterebbe passare alla function l'id del game per effettuare la query di inserimento.
Allo stesso modo nel caso B avrei l'id del game, e mi basterebbe comunque passare un array dei dati che mi interessa andare a piazzare nella query.
In sostanza, guardando il lato variabili, non ne vengo molto fuori

Concettualmente, il ragionamento che faccio da niubbo è che è l'utente che compie l'azione di iscriversi, e sarei quindi orientato a preferire il metodo A. Così facendo capisco bene però che in un sistema dove il protagonista è l'utente, se facessi tutto con questo ragionamento, mi basterebbe la classe User, e quindi il concetto di OOP andrebbe un pò a farsi benedire..

Un altro dubbio amletico che mi pongo riguarda una questione ancora più generica, anche qui trovando difficile porvi la questione "a parole" ve la sottopongo con un esempio pratico.
Voglio creare un metodo per l'invio di messaggi privati tra utenti: quale approccio è più "corretto"?
A) creo una classe messaggioPrivato con metodo create() e passo al costruttore l'id dell'utente che lo deve inviare. Creerò anche il metodo send() a cui passerò l'id del destinatario, il messaggio, token di sicurezza etc etc.
B) creo un metodo nella classe User, tipo sendPvt() a cui passo l'id del destinatario, token e messaggio ( non l'id del mittente, perchè essendo l'user loggato lo recupero tramite attributo ).

Grazie molte a chi vorrà aiutarmi a districare i miei dubbi, sottoponete pure questioni e approcci diversi, sono aperto ad ogni consiglio anche perchè l'OOP, ad occhio, mi sembra un mondo dove le interpretazioni sono comunque legittime Grazie!