Problema: implementare un dato di tipo matrice che
supporti le seguenti funzionalità:
Si propongono varie implementazioni via via più
evolute:
1. inizialmente il problema viene risolto in forma
procedurale definendo il dato come struttura e fornendo le opportune funzioni
di gestione (allocazione/deallocazione, accesso,
stampa). Il tipo degli elementi è scelto dallo sviluppatore.
2. Il dato viene definito
come oggetto: le attività di allocazione/deallocazione
vengono
espletate nel costruttore/distruttore mentre le funzioni di accesso e stampa vengono
tradotte nei corrispondenti metodi.
3. I metodi di accesso
vengono unificati usando riferimenti agli elementi.
4. I metodi di accesso
e di stampa vengono semplificati sovraccaricando gli opportuni operatori
5. L’oggetto matrice viene
specializzato nella versione densa e sparsa. L’operatore di accesso
diviene puramente virtuale. Gli elementi vengono
memorizzati negli opportuni contenitori della libreria standard.
6. Le classi matrici vengono parametrizzate rispetto al tipo degli elementi in modo che questo
possa essere scelto dall’utente.