View Full Version : [OOP] dati membro pubblici o passaggio di parametri al costruttore?
salve a tutti, è da poco che ho a che fare con l'OOP. Premetto che ancora non conosco design pattern(spero di studiarli presto) e che quindi magari non ho gli strumenti per trovare soluzioni eleganti ma mi trovo spesso ad avere bisogno di una variabile in altre classi. Per adesso ho sempre passato la variabile al costruttore della mia nuova classe, faccio bene? c'è un metodo migliore? i dati membro pubblici invece? si usano? no? se si, quando?
grazie a tutti :)
wingman87
19-05-2009, 16:51
Non sono un esperto, però credo che la tua soluzione vada bene solo fino a un certo punto.
Mettiamo che la variabile che vorresti condividere tra più classi possa variare nel tempo: se si tratta di un tipo primitivo diventerà noioso mantenere la consistenza.
Mettiamo poi che la variabile in questione sia usata da un solo metodo (o due).
A questo punto forse è meglio passarla come argomento dei metodi che la richiedono.
I dati membro pubblici sono in genere sconsigliati. Si possono usare quando non intendi porre dei vincoli al set/get di quel dato. Tuttavia sarebbe meglio incapsularli in vista di sviluppi futuri.
~FullSyst3m~
19-05-2009, 19:42
salve a tutti, è da poco che ho a che fare con l'OOP. Premetto che ancora non conosco design pattern(spero di studiarli presto) e che quindi magari non ho gli strumenti per trovare soluzioni eleganti ma mi trovo spesso ad avere bisogno di una variabile in altre classi. Per adesso ho sempre passato la variabile al costruttore della mia nuova classe, faccio bene? c'è un metodo migliore? i dati membro pubblici invece? si usano? no? se si, quando?
grazie a tutti :)
Cosa intendi per dati membro? Nei documenti che ho letto fino ad ora ho trovato minimo due definizioni diverse che cambiano da linguaggio a linguaggio.
Cosa intendi per dati membro? Nei documenti che ho letto fino ad ora ho trovato minimo due definizioni diverse che cambiano da linguaggio a linguaggio.
le variabili di una classe.. boh io ho sempre sentito dati membro e funzioni membro, poi l'importante è che ci si capisce :)
~FullSyst3m~
19-05-2009, 19:55
le variabili di una classe.. boh io ho sempre sentito dati membro e funzioni membro, poi l'importante è che ci si capisce :)
Io ho letto di variabili membro, di campi della funzione ecc.
In ogni caso le variabili di classe non credo che si possa fare a meno di utilizzarli, almeno in determinati casi. Poi dipende da cosa devi programmare e come strutturi il tuo programma.
Inoltre se usi Java puoi impostare i modificatori di accesso in base alle tue esigenze.
i modificatori di accesso penso ci siano per quasi tutti i linguaggi :D
comunque si, è chiaro che non ne faccio a meno delle variabili di classe, chiedevo consiglio sul design..
~FullSyst3m~
19-05-2009, 21:45
i modificatori di accesso penso ci siano per quasi tutti i linguaggi :D
comunque si, è chiaro che non ne faccio a meno delle variabili di classe, chiedevo consiglio sul design..
Allora ho frainteso io la domanda.
Comunque Python a livello di modificatori di accesso ad esempio non è cosi "ampio" come Java.
@wingman: ok, il mio metodo non è eccellente ma come posso fare allora?? :p
@tutti: nessun altro? mi è sorto un altro problema. ho un dato in una classe a e in una classe b e in una delle due classi diciamo devo confrontare questi dati(la rendo molto più semplice) come ci accedo se nelle classi non sono istanziati? :cry: comunque man mano che avanzo mi accorgo che metto set/get dappertutto e questo non mi piace :(
aiutoooooooooooooooooooooooooooooooooooo :help:
banryu79
20-05-2009, 12:47
...e in una delle due classi diciamo devo confrontare questi dati...
Sei sicuro che sia giusto fare il confronto in una delle due classi [A, B], e non in una terza classe?[C?]
Detto in altri termini: sei sicuro che la responsabilità del confronto sia da assegnare a una delle due classi, e non in una terza classe?
wingman87
20-05-2009, 13:01
@wingman: ok, il mio metodo non è eccellente ma come posso fare allora?? :p
Secondo me devi tenere i dati nella classe cui appartengono e non replicarli nelle altre. Quando nelle altre classi hai bisogno di quei dati li passi per argomento ai metodi che ne fanno uso.
Però stiamo parlando in modo un po' troppo teorico, non vorrei aver frainteso. Se posti un po' di codice di esempio credo di poterti suggerire meglio.
Ti stai riempiendo di get e set secondo me proprio perché stai replicando i dati dove non ce n'è bisogno, però anche stavolta potrei aver capito male, stiamo parlando a un livello molto astratto...
Sei sicuro che sia giusto fare il confronto in una delle due classi [A, B], e non in una terza classe?[C?]
Detto in altri termini: sei sicuro che la responsabilità del confronto sia da assegnare a una delle due classi, e non in una terza classe?
avevi ragione, quello l'ho risolto :D
Secondo me devi tenere i dati nella classe cui appartengono e non replicarli nelle altre. Quando nelle altre classi hai bisogno di quei dati li passi per argomento ai metodi che ne fanno uso.
Però stiamo parlando in modo un po' troppo teorico, non vorrei aver frainteso. Se posti un po' di codice di esempio credo di poterti suggerire meglio.
Ti stai riempiendo di get e set secondo me proprio perché stai replicando i dati dove non ce n'è bisogno, però anche stavolta potrei aver capito male, stiamo parlando a un livello molto astratto...
cavolo hai ragione anche tu.. non avevo proprio pensato di passarli solo ai metodi interessati :muro: :muro: ci provo, nel caso ho ancora problemi scrivo qui o posto codice :fagiano:
banryu79
20-05-2009, 13:14
scrivo qui o posto codice :fagiano:
Posta sempre il codice, assieme ai dubbi, ovviamente se puoi: aiuta noi lettori a capire il contesto in cui ti stai muovendo nel momento in cui scopri un dubbio (e il constesto ci aiuta a capire).
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.