Considerazioni sulla progettazione della gerarchia delle classi relative all'estensibilità

Aggiornamento: novembre 2007

Anche le gerarchie di classi progettate correttamente sono soggette a un'evoluzione nel tempo. Le scelte iniziali operate durante la progettazione di una gerarchia di classi possono semplificare il lavoro in seguito.

Estensione delle gerarchie di classi

Di seguito viene fornito un elenco di suggerimenti che facilitano l'estensione delle gerarchie di classi:

  • Nella definizione delle gerarchie di classi si procede da un aspetto generale a quelli più specifici. Definire le classi in modo che siano più generali possibili a ogni livello della gerarchia di ereditarietà. Le classi derivate possono ereditare, riutilizzare ed estendere i metodi dalle classi base.

    Si supponga, ad esempio, di progettare una gerarchia di classi per classificare i modelli di periferiche hardware per computer. Durante la fase iniziale di definizione dei modelli di periferiche di output, è possibile definire le classi denominate Display, Printer e File. È quindi possibile definire le classi che implementano i metodi definiti nelle classi di base. È possibile ad esempio derivare la classe LCDDisplay da Display e implementare un metodo denominato EnterPowerSaveMode.

  • È bene abbondare nella definizione dei tipi di dati e della memoria per evitare modifiche difficoltose in seguito. Si deciderà, ad esempio, di utilizzare una variabile di tipo Long anche se per i dati correnti sarebbe sufficiente una variabile Integer standard.

  • Esporre solo gli elementi richiesti dalla classi derivate. I metodi e i campi Private riducono i conflitti di denominazione e proteggono altri utenti dall'uso di elementi che potrebbe essere necessario modificare in un secondo momento.

  • È necessario contrassegnare come Protected i membri che sono necessari solo alle classi derivate. In questo modo si garantisce che solo le classi derivate dipendano da tali membri e si semplifica l'aggiornamento dei membri in fase di sviluppo.

  • Verificare che i metodi della classe base non dipendano dai membri Overridable, la cui funzionalità può essere modificata dalle classi che ereditano.

Vedere anche

Concetti

Considerazioni relative alla selezione dei livelli di accesso per i metodi

Modifica della progettazione delle classi base dopo la distribuzione

Riferimenti

MustInherit

MustOverride