Η αφαίρεση στον προγραμματισμό αναφέρεται στην απόκρυψη περιττών, αν και εξαιρετικά σημαντικών, πληροφοριών και στο να κάνει ορατές μόνο ορισμένες βασικές ή απαραίτητες πληροφορίες στον χρήστη. Αυτό γίνεται εφικτό μέσω της χρήσης αφηρημένων τάξεων.
Η αφηρημένη κλάση στη C# είναι ουσιαστικά μια κλάση που δεν επιτρέπει τη δημιουργία αντικειμένων. Το "Abstract" είναι μια λέξη-κλειδί ή ένας τροποποιητής που προκαλεί τη συγκεκριμένη κλάση ή μέθοδο να είναι αφηρημένη ή περιορισμένη. Μια αφηρημένη κλάση μπορεί να προσπελαστεί μόνο μέσω κληρονομιάς από διαφορετική κλάση.
Βασικές τακτικές
- Οι αφηρημένες κλάσεις είναι ημιτελείς κλάσεις που δεν μπορούν να δημιουργηθούν, αλλά χρησιμεύουν ως βάση για να κληρονομήσουν άλλοι.
- Περιέχουν τουλάχιστον μία καθαρή εικονική συνάρτηση, που σημαίνει ότι δεν έχει υλοποίηση και πρέπει να οριστεί από οποιαδήποτε παραγόμενη κλάση.
- Οι αφηρημένες κλάσεις μπορούν να έχουν μεταβλητές μέλους και συναρτήσεις μέλους με υλοποίηση, αλλά δεν είναι δυνατή η πρόσβαση σε αυτά μέσω αντικειμένων της αφηρημένης κλάσης.
Ιδιότητες και Στοιχεία της κλάσης Abstract σε C#
Πρέπει να υπάρχουν ορισμένοι παράγοντες για την έναρξη ή την πρόσβαση σε μια αφηρημένη τάξη. Έχουν καταγραφεί ως εξής.
- Μια αφηρημένη κλάση δημιουργεί μια βασική κλάση στην οποία έχουν πρόσβαση πολλές παραγόμενες κλάσεις. Οι προγραμματιστές πρέπει να δημιουργήσουν μια παράγωγη κλάση για να χρησιμοποιήσουν ή να εφαρμόσουν μια αφηρημένη κλάση.
- Η αφηρημένη κλάση επομένως, πρέπει να κληρονομηθεί από υποκλάσεις, οι οποίες μπορεί ακόμη και να παρακάμψουν τη συνάρτηση.
- Κάθε αφηρημένη κλάση απαιτεί τουλάχιστον μία αφηρημένη μέθοδο.
Παράδειγμα αφηρημένης τάξης σε C#
Επειδή ο μηχανισμός είναι πολύπλοκος και κατανοητός μόνο σε όσους γνωρίζουν τον προγραμματισμό Γλώσσα, είναι καλύτερα να ξεκινήσετε με ένα απλό παράδειγμα που θα σας βοηθήσει να εξηγήσετε την έννοια.
Ας υποθέσουμε ότι υπάρχει μια κλάση 'Tree', με μια υπάρχουσα σχεδιασμένη μέθοδο γνωστή ως 'type'. Τίποτα άλλο δεν ορίζεται και δεν παρέχονται άλλες συγκεκριμένες πληροφορίες – δεν γνωρίζουμε το είδος του δέντρου ή τους πιθανούς τύπους.
Εάν είναι διαθέσιμο ένα συγκεκριμένο παράδειγμα δέντρου, τότε δημιουργείται μια ξεχωριστή κλάση μέσω της κληρονομιάς της βασικής κλάσης, Tree. Η ιδέα είναι ότι η νέα τάξη, ας πούμε Pine ή Δρυς, δεν μπορεί να τροποποιήσει την κατασκευή ή τον ορισμό της βασικής κλάσης, δηλαδή το δέντρο. Πρέπει να δημιουργήσει την κλάση του, που προέρχεται από την κλάση Tree, και να ορίσει μια άλλη μέθοδο που κληρονομείται από τη βάση.
Πλεονεκτήματα της αφηρημένης τάξης σε C#
- Ενώ οι υποκλάσεις μπορούν να επιλέξουν είτε να εφαρμόσουν είτε να παρακάμψουν μια αφηρημένη κλάση, σίγουρα τροποποιήσεις μπορούν να γίνουν που απαιτούν την υλοποίηση μιας συγκεκριμένης λειτουργίας.
- Υπάρχει, επομένως, μεγάλος βαθμός ευελιξίας κατά το σχεδιασμό μιας αφηρημένης κλάσης σχετικά με το ποιες μέθοδοι πρέπει να εφαρμοστούν επιτακτικά.
- Ο προγραμματιστής μπορεί να επιλέξει πόσες αφηρημένες μεθόδους θέλει σε μια αφηρημένη τάξη. Είναι επίσης δυνατό να γράψετε τον κώδικα χωρίς να συμπεριλάβετε αφηρημένες μεθόδους.
- Μια αφηρημένη κλάση πρέπει να οριστεί μόνο μία φορά και μπορεί να προσπελαστεί ή να προέλθει από όσες φορές χρειάζεται.
- Μια αφηρημένη κλάση είναι πολύ χρήσιμη όταν υπάρχει ένα σύνολο κλάσεων που έχουν έναν βαθμό κοινότητας αλλά διαφέρουν ως προς την εφαρμογή της αφηρημένης κλάσης.
Μειονεκτήματα της αφηρημένης τάξης σε C#
- Μια αφηρημένη κλάση μπορεί να προστεθεί στην ιεραρχία κλάσεων μόνο εάν δεν υπάρχουν αφηρημένες κλάσεις.
- Αντικείμενα οποιασδήποτε αφηρημένης κλάσης μπορούν μόνο να αναφερθούν, χωρίς να δημιουργηθούν ποτέ.
- Παρόλο που οι αφηρημένες κλάσεις δεν μπορούν να δημιουργηθούν, δεν επιτρέπει στατικές μεταβλητές ή μεθόδους.
- 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
Τελευταία ενημέρωση: 11 Ιουνίου 2023
Η Sandeep Bhandari είναι κάτοχος πτυχίου Μηχανικού στους Υπολογιστές από το Πανεπιστήμιο Thapar (2006). Διαθέτει 20ετή εμπειρία στον τομέα της τεχνολογίας. Έχει έντονο ενδιαφέρον σε διάφορους τεχνικούς τομείς, συμπεριλαμβανομένων συστημάτων βάσεων δεδομένων, δικτύων υπολογιστών και προγραμματισμού. Μπορείτε να διαβάσετε περισσότερα για αυτόν στο δικό του βιο σελίδα.
Βρήκα αυτή την ανάρτηση ελαφρώς ειρωνική στην παρουσίασή της. Ωστόσο, κάνει την εξήγηση αρκετά ενδιαφέρουσα.
Αυτό το άρθρο παρέχει μια πολύ κατατοπιστική εξήγηση της αφαίρεσης στον προγραμματισμό. Πραγματικά το βρίσκω συναρπαστικό.
Συμφωνώ, Κούπερ. Αυτό είναι ένα πολύ κατατοπιστικό άρθρο.
Το παράδειγμα του δέντρου για να εξηγήσει την αφηρημένη τάξη είναι απλώς ιδιοφυές. Πολύ καλά έκανε ο συγγραφέας.
Ναι, Ελένη. Ένα τέλειο παράδειγμα για την απεικόνιση της έννοιας.
Δεν θα μπορούσα να συμφωνήσω περισσότερο μαζί σου, Έλενα.
Το άρθρο περιγράφει όμορφα τα πλεονεκτήματα και τα μειονεκτήματα. Μια ολοκληρωμένη αναφορά για όποιον ενδιαφέρεται να μάθει για τα αφηρημένα μαθήματα στη C#.
Συμφωνώ απόλυτα μαζί σου, Ograham. Είναι ένα κατατοπιστικό κομμάτι.
Ωραία συνοψίστηκε, Ograham. Μια εξαιρετική πηγή για προγραμματιστές.
Αυτό το άρθρο όχι μόνο υπογραμμίζει τα πλεονεκτήματα, αλλά καλύπτει και τα μειονεκτήματα μιας αφηρημένης τάξης στην C#. Πραγματικά εμπεριστατωμένη ανάλυση!
Απολύτως, Mjones. Είναι μια καλά ισορροπημένη άποψη του θέματος.
Ο κωμικός τόνος που χρησιμοποιείται για να εξηγήσει το θέμα παρέχει μια αναζωογονητική προοπτική. Συγχαρητήρια στον συγγραφέα!
Δεν θα μπορούσα να συμφωνήσω περισσότερο μαζί σου, Dean89.
Οπωσδήποτε, Dean89. Ένας υπέροχος συνδυασμός χιούμορ και πληροφοριών.
Η επιχειρηματολογική προσέγγιση αυτού του άρθρου είναι πραγματικά αξιοσημείωτη. Προσφέρει μια ισορροπημένη άποψη της έννοιας.
Συμφωνώ Yasmine. Η ενδελεχής ανάλυση είναι αξιέπαινη.
Βρίσκω την ευελιξία του σχεδιασμού μιας αφηρημένης τάξης πολύ ενδιαφέρουσα. Αυτό το άρθρο παρουσίασε τόσο τα πλεονεκτήματα όσο και τα μειονεκτήματα με σαφή και κατανοητό τρόπο.
Συμφωνώ απόλυτα μαζί σου, Ρίτσαρντς. Είναι μια υπέροχη ανάγνωση.
Εκτιμώ πολύ τη λεπτομερή ανάλυση των ιδιοτήτων και των στοιχείων της κλάσης Abstract στην C#. Υπέροχο άρθρο!
Σύμφωνοι, Sfox. Είναι κρίσιμες πληροφορίες για όποιον μαθαίνει C#.
Οι σκέψεις μου ακριβώς, Sfox. Εξαιρετική εξήγηση.
Νομίζω ότι τα πλεονεκτήματα που αναφέρονται εδώ καταδεικνύουν πραγματικά τη χρησιμότητα μιας αφηρημένης τάξης. Παρέχονται υπέροχες ιδέες.
Οπωσδήποτε, Γουίλιαμς. Τα πλεονεκτήματα είναι καλά διατυπωμένα.