L'astrazione nella programmazione si riferisce all'occultamento di informazioni non necessarie, sebbene molto importanti, e al rendere visibili all'utente solo determinate informazioni chiave o richieste. Ciò è reso possibile attraverso l'uso di classi astratte.
La classe astratta in C# è essenzialmente una classe che non consente la creazione di oggetti. 'Abstract' è una parola chiave o un modificatore che fa sì che quella particolare classe o metodo sia astratta o ristretta. È possibile accedere a una classe astratta solo tramite ereditarietà da una classe diversa.
Punti chiave
- Le classi astratte sono classi incomplete che non possono essere istanziate ma servono come base da cui ereditare altri.
- Contengono almeno una funzione virtuale pura, il che significa che non ha implementazione e deve essere definita da qualsiasi classe derivata.
- Le classi astratte possono avere variabili membro e funzioni membro con implementazione, ma non è possibile accedervi tramite oggetti della classe astratta.
Proprietà e componenti della classe astratta in C#
Alcuni fattori devono essere presenti per avviare o accedere a una classe astratta. Sono stati elencati come segue.
- Una classe astratta crea una classe base a cui accedono comunemente diverse classi derivate. I programmatori devono creare una classe derivata per utilizzare o implementare una classe astratta.
- La classe astratta, quindi, deve essere ereditata dalle sottoclassi, che possono persino sovrascrivere la funzione.
- Ogni classe astratta richiede almeno un metodo astratto.
Esempio di una classe astratta in C#
Poiché il meccanismo è complicato e comprensibile solo a chi ha familiarità con il linguaggio di programmazione, è meglio iniziare con un esempio semplice che aiuti a spiegare il concetto.
Supponiamo che esista una classe 'Tree', con un metodo progettato esistente noto come 'type'. Non si definisce altro e non si forniscono altre informazioni particolari: non si conosce il tipo di albero oi possibili tipi.
Se è disponibile un esempio specifico di un albero, allora viene creata una classe separata tramite l'ereditarietà della classe base, Tree. L'idea è che la nuova classe, diciamo Pine o Oak, non possa modificare il costrutto o la definizione della classe base, ovvero Tree. Deve creare la sua classe, derivata dalla classe Tree, e definire un altro metodo ereditato dalla base.
Vantaggi della classe astratta in C#
- Sebbene le sottoclassi possano scegliere di implementare o sovrascrivere una classe astratta, è possibile apportare alcune modifiche che richiedono l'implementazione di una determinata funzione.
- C'è, quindi, un grande grado di flessibilità quando si progetta una classe astratta per quanto riguarda i metodi che devono essere imperativamente implementati.
- Il programmatore può scegliere quanti metodi astratti desidera in una classe astratta. È anche possibile scrivere il codice senza includere metodi astratti.
- Una classe astratta deve essere definita solo una volta ed è possibile accedervi o derivarla tutte le volte che è necessario.
- Una classe astratta è molto utile quando esiste un insieme di classi che hanno un certo grado di comunanza ma differiscono nella loro implementazione della classe astratta.
Svantaggi della classe astratta in C#
- Una classe astratta può essere aggiunta alla gerarchia delle classi solo se non esistono classi astratte.
- Gli oggetti di qualsiasi classe astratta possono essere solo referenziati, mai creati.
- Anche se le classi astratte non possono essere istanziate, non consente variabili o metodi statici.
- https://books.google.co.in/books?hl=en&lr=&id=UbJa11wLcqYC&oi=fnd&pg=PA125&dq=Abstract+Class+in+C%23&ots=y9lmboLlHj&sig=kk5oYAJSHpmo-FyHphcAlkUh4cc&redir_esc=y#v=onepage&q=Abstract%20Class%20in%20C%23&f=false
- https://books.google.co.in/books?hl=en&lr=&id=-w9ftEtwPGwC&oi=fnd&pg=PP8&dq=Abstract+Class+in+C%23&ots=XXCx6-5nlm&sig=CYfs0myaTnm1anSz4QUGcZ65uS4&redir_esc=y#v=onepage&q=Abstract%20Class%20in%20C%23&f=false