data abstraction c
Όλα όσα πρέπει να γνωρίζετε για την αφαίρεση στο C ++.
Σε αυτήν τη σειρά μαθημάτων C ++, θα μάθουμε όλες τις κύριες έννοιες του αντικειμενοστρεφούς προγραμματισμού στο C ++ οι οποίες είναι γνωστές ως οι τέσσερις πυλώνες του OOP.
- Αφαίρεση
- Ενθυλάκωση
- Κληρονομία
- Πολυμορφισμός
Σε αυτό το σεμινάριο, θα διερευνήσουμε τα πάντα σχετικά με την αφαίρεση δεδομένων στο C ++.
=> Κάντε κλικ εδώ για την σειρά απόλυτης προπόνησης C ++.
Τι θα μάθετε:
- Τι είναι η αφαίρεση;
- Υλοποίηση της αφαίρεσης σε C ++
- Πλεονεκτήματα της αφαίρεσης
- συμπέρασμα
- Συνιστώμενη ανάγνωση
Τι είναι η αφαίρεση;
Η αφαίρεση είναι μια τεχνική αντικειμενοστρεφούς προγραμματισμού που χρησιμοποιεί την οποία κρύβουμε τις λεπτομέρειες εφαρμογής από τον χρήστη και εκθέτουμε μόνο μια διεπαφή που απαιτείται.
Μπορούμε να πάρουμε ένα πραγματικό παράδειγμα ενός κλιματιστικού (AC). Έχουμε ένα τηλεχειριστήριο για τον έλεγχο των διαφόρων λειτουργιών AC, όπως εκκίνηση, διακοπή, αύξηση / μείωση της θερμοκρασίας, έλεγχος υγρασίας κ.λπ. Μπορούμε να ελέγξουμε αυτές τις λειτουργίες μόνο με ένα ρολόι ενός κουμπιού, αλλά εσωτερικά υπάρχει μια πολύπλοκη λογική που είναι υλοποιούνται για την εκτέλεση αυτών των λειτουργιών.
Ωστόσο, ως τελικός χρήστης, αυτό που εκθέσαμε είναι μόνο η απομακρυσμένη διεπαφή και όχι οι λεπτομέρειες εφαρμογής όλων αυτών των λειτουργιών.
Η αφαίρεση είναι ένας από τους τέσσερις πυλώνες του αντικειμενοστρεφούς προγραμματισμού και σχεδόν όλες οι λύσεις OOP βασίζονται στις αρχές αφαίρεσης, δηλαδή στον διαχωρισμό διεπαφών και λεπτομερειών εφαρμογής στο πρόγραμμα.
Στο παραπάνω διάγραμμα, έχουμε δείξει ένα αντικείμενο και το περιεχόμενό του ως εικονική αναπαράσταση. Μπορούμε να δούμε ότι το εσωτερικό μέρος αυτού του αντικειμένου είναι η βασική λειτουργικότητά του ακολουθούμενο από τις λεπτομέρειες εφαρμογής.
Στο OOP, αυτά τα δύο επίπεδα (αν και στις περισσότερες περιπτώσεις αυτό είναι μόνο ένα στρώμα) δεν εκτίθενται στον εξωτερικό κόσμο. Το εξώτατο επίπεδο, η διεπαφή, είναι το επίπεδο που παρέχεται για τον τελικό χρήστη προκειμένου να έχει πρόσβαση στη λειτουργικότητα του αντικειμένου.
Ως αποτέλεσμα, οποιεσδήποτε αλλαγές γίνονται στα εσωτερικά στρώματα του αντικειμένου δεν είναι εμφανείς στον τελικό χρήστη εφόσον η διεπαφή στην οποία εκτίθεται ο χρήστης παραμένει η ίδια.
Υλοποίηση της αφαίρεσης σε C ++
Το C ++ υποστηρίζει την αφαίρεση σε μεγάλο βάθος. Στο C ++ ακόμη και οι λειτουργίες της βιβλιοθήκης που χρησιμοποιούμε μπορούν να θεωρηθούν ως παράδειγμα αφαίρεσης.
Μπορούμε να αντιπροσωπεύσουμε την εφαρμογή της αφαίρεσης στο C ++ ως εξής:
η καλύτερη δωρεάν εφαρμογή λήψης μουσικής για Android
Όπως φαίνεται στο παραπάνω σχήμα, μπορούμε να εφαρμόσουμε την αφαίρεση στο C ++ με δύο τρόπους:
# 1) Χρήση τάξεων και προσδιοριστών πρόσβασης
Μια κλάση που εφαρμόζεται στο C ++ με δημόσιους, ιδιωτικούς και προστατευμένους προσδιοριστές πρόσβασης, μπορεί να θεωρηθεί ως εφαρμογή της αφαίρεσης.
Όπως ήδη γνωρίζουμε, η χρήση των προδιαγραφών πρόσβασης μας επιτρέπει να ελέγξουμε την πρόσβαση που δίνεται στα μέλη της τάξης. Μπορούμε να κάνουμε ορισμένα μέλη ιδιωτικά, ώστε να μην είναι προσβάσιμα εκτός της τάξης. Μπορούμε να έχουμε ορισμένα μέλη ως προστατευμένα, ώστε να είναι προσβάσιμα μόνο στις παράγωγες τάξεις. Τέλος, μπορούμε να κάνουμε ορισμένα μέλη δημόσια ώστε αυτά τα μέλη να είναι προσβάσιμα εκτός της τάξης.
Χρησιμοποιώντας αυτήν την έννοια, μπορούμε να εφαρμόσουμε την αφαίρεση με τέτοιο τρόπο ώστε οι λεπτομέρειες υλοποίησης να αποκρύπτονται από τον εξωτερικό κόσμο χρησιμοποιώντας τον προσδιοριστή ιδιωτικής πρόσβασης, ενώ η διεπαφή μπορεί να εκτεθεί στον εξωτερικό κόσμο χρησιμοποιώντας τον δημόσιο προσδιοριστή.
Ως εκ τούτου, μπορούμε να εφαρμόσουμε την αφαίρεση στο C ++, χρησιμοποιώντας μια κλάση για ομαδοποίηση δεδομένων και λειτουργιών σε μία μόνο μονάδα και χρησιμοποιώντας προσδιοριστές πρόσβασης για τον έλεγχο της πρόσβασης σε αυτά τα δεδομένα και τις λειτουργίες.
Ας εφαρμόσουμε το ακόλουθο παράδειγμα για να το δείξουμε αυτό.
#include #include using namespace std; class sample { int num1,num2; void readNum(){ cout<>num1; cout<>num2; } public: void displaySum() { readNum(); cout<<'
Sum of the two numbers = '< Παραγωγή:
Εισαγάγετε τον αριθμό 1: 10
πώς να γίνετε ηγέτης βιβλίο
Πληκτρολογήστε num2: 20
Άθροισμα των δύο αριθμών = 30
Στο παραπάνω πρόγραμμα, έχουμε μια κλάση δείγματος που έχει δύο ακέραιες μεταβλητές, num1 και num2. Έχει επίσης δύο λειτουργίες readNum και displaySum. Τα num1 και num2 των μελών δεδομένων, καθώς και η συνάρτηση readNum, είναι ιδιωτικά στην τάξη.
Η λειτουργία displaySum είναι δημόσια για την τάξη. Στην κύρια συνάρτηση, δημιουργούμε ένα αντικείμενο δείγματος τάξης και callSum που διαβάζει τους δύο αριθμούς καθώς και εκτυπώνει το άθροισμά τους.
Αυτή είναι η εφαρμογή αφαίρεσης. Εκθέτουμε μόνο μία λειτουργία στο κοινό, διατηρώντας παράλληλα τα άλλα μέλη και τις λειτουργίες δεδομένων. Αν και αυτό είναι απλώς ένα παράδειγμα για την απόδειξη της αφαίρεσης, ενώ εφαρμόζουμε προβλήματα στην πραγματική ζωή, μπορούμε να έχουμε πολλά επίπεδα αφαίρεσης στο C ++.
# 2) Χρήση εφαρμογής αρχείου κεφαλίδας
Χρησιμοποιούμε αρχεία κεφαλίδας στο πρόγραμμα C ++ για εισαγωγή και χρήση προκαθορισμένων λειτουργιών. Για αυτό, χρησιμοποιούμε την οδηγία #include για να συμπεριλάβουμε αρχεία κεφαλίδας στο πρόγραμμά μας.
Για παράδειγμα, στο παραπάνω πρόγραμμα, έχουμε χρησιμοποιήσει τις συναρτήσεις cin και cout. Όσον αφορά αυτές τις λειτουργίες, γνωρίζουμε μόνο πώς να τις χρησιμοποιήσουμε και ποιες είναι οι παράμετροι που παίρνουν.
Δεν ξέρουμε τι συμβαίνει στο παρασκήνιο όταν καλούνται αυτές οι συναρτήσεις ή πώς εφαρμόζονται στο αρχείο κεφαλίδας iostream. Αυτός είναι ένας άλλος τρόπος αφαίρεσης που παρέχεται από το C ++.
Δεν γνωρίζουμε τις λεπτομέρειες υλοποίησης όλων των λειτουργιών που εισάγουμε από τα αρχεία κεφαλίδας.
Εδώ είναι ένα άλλο παράδειγμα για την επίδειξη της αφαίρεσης.
#include #include using namespace std; class employee{ int empId; string name; double salary,basic,allowances; double calculateSalary(int empId){ salary = basic+allowances; return salary; } public: employee(int empId, string name,double basic,double allowances): empId(empId),name(name),basic(basic),allowances(allowances){ calculateSalary(empId); } void display(){ cout<<'EmpId = '< Παραγωγή:
EmpId = 1 Όνομα = Ved
Μισθός υπαλλήλου = 18245.4

Σε αυτό το παράδειγμα, έχουμε ορίσει έναν υπάλληλο της τάξης που έχει ιδιωτικά στοιχεία όπως empId, όνομα, λεπτομέρειες μισθού όπως βασικά και επιδόματα. Ορίζουμε επίσης μια ιδιωτική συνάρτηση 'calculSalary' η οποία υπολογίζει τον μισθό χρησιμοποιώντας βασικά και επιδόματα.
Έχουμε έναν κατασκευαστή για να προετοιμάσουμε όλα τα δεδομένα για ένα συγκεκριμένο αντικείμενο εργαζομένου. Ονομάζουμε επίσης τη συνάρτηση 'calculSalary' από τον κατασκευαστή για τον υπολογισμό του μισθού του τρέχοντος υπαλλήλου.
Στη συνέχεια, έχουμε μια λειτουργία 'εμφάνισης' που εμφανίζει empId, όνομα και μισθό. Στην κύρια συνάρτηση, δημιουργούμε ένα αντικείμενο υπαλλήλου της τάξης και καλούμε τη λειτουργία εμφάνισης.
Μπορούμε να δούμε ξεκάθαρα το επίπεδο αφαίρεσης που έχουμε παράσχει σε αυτό το πρόγραμμα. Έχουμε αποκρύψει όλα τα στοιχεία του υπαλλήλου, καθώς και τη συνάρτηση Calary Salary από τον χρήστη, καθιστώντας τα ιδιωτικά.
Έχουμε εκθέσει μόνο μία οθόνη λειτουργίας στον χρήστη που δίνει όλες τις πληροφορίες σχετικά με το αντικείμενο των εργαζομένων στον χρήστη και ταυτόχρονα, κρύβει επίσης λεπτομέρειες όπως τα προσωπικά δεδομένα και τον τρόπο υπολογισμού του μισθού του υπαλλήλου.
Κάνοντας αυτό, στο μέλλον, εάν θέλουμε να προσθέσουμε περισσότερες λεπτομέρειες και να αλλάξουμε τον τρόπο υπολογισμού του μισθού, δεν χρειάζεται να αλλάξουμε τη λειτουργία εμφάνισης. Ο χρήστης δεν θα γνωρίζει αυτές τις αλλαγές.
Πλεονεκτήματα της αφαίρεσης
Παρακάτω αναφέρονται μερικά από τα πλεονεκτήματα της αφαίρεσης.
- Ο προγραμματιστής δεν χρειάζεται να γράψει κώδικα χαμηλού επιπέδου.
- Η αφαίρεση προστατεύει την εσωτερική εφαρμογή από κακόβουλη χρήση και σφάλματα.
- Η αφαίρεση μπορεί να αποτρέψει την επανάληψη κώδικα και έτσι ο προγραμματιστής πρέπει να εκτελεί τις ίδιες εργασίες ξανά και ξανά.
- Η αφαίρεση προωθεί την επαναχρησιμοποίηση κώδικα και ταξινομεί σωστά τα μέλη των δεδομένων τάξης.
- Ο Προγραμματιστής μπορεί να αλλάξει τις εσωτερικές λεπτομέρειες της εφαρμογής της τάξης χωρίς τη γνώση του τελικού χρήστη, χωρίς να επηρεάσει τις λειτουργίες του εξωτερικού επιπέδου.
συμπέρασμα
Η αφαίρεση είναι μια από τις πιο σημαντικές έννοιες στο OOP και εφαρμόζεται σε μεγάλο βάθος στο C ++. Χρησιμοποιώντας την αφαίρεση, μπορούμε να διατηρήσουμε τις λεπτομέρειες εφαρμογής του προγράμματος σε αναδιπλούμενη κατάσταση και να εκθέσουμε μόνο τις λεπτομέρειες που θέλουμε στον έξω κόσμο.
Χρησιμοποιώντας την έννοια της αφαίρεσης, μπορούμε να σχεδιάσουμε αφηρημένους τύπους δεδομένων και τάξεις που λειτουργούν ως σκελετός στη λύση προγραμματισμού πάνω από την οποία έχει δημιουργηθεί μια ολόκληρη λύση. Καθώς προχωράμε στα θέματα OOP, θα μάθουμε περισσότερα για αυτούς τους τύπους και τάξεις.
Στα επερχόμενα σεμινάρια μας, θα μάθουμε για έναν άλλο πυλώνα του OOP, δηλ. Encapsulation. Θα ζυγίσουμε επίσης την αφαίρεση και τον εγκλεισμό μαζί εκεί.
=> Αναζητήστε ολόκληρη τη σειρά προπόνησης C ++ εδώ.
Συνιστώμενη ανάγνωση
- Τύποι δεδομένων C ++
- Ενθυλάκωση σε C ++
- Top 10 Εργαλεία Επιστήμης Δεδομένων το 2021 για την εξάλειψη του προγραμματισμού
- Αντικειμενοστραφής προγραμματισμός στο C ++
- Εισαγωγή στις δομές δεδομένων στο C ++
- 70+ ΚΑΛΥΤΕΡΑ C ++ Tutorials για να μάθουν τον προγραμματισμό C ++ ΔΩΡΕΑΝ
- Παράμετρος δεδομένων JMeter με χρήση μεταβλητών καθορισμένων από τον χρήστη
- 10+ καλύτερα εργαλεία συλλογής δεδομένων με στρατηγικές συλλογής δεδομένων