Che cos'è la gerarchia di classe?
Una gerarchia di classi, chiamata anche tassonomia di classe, è un gruppo di classi correlate che sono collegate tramite ereditarietà per fare cose simili. La parte superiore della gerarchia può essere una singola classe base da cui derivano tutte le altre classi sottostanti oppure la gerarchia può avere più classi base le cui funzionalità si uniscono in seguito in una o più classi derivate. Le relazioni tra le classi possono essere illustrate come alberi e ogni albero più piccolo all'interno della grande tassonomia può anche essere considerato una gerarchia.
Non tutte le gerarchie di classi possono avere più radici e la struttura di qualsiasi gerarchia di classi dipende in gran parte dal linguaggio in cui è scritta. Il C ++ consente l'ereditarietà multipla, quindi gerarchie complesse possono essere costruite con più radici e più alberi che si fondono l'uno nell'altro. Java®, d'altra parte, è limitato alla singola eredità, quindi le sue relazioni di classe sono generalmente più semplici, costruite come alberi relativamente autonomi con una singola radice. L'ereditarietà delle interfacce può aggiungere una certa complessità a una gerarchia di classi in Java®, ma le interfacce non vengono quasi mai invocate in un framework così complesso che sarebbe come unire gli alberi.
I componenti di una gerarchia di classi possono variare nel tipo e nella funzione, purché le regole del linguaggio siano sempre seguite rispetto all'eredità. Le classi in una gerarchia possono essere pubbliche, protette, astratte, concrete o virtuali. È inoltre possibile utilizzare interfacce, funzioni globali e amici. A seconda del linguaggio del computer, alcuni di questi tipi potrebbero prestarsi meglio all'eredità rispetto ad altri. In generale, le gerarchie sono molto flessibili e possono essere utilizzate in molti modi per molti scopi.
Non ci sono regole rigide riguardo a dove particolari tipi di classi devono essere inseriti in una gerarchia. Ogni classe può essere concepibile in uno dei tipi sopra menzionati. In generale, le ultime classi della gerarchia che non hanno classi derivate al di sotto di esse dovrebbero essere pubbliche e concrete. Poiché possono esistere anche gerarchie di classi puramente astratte, tuttavia, questa è solo una regola empirica.
Sebbene una gerarchia di classi possa essere uno strumento utile per organizzare il codice e incapsulare la funzionalità, potrebbero esserci momenti in cui approfondire una gerarchia in profondità può effettivamente confondere il codice, piuttosto che chiarirlo e renderlo più semplice da mantenere. Costruire una relazione solida tra molte classi richiede una certa lungimiranza; mentre inizialmente potrebbe essere più semplice suddividere il codice in molti piccoli pezzi, questi piccoli pezzi possono diventare più difficili da gestire in seguito. Se costruita correttamente, una gerarchia di classi aiuta sia gli sviluppatori che gli utenti a determinare come funzionano le classi. Se è costruito senza manutenzione e chiarezza, i molti livelli di eredità possono essere fonte di confusione nel guardare indietro e comprendere.