Che cos'è un metodo astratto?
Nella programmazione orientata agli oggetti, le subroutine chiamate "metodi" sono usate per eseguire funzioni in un programma. Questi metodi consistono in istruzioni di programmazione che eseguono un'azione, impostano parametri di input per personalizzare le azioni e possono restituire o produrre un valore di un tipo di oggetto o classe. I metodi sono le azioni eseguite in un programma da una determinata classe o all'interno di un oggetto e vengono utilizzati per accedere e manipolare i dati memorizzati all'interno di un oggetto. Esistono molti metodi diversi e ognuno ha un uso particolare. Un tipo specifico che viene eseguito da una superclasse astratta ed ereditato da sottoclassi è noto come metodo astratto.
In generale, il metodo astratto esegue un'implementazione minima o nulla all'interno della sua superclasse astratta. I codici contenuti in questo tipo di metodo sono considerati codici fittizi e non vengono implementati da soli. Ciò non significa che il metodo astratto specifico in una particolare classe astratta non venga utilizzato. Piuttosto, il metodo astratto funge da modello o segnaposto per le sottoclassi per completare l'implementazione del metodo.
Le superclassi possono contenere più sottoclassi e tutte le sottoclassi di una superclasse hanno determinati stati e comportamenti simili. Le classi astratte, quindi, sono un tipo di classe virtuale che presenta ereditarietà virtuale. Ciò significa che qualsiasi sottoclasse derivata da una superclasse eredita le restrizioni della superclasse da cui deriva. Pertanto, i metodi nelle sottoclassi sono derivati da metodi astratti di superclassi. Durante la programmazione e l'utilizzo di metodi astratti, il programmatore deve dichiarare la classe astratta anziché virtuale.
Ad esempio, una super classe di "Oggetti grafici" contiene le sottoclassi "Cerchio", "Quadrato", ecc. In quanto tale, tutti i cerchi e i quadrati hanno gli stessi stati - orientamento, posizione, colore di riempimento, colore della linea - e comportamenti - moveTo , ridimensionare, ruotare, disegnare - come "Oggetti grafici". Tutte le sottoclassi di questa super classe hanno le stesse qualità, ma sono implementate in modi diversi. Il metodo astratto della superclasse fornisce le basi senza implementazione e le sottoclassi eseguono l'implementazione effettiva usando gli stessi metodi. Anche se ogni sottoclasse utilizza lo stesso metodo della classe astratta, definiscono in modo univoco il modo in cui verrà eseguito il metodo.
L'uso di un metodo astratto consente la generalizzazione ai massimi livelli, o la superclasse, e le specifiche ai livelli inferiori o le sottoclassi. Questa gerarchia riduce al minimo la quantità di programmazione del metodo per ciascuna sottoclasse specifica. L'uso di questi metodi consente anche l'idempotenza delle sottoclassi, il che significa che se un metodo viene implementato più volte, il risultato è lo stesso ogni volta.