|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
[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 ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2776
|
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. |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Quote:
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Quote:
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.
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
i modificatori di accesso penso ci siano per quasi tutti i linguaggi
![]() comunque si, è chiaro che non ne faccio a meno delle variabili di classe, chiedevo consiglio sul design.. |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Quote:
Comunque Python a livello di modificatori di accesso ad esempio non è cosi "ampio" come Java.
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
@wingman: ok, il mio metodo non è eccellente ma come posso fare allora??
![]() @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? ![]() ![]() aiutoooooooooooooooooooooooooooooooooooo ![]() |
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
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?
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2776
|
Quote:
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... |
|
![]() |
![]() |
![]() |
#11 | ||
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Quote:
![]() Quote:
![]() ![]() ![]() Ultima modifica di ndakota : 20-05-2009 alle 13:12. |
||
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
edit: doppio
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
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).
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:15.