Questo topic e' stato chiuso dal moderatore.
14/09/10 9:48
Marcus65
Sto studiando la guida di Totem. Giunto al polimorfismo e provati vari programmi di esempi ed altri di mia “invenzione”, mi restano dei dubbi sull’uso degli scope.
Le variabili interne ad una classe mi pare sia sempre bene dichiararle private o protected (se la classe eredita una o più classi derivate). Ma mi sfugge il senso dello scope private nel caso di variabili mediate da una property public. Solo se la property è readonly la variabile private è realmente immodificabile (immetto il suo valore una volta tramite il costruttore e quello resta). Altrimenti ci si può accedere tranquillamente dall’esterno della classe e cambiarla… Cosa c’è di sbagliato nel mio ragionamento ?
Ancora: come esercizio sul polimorfismo mi sto inventando un programmino che calcola le paghe dei dipendenti di una ditta, così strutturato: c’è una classe base “dipendente” con i seguenti campi: Nome, Cognome, DataNascita, OreLavorate, PagaOraria e una function CalcoloStipendio. Poi ci sono tre classi : Impiegato, Operaio, Dirigente che ereditano dalla classe base. Il campo PagaOraria e la funzione CalcoloStipendio sono oggetto di polimorfismo: in ognuna delle tre classi derivate il calcolo avverrà in maniera differente.
Mi verrebbe da dichiarare tutto protected nella classe base e private eventuali variabili interne alle classi derivate. La data di nascita la dichiarerei readonly come nei programmi di esempio nelle lezioni di totem. Ma perché la data di nascita soltanto può essere immodificabile e non pure il nome e cognome ecc? D'altronde posso sbagliarmi a inserire la data di nascita come pure il cognome…. Invece una eventuale data odierna acquisita dal sistema mi pare abbia ben ragione di essere read only: è quella, non deve essere cambiata.
Sono stato prolisso me ne rendo conto ma, spendendo qualche parola in più, spero di aver chiarito bene la natura dei miei dubbi e ringrazio chi volesse fornirmi delucidazioni.
Le variabili interne ad una classe mi pare sia sempre bene dichiararle private o protected (se la classe eredita una o più classi derivate). Ma mi sfugge il senso dello scope private nel caso di variabili mediate da una property public. Solo se la property è readonly la variabile private è realmente immodificabile (immetto il suo valore una volta tramite il costruttore e quello resta). Altrimenti ci si può accedere tranquillamente dall’esterno della classe e cambiarla… Cosa c’è di sbagliato nel mio ragionamento ?
Ancora: come esercizio sul polimorfismo mi sto inventando un programmino che calcola le paghe dei dipendenti di una ditta, così strutturato: c’è una classe base “dipendente” con i seguenti campi: Nome, Cognome, DataNascita, OreLavorate, PagaOraria e una function CalcoloStipendio. Poi ci sono tre classi : Impiegato, Operaio, Dirigente che ereditano dalla classe base. Il campo PagaOraria e la funzione CalcoloStipendio sono oggetto di polimorfismo: in ognuna delle tre classi derivate il calcolo avverrà in maniera differente.
Mi verrebbe da dichiarare tutto protected nella classe base e private eventuali variabili interne alle classi derivate. La data di nascita la dichiarerei readonly come nei programmi di esempio nelle lezioni di totem. Ma perché la data di nascita soltanto può essere immodificabile e non pure il nome e cognome ecc? D'altronde posso sbagliarmi a inserire la data di nascita come pure il cognome…. Invece una eventuale data odierna acquisita dal sistema mi pare abbia ben ragione di essere read only: è quella, non deve essere cambiata.
Sono stato prolisso me ne rendo conto ma, spendendo qualche parola in più, spero di aver chiarito bene la natura dei miei dubbi e ringrazio chi volesse fornirmi delucidazioni.
aaa