Le classi sono i moduli del sistema software. I moduli devono avere: riusabilità,
estensibilità e potenza espressiva.
I moduli devono avere le seguenti caratteristiche:
devono disporre di un'interfaccia che consenta di definire,
istanziare, inizializzare oggetti ed applicarvi i metodi disponibili;
devono nascondere, al loro interno, la struttura dati e
gli algoritmi dei metodi;
devono essere definiti in modo da prescindere dagli aspetti
implementativi. In tal modo è possibile cambiare la struttura dati,
senza modificare l'interfaccia.
ereditarietà delle classi: deve essere possibile,
scrivere nuovi moduli derivati da moduli preesistenti. Gli oggetti della
classe derivata, ereditano i metodi della classe superiore. Nella sottoclasse
si possono definire nuovi metodi o ridefinire dei metodi della classe superiore;
genericità del tipo dell'oggetto: consente di associare
ad un metodo, oggetti di tipo diverso.