Introduzione
Negli ultimi giorni ho pensato un po' a cosa poter
realizzare nelle prossime settimane per scrivere dei post che abbiano un
qualche senso pratico, in modo da essere più intuitivi e comprensibili a chi mi
seguirà.
Esattamente lunedì sera, dopo cena, era in camera mia con mio fratello e mi
guardavo attorno, girovagando a caso alla ricerca di un po' di ispirazione. Voi
non potete saperlo, ma in camera mia sono letteralmente circondato da libri di
ogni sorta, alcuni dei quali (solo quelli che ho letto) sono
elencati qua. Mi sono ricordato di quando, negli anni '80, usavo il mio
fedele Texas Instruments TI-99 per gestire un piccolo database
di tutti i libri che avevo in quel periodo. Inserivo per ciascuno il titolo,
l'autore, altre informazioni e - cosa che mi divertiva
parecchio - il luogo all'interno della casa dove lo mettevo (mensola 1,
scaffale 5, libreria in salotto). Beh, ho pensato di riproporre questo concetto
in .NET 2.0. Attenzione: non tratterò assolutamente
di come creare un'applicazione da zero, quanto piuttosto di come
implementare un set di classi che potrebbero in linea teorica fungere
da scheletro per un'eventuale applicazione che possa:
- gestire un database di libri
- gestire la collocazione/luogo/ripostiglio di ogni libro, per sapere dov'è
quando lo vogliamo
Il set di classi iniziali
Ecco il diagramma semplice
semplice di cosa ho in testa.
In pratica, la classe Storage rappresenta banalmente il
nostro database nel sua interezza. Lo storage (che possiamo immaginare come se
fosse casa nostra, per esempio) contiene tante istanze di Shelf
(scaffale), un bel nome che dà un senso di hardware. Uno shelf non è
nient'altro che un oggetto che rappresenta un luogo (mensola, scaffale, angolo)
dove possiamo riporre un libro. Infine, ogni shelf può ovviamente contenere una
o più istanza di Book, che - come dice il nome stesso - è il
libro vero e proprio.
Implementazione delle classi, seguendo la Preparation Guide
dell'esame
E' vero, si tratta di implementare delle classi semplici,
da un certo punto di vista. Ho intenzione però di estenderle, di scrivere in
modo tale da approfondire tutti quei concetti teorici che vengono tirati in
ballo dalla Preparation Guide dell'esame 70-536. Non solo: grazie alla vostra
collaborazione, sicuramente verranno alla luce altre idee e proposte, per
cui mi aspetto che questa idea di base possa subìre qualche cambiamento, per cui
- sappiatelo - aspetto solo voi e la vostra collaborazione.
Queste classi si prestano molto bene, direi, per
essere compliant con le varie interfacce built-in di .NET
(ICollection, IList, IComparer, IEquatable, etc.). Le implementeremo dotandole
di metodi e proprietà specifiche e vedremo il vantaggio di usare generics.
Potremo criptare e decriptare le classi Book,
serializzarle, giocare con i vari tipi di Collection di .NET: tutti argomenti
che mi stanno parecchio a cuore e che intendo affrontare insieme a voi.
"Voglio dire la mia...ma come?"
E' ancora tutto
sperimentale, ma l'idea è questa. Sul mio
blog proporrò i contenuti, in modo simile a quanto fatto in
passato: cioè, post chiari, semplice ed amichevoli. Gli stessi
contenuti verranno proposti - se accettati - anche come articoli sul sito UGIdotNET, però in modo
un po' più rigoroso e, soprattutto, marcando bene il territorio, ovvero parlando
di un argomento ben specifico: Generics, interfacce (IList, ICollection,
IEnumerator, etc.), classe Thread, etc. etc. Infine - ultimo ma non ultimo - il
wiki di
UGIdotNET, che fungerà da aggregatore a
tutte queste risorse: per ciascun argomento raccoglierà documentazione on-line,
i miei post e altre risorse oltre che - importantissimo - la
possibilità per chiunque di voi di partecipare liberamente al
progetto.
Non è mica male, vero? Speriamo di farcela!