1. Principi di design

Principio Open-Closed

Ogni modulo deve essere aperto alle estensioni, ma chiuso alle modifiche: le classi devono essere sempre espandibili, senza applicare modiche al codice già scritto.

I principi base usati per raggiungere questo obiettivo sono ereditarietà, overriding, polimorfismo e binding dinamico.

Principio di sostituzione di Liskov

Gli oggetti di una sottoclasse devono rispettare le specifiche dei metodi delle superclassi: il comportamento dei metodi delle sottoclassi devono essere compatibili con quelli dei metodi delle superclassi.

Le sottoclassi possono definire nuovi metodi e fare override di metodi ereditati (aggiungendo nuovi casi di comportamento rispetto a quelli già presenti).

Principio di inversione delle dipendenze

Per creare delle relazioni di dipendenza conviene instaurarle tra Interfacce/Classi Astratte e classi concrete, invece che tra classi concrete.

Altri principi