Dopo aver descritto cosa significa programmare ad oggetti nella Prima e Seconda Parte di questo lungo articolo, in quest’ultima parte parlerò di come creo le mie classi nel codice e del tool che ho creato per agevolarmi nella sua scrittura.
Nelle classi una proprietà molto importante è l’incapsulamento, con questa è possibile scrivere codice che racchiude in essa delle parti che non vogliamo far vedere all’esterno.
Possono essere proprietà o metodi privati, che vivono internamente all’oggetto e che non è possibile far utilizzare dall’esterno.
Questo impedisce che importanti funzioni ma soprattutto importanti variabili, non vengano modificate durante i calcoli o le funzioni della classe.
Per fare ciò esiste una notazione particolare che implemento sistematicamente : le variabili private le scrivo in minuscolo, mentre le proprietà pubbliche con il primo carattere maiuscolo.
private int valore = 0; public int Valore { get { return this.valore; } set { this.valore = value; } }
come si vede da questo codice, è possibile avere variabili che verranno gestite internamente e che saranno esposte solo come le voglio io.
private int valoremio = 0; public int ValoreMio { get { return this.valoremio; } }
In questo caso questa proprietà è visibile all’esterno solo in lettura, e solo il mio codice potrà scrivere un valore in essa.
Ho così il massimo controllo del mio codice e potrò far vedere all’esterno solo quello che effettivamente serve, impedendo errori da parte di altri programmatori con la mia classe.
private int valore = 0; public int Valore { get { if (this.valore != 0) return this.valore; else return -1; } } public void CreaValore(int NuovoValore) { if (NuovoValore > 100) this.valore = NuovoValore; else this.valore = 0; }
In questo esempio si capisce cosa significa avere il pieno controllo del codice. Permetto di caricare un valore a quella variabile solo se maggiore di 100, altrimenti la lascio a zero.
Poi quando verrà letta questa proprietà, se non avrà un valore maggiore di zero, restituirò un valore uguale a -1 che spesso è il valore che certifica un errore.
MiaClasse myclass = new MiaClasse(); myclass.CreaValore(200); Console.Write(myclass.Valore.ToString()); // Verrà visualizzato 200 myclass.CreaValore(23); Console.Write(myclass.Valore.ToString()); // Verrà visualizzato -1
Questo succede a chi utilizza questa classe. Ho completamente gestito il valore della proprietà che è possibile modificare solo attraverso il Metodo CreaValore e il valore che restituirò sarà sempre da me gestito.
Per poter creare classi che di default abbiano il costrutto dell’esempio sopra (variabili private in minuscolo e proprietà con iniziale maiuscola), occorre scrivere molto codice e soprattutto molto codice noioso e ripetitivo. Così mi sono creato un tool che mi scrive il codice al posto mio.
Con questo tool, posso scrivere le proprietà che voglio nella mia classe e decidere se devono essere leggibili o modificabili esternamente.
E questo è il risultato della creazione della classe.
Ha generato un codice pronto per essere utilizzato nel mio programma.
Questo tool crea anche le collezioni di una classe, che vuol dire generare l’interfaccia con la collezione standard List ed adattarla con le variabili inserite.
Il bello di questo tool è che riesce anche a ricavare da un codice creato da esso o scritto da qualcun’altro, le proprietà e quindi a permettere di modificare una classe già esistente.
Ecco un esempio di come aiutarsi con semplici programmi per la stesura del codice.
E’ inutile perdere tempo per operazioni ripetitive, quando possiamo far creare dal computer stesso parte del nostro lavoro.