Che cos'è una classe astratta?
Nella programmazione orientata agli oggetti, una classe astratta fornisce una classe base che può essere utilizzata per fornire ad altre classi un'implementazione e un'interfaccia parziali. Sono incompleti da soli e utilizzati in situazioni ereditarie in molti linguaggi di programmazione come Java, C ++ e C #. Il loro uso come classe base significa che vengono spesso indicati come una classe base astratta (ABC).
Parte integrante della programmazione orientata agli oggetti, l'astrazione dei dati rimuove i dettagli non necessari di un oggetto. Essenzialmente, riduce l'oggetto fino alle sue principali caratteristiche identificative. Queste caratteristiche di base forniscono un modello che può essere utilizzato per creare altri oggetti con le stesse proprietà, differendo solo nei dettagli.
Questo progetto è definito come una classe. Le classi vengono utilizzate per incapsulare il codice, rendendolo più semplice per il programmatore, poiché può fare riferimento a routine comuni specifiche invece di scrivere più e più volte le routine. I programmatori creano oggetti figlio dalle classi e questi oggetti ereditano le funzioni e i metodi all'interno della classe padre.
Lo scopo di una classe astratta è quello di essere il framework su cui sono costruite altre classi. Gli oggetti non possono essere creati direttamente da una classe astratta, ma solo dalle sottoclassi appartenenti alla classe astratta. Affinché un oggetto erediti da una classe astratta, è necessario creare una sottoclasse. Gli oggetti di una sottoclasse creata di una classe astratta ereditano le proprietà di quella classe astratta.
Ogni classe modella un concetto e le classi astratte tendono a modellare concetti più astratti usando metodi astratti. I metodi astratti sono subroutine all'interno di una classe astratta che non contiene implementazione. Queste subroutine vengono utilizzate come segnaposto per essere sovrascritte da una sottoclasse o da un oggetto progettato in base alla classe che contiene il metodo astratto stesso.
Esistono diversi metodi per creare una classe astratta. Ad esempio, in C ++, viene creata una classe astratta sviluppando una classe con almeno un metodo astratto o una funzione virtuale pura. Java utilizza una parola chiave, "astratto", per indicare una classe astratta. Tuttavia, non sono definiti in linguaggi di programmazione che non supportano l'idea di eredità.
L'ereditarietà è il processo di creazione di nuovi oggetti dalle classi in cui i nuovi oggetti possono utilizzare le funzioni e i metodi definiti all'interno delle loro classi principali senza la necessità di riadattare il programma. Questo è il motivo per cui una classe astratta è utile. Le classi figlio e gli oggetti figlio di quelle sottoclassi ereditano le proprietà dalla classe astratta padre. Le classi astratte sono considerate superclassi e sono in cima alla gerarchia della struttura delle classi, quindi non hanno senso in un linguaggio che non supporta l'ereditarietà.