Τι είναι μια τάξη;
Η τάξη C ++ συνδυάζει δεδομένα και μεθόδους για τον χειρισμό των δεδομένων σε μία. Οι τάξεις καθορίζουν επίσης τις μορφές των αντικειμένων. Τα δεδομένα και οι μέθοδοι που περιέχονται σε μια τάξη είναι γνωστά ως μέλη της τάξης. Η τάξη είναι ένας τύπος δεδομένων που καθορίζεται από το χρήστη. Για πρόσβαση στα μέλη της τάξης, χρησιμοποιούμε μια παρουσία της τάξης. Μπορείτε να δείτε μια τάξη ως σχεδιάγραμμα για ένα αντικείμενο.
Μια τάξη είναι ένα πρωτότυπο για ένα σπίτι. Δείχνει την τοποθεσία και τα μεγέθη των θυρών, των παραθύρων, των δαπέδων κ.λπ. Από αυτές τις περιγραφές, μπορούμε να κατασκευάσουμε ένα σπίτι. Το σπίτι γίνεται αντικείμενο. Είναι δυνατό να δημιουργηθούν πολλά σπίτια από το πρωτότυπο. Επίσης, είναι δυνατή η δημιουργία πολλών αντικειμένων από μια τάξη.
Στο παραπάνω σχήμα, έχουμε ένα πρωτότυπο μονοκατοικίας. Από αυτό το πρωτότυπο, δημιουργήσαμε δύο σπίτια με διαφορετικά χαρακτηριστικά.
Σε αυτό το σεμινάριο, θα μάθετε:
- Τι είναι μια τάξη;
- Παράδειγμα τάξης
- Ιδιωτικές και δημόσιες λέξεις-κλειδιά
- Ορισμός αντικειμένου
- Πρόσβαση σε μέλη δεδομένων
- Λειτουργίες μέλους τάξης
- Κατασκευαστές και Καταστροφείς
Δήλωση τάξης
Στο C +, μια κλάση ορίζεται χρησιμοποιώντας τη λέξη-κλειδί κλάσης. Αυτό πρέπει να ακολουθείται από το όνομα της τάξης. Στη συνέχεια, το σώμα της τάξης προστίθεται ανάμεσα σε σγουρά τιράντες {}.
Σύνταξη:
class class-name{// data// functions};
- Το όνομα κλάσης είναι το όνομα που θα εκχωρηθεί στην τάξη.
- Τα δεδομένα είναι τα δεδομένα για την κλάση, που συνήθως δηλώνονται ως μεταβλητές.
- Οι συναρτήσεις είναι οι συναρτήσεις τάξης.
Ιδιωτικές και δημόσιες λέξεις-κλειδιά
Πρέπει να έχετε βρει αυτές τις δύο λέξεις-κλειδιά. Είναι τροποποιητές πρόσβασης.
- Ιδιωτικός:
Όταν η ιδιωτική λέξη-κλειδί χρησιμοποιείται για τον ορισμό μιας συνάρτησης ή κλάσης, γίνεται ιδιωτική. Αυτά είναι προσβάσιμα μόνο μέσα από την τάξη.
- Δημόσιο:
Η δημόσια λέξη-κλειδί, από την άλλη πλευρά, δημοσιοποιεί τα δεδομένα / τις συναρτήσεις. Αυτά είναι προσβάσιμα εκτός της τάξης.
Ορισμός αντικειμένου
Τα αντικείμενα δημιουργούνται από τάξεις. Τα αντικείμενα της τάξης δηλώνονται με παρόμοιο τρόπο όπως δηλώνονται οι μεταβλητές. Το όνομα της τάξης πρέπει να ξεκινήσει, ακολουθούμενο από το όνομα του αντικειμένου. Το αντικείμενο του τύπου κλάσης.
Σύνταξη:
class-name object-name;
- Το όνομα κλάσης είναι το όνομα της κλάσης από την οποία πρόκειται να δημιουργηθεί ένα αντικείμενο.
- Το αντικείμενο-όνομα είναι το όνομα που θα εκχωρηθεί στο νέο αντικείμενο.
Αυτή η διαδικασία δημιουργίας ενός αντικειμένου από μια τάξη είναι γνωστή ως instantiation.
Πρόσβαση σε μέλη δεδομένων
Για πρόσβαση στα δημόσια μέλη μιας τάξης, χρησιμοποιούμε τον τελεστή σημείων (.). Αυτά είναι μέλη που έχουν επισημανθεί με τροποποιητή δημόσιας πρόσβασης.
Παράδειγμα 1:
#includeusing namespace std;class Phone {public:double cost;int slots;};int main() {Phone Y6;Phone Y7;Y6.cost = 100.0;Y6.slots = 2;Y7.cost = 200.0;Y7.slots = 2;cout << "Cost of Huawei Y6 : " << Y6.cost << endl;cout << "Cost of Huawei Y7 : " << Y7.cost << endl;cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl;cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl;return 0;}
Παραγωγή:
Ακολουθεί ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση κώδικα:
- Συμπεριλάβετε το αρχείο κεφαλίδας iostream στον κώδικά μας για να χρησιμοποιήσετε τις λειτουργίες του.
- Συμπεριλαμβανομένου του std namespace στον κώδικα μας για χρήση των κλάσεων χωρίς να το καλέσετε.
- Δηλώστε μια τάξη με το όνομα Τηλέφωνο.
- Χρησιμοποιώντας τον τροποποιητή δημόσιας πρόσβασης για να επισημάνουμε τις μεταβλητές που πρόκειται να δημιουργήσουμε ως δημόσια προσβάσιμες.
- Δηλώστε το μεταβλητό κόστος ενός διπλού τύπου δεδομένων.
- Δηλώστε μια ακέραια μεταβλητή που ονομάζεται κουλοχέρηδες.
- Τέλος του σώματος της τάξης.
- Κλήση της κύριας λειτουργίας (). Η λογική του προγράμματος πρέπει να προστεθεί στο σώμα του.
- Δημιουργήστε ένα αντικείμενο με το όνομα Y6 τύπου τηλεφώνου. Αυτό ονομάζεται instantiation.
- Δημιουργήστε ένα αντικείμενο που ονομάζεται Y7 τύπου τηλεφώνου. Αυτό ονομάζεται instantiation.
- Αποκτήστε πρόσβαση στη μεταβλητή / κόστος μέλους της κατηγορίας τηλεφώνου χρησιμοποιώντας το αντικείμενο Y6. Η τιμή ορίζεται σε 100,0. Το κόστος του Y6 ορίζεται τώρα σε 100,0.
- Αποκτήστε πρόσβαση στις μεταβλητές / υποδοχές μέλους της κατηγορίας Phone χρησιμοποιώντας το αντικείμενο Y6. Η τιμή έχει οριστεί σε 2. Οι κουλοχέρηδες για το Y6 έχουν πλέον οριστεί σε 2.
- Αποκτήστε πρόσβαση στη μεταβλητή / κόστος μέλους της κατηγορίας τηλεφώνου χρησιμοποιώντας το αντικείμενο Y7. Η τιμή ορίζεται σε 200,0. Το κόστος του Y7 ορίζεται τώρα σε 200,0.
- Αποκτήστε πρόσβαση στις μεταβλητές / υποδοχές μέλους της κατηγορίας Phone χρησιμοποιώντας το αντικείμενο Y7. Η τιμή έχει οριστεί σε 2. Οι κουλοχέρηδες για το Y7 έχουν πλέον οριστεί σε 2.
- Εκτυπώστε το κόστος Y6 στην κονσόλα μαζί με άλλο κείμενο.
- Εκτυπώστε το κόστος Y7 στην κονσόλα μαζί με άλλο κείμενο.
- Εκτυπώστε τον αριθμό των θέσεων για το Y6 μαζί με άλλο κείμενο.
- Εκτυπώστε τον αριθμό των κουλοχέρηδων για το Y7 μαζί με άλλο κείμενο.
- Το πρόγραμμα πρέπει να επιστρέψει μια τιμή μετά την επιτυχή ολοκλήρωση.
- Τέλος του σώματος της κύριας () λειτουργίας.
Τι είναι η ιδιωτική τάξη;
Τα μέλη της τάξης που επισημαίνονται ως ιδιωτικά μπορούν να έχουν πρόσβαση μόνο σε λειτουργίες που ορίζονται στην τάξη. Οποιοδήποτε αντικείμενο ή λειτουργία που ορίζεται εκτός της κλάσης δεν μπορεί να έχει άμεση πρόσβαση σε αυτά τα μέλη. Ένα μέλος της ιδιωτικής τάξης είναι προσβάσιμο μόνο από λειτουργίες μέλους και φίλου.
Τι είναι μια προστατευμένη τάξη;
Τα μέλη της τάξης που έχουν επισημανθεί ως προστατευμένα έχουν ένα πλεονέκτημα έναντι εκείνων που χαρακτηρίζονται ως ιδιωτικά. Μπορούν να έχουν πρόσβαση σε συναρτήσεις εντός της κατηγορίας του ορισμού τους. Επιπλέον, μπορούν να προσεγγιστούν από παράγωγες τάξεις.
Παράδειγμα 2:
#includeusing namespace std;class ClassA {public:void set_a(int val);int get_a(void);private:int a;};int ClassA::get_a(void) {return a;}void ClassA::set_a(int val) {a = val;}int main() {ClassA a;a.set_a(20);cout << "Value of a is: " << a.get_a();return 0;}
Παραγωγή:
Ακολουθεί ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση κώδικα:
- Συμπεριλάβετε το αρχείο κεφαλίδας iostream στον κώδικα μας για να χρησιμοποιήσετε τις λειτουργίες του.
- Συμπεριλάβετε τον χώρο ονομάτων std στον κώδικά μας για να χρησιμοποιήσετε τις κλάσεις του χωρίς να το καλέσετε.
- Δημιουργήστε μια τάξη με το όνομα ClassA.
- Χρησιμοποιήστε τον τροποποιητή δημόσιας πρόσβασης για να επισημάνετε το μέλος της τάξης που θα δημιουργηθεί ως δημόσια προσβάσιμο.
- Δημιουργήστε τη συνάρτηση με το όνομα set_a () που παίρνει μία ακέραια τιμή val.
- Δημιουργήστε μια συνάρτηση με το όνομα get_a ().
- Χρησιμοποιήστε τον τροποποιητή ιδιωτικής πρόσβασης για να επισημάνετε το μέλος της τάξης που θα δημιουργηθεί ως ιδιωτικά προσβάσιμο.
- Δηλώστε μια ακέραια μεταβλητή με το όνομα a.
- Τέλος του σώματος της τάξης.
- Χρησιμοποιήστε το όνομα κλάσης και τον τελεστή ανάλυσης εύρους για πρόσβαση στη συνάρτηση get_a (). Θέλουμε να καθορίσουμε τι κάνει η λειτουργία όταν καλείται.
- Η συνάρτηση get_a () πρέπει να επιστρέφει την τιμή της μεταβλητής α όταν καλείται.
- Τέλος του ορισμού της συνάρτησης get_a ().
- Χρησιμοποιήστε το όνομα κλάσης και τον τελεστή ανάλυσης εύρους για πρόσβαση στη συνάρτηση set_a (). Θέλουμε να καθορίσουμε τι κάνει η λειτουργία όταν καλείται.
- Αντιστοίχιση της τιμής της μεταβλητής val στη μεταβλητή a.
- Τέλος ορισμού της συνάρτησης set_a ().
- Καλέστε την κύρια λειτουργία (). Η λογική του προγράμματος πρέπει να προστεθεί στο σώμα αυτής της λειτουργίας.
- Δημιουργήστε μια παρουσία του ClassA και δώστε το το όνομα a.
- Χρησιμοποιήστε την παραπάνω παρουσία κλάσης και τη συνάρτηση set_a () για να αντιστοιχίσετε μια τιμή 20 στη μεταβλητή a.
- Εκτύπωση κάποιου κειμένου παράλληλα με την τιμή της μεταβλητής a στην κονσόλα. Η τιμή της μεταβλητής α λαμβάνεται καλώντας τη συνάρτηση get_a ().
- Το πρόγραμμα πρέπει να επιστρέψει την τιμή μετά την επιτυχή ολοκλήρωση.
- Τέλος του κυρίως σώματος της λειτουργίας ().
Παράδειγμα 3:
#includeusing namespace std;class ParentClass {protected:int value;};class ChildClass : public ParentClass {public:void setId(int x) {value = x;}void displayValue() {cout << "Value is: " << value << endl;}};int main() {ChildClass c;c.setId(21);c.displayValue();return 0;}
Παραγωγή:
Ακολουθεί ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση κώδικα:
- Συμπεριλάβετε το αρχείο κεφαλίδας iostream στον κώδικα μας για να χρησιμοποιήσετε τις λειτουργίες του.
- Συμπεριλάβετε τον χώρο ονομάτων std στον κώδικά μας για να χρησιμοποιήσετε τις κλάσεις του χωρίς να το καλέσετε.
- Δημιουργήστε μια τάξη με το όνομα ParentClass.
- Χρησιμοποιήστε τον προστατευμένο τροποποιητή πρόσβασης για να επισημάνετε το μέλος της τάξης που θα δημιουργηθεί ως προστατευμένο.
- Δημιουργήστε μια ακέραια μεταβλητή με όνομα.
- Τέλος του σώματος της τάξης.
- Δημιουργήστε μια νέα τάξη με το όνομα ChildClass που κληρονομεί το ParentClass.
- Χρησιμοποιήστε τον προστατευτή τροποποιημένης πρόσβασης για να επισημάνετε το μέλος της τάξης που θα δημιουργηθεί ως προσβάσιμο σε παιδικές τάξεις.
- Δημιουργήστε τη συνάρτηση με το όνομα setId () που παίρνει μια ακέραια τιμή x.
- Αντιστοίχιση της τιμής της μεταβλητής x στη μεταβλητή τιμή.
- Τέλος ορισμού της συνάρτησης setId ().
- Δημιουργήστε μια συνάρτηση με το όνομα displayValue ().
- Εκτυπώστε την τιμή της μεταβλητής που ονομάζεται τιμή στην κονσόλα μαζί με άλλο κείμενο.
- Τέλος του σώματος της λειτουργίας displayValue ().
- Τέλος του σώματος της τάξης με την ονομασία ChildClass.
- Καλέστε την κύρια λειτουργία (). Η λογική του προγράμματος πρέπει να προστεθεί στο σώμα αυτής της λειτουργίας.
- Δημιουργήστε μια παρουσία του ChildClass και δώστε το το όνομα c.
- Χρησιμοποιήστε την παραπάνω παρουσία κλάσης και τη συνάρτηση setId () για να αντιστοιχίσετε μια τιμή 21 στη μεταβλητή x.
- Χρησιμοποιήστε την παραπάνω παρουσία κλάσης για να καλέσετε τη συνάρτηση με την ονομασία displayValue ().
- Το πρόγραμμα πρέπει να επιστρέψει την τιμή μετά την επιτυχή ολοκλήρωση.
- Τέλος του κυρίως σώματος της λειτουργίας ().
Λειτουργίες μέλους τάξης
Οι λειτουργίες μας βοηθούν να χειριστούμε δεδομένα. Οι λειτουργίες των μελών της τάξης μπορούν να οριστούν με δύο τρόπους:
- Μέσα στον ορισμό της τάξης
- Εκτός του ορισμού της τάξης
Εάν μια συνάρτηση πρόκειται να οριστεί εκτός ορισμού κλάσης, πρέπει να χρησιμοποιήσουμε τον τελεστή ανάλυσης πεδίου (: :). Αυτό πρέπει να συνοδεύεται από τα ονόματα τάξης και συνάρτησης.
Παράδειγμα 2:
#include#include using namespace std;class Guru99{public:string tutorial_name;int id;void printname();void printid(){cout << "Tutorial id is: "<< id;}};void Guru99::printname(){cout << "Tutorial name is: " << tutorial_name;}int main() {Guru99 guru99;guru99.tutorial_name = "C++";guru99.id = 1001;guru99.printname();cout << endl;guru99.printid();return 0;}
Παραγωγή:
Ακολουθεί ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση κώδικα:
- Συμπεριλάβετε το αρχείο κεφαλίδας iostream στο πρόγραμμά μας για να χρησιμοποιήσετε τις λειτουργίες του.
- Συμπεριλάβετε το αρχείο κεφαλίδας συμβολοσειράς στο πρόγραμμά μας για να χρησιμοποιήσετε τις λειτουργίες του.
- Συμπεριλάβετε τον χώρο ονομάτων std στον κώδικά μας για να χρησιμοποιήσετε τις κλάσεις του χωρίς να το καλέσετε.
- Δημιουργήστε μια τάξη με την ονομασία Guru99.
- Χρησιμοποιήστε τον τροποποιητή δημόσιας πρόσβασης για να επισημάνετε τα μέλη της τάξης που πρόκειται να δημιουργήσουμε ως δημόσια προσβάσιμα.
- Δημιουργήστε μια μεταβλητή συμβολοσειράς με όνομα tutorial_name.
- Δημιουργήστε μια ακέραια μεταβλητή με όνομα id.
- Δημιουργήστε μια συνάρτηση με το όνομα printname (). Αυτή η συνάρτηση δεν ορίζεται στον ορισμό της κλάσης.
- Δημιουργήστε μια συνάρτηση που ονομάζεται print (). Αυτή η συνάρτηση ορίζεται στον ορισμό της κλάσης. Το σώμα του έχει προστεθεί στον ορισμό της κατηγορίας.
- Εκτυπώστε την τιμή του μεταβλητού αναγνωριστικού μαζί με άλλο κείμενο στην κονσόλα. Σημειώστε ότι αυτό έχει προστεθεί στο σώμα της λειτουργίας printid (). Θα εκτελεστεί μόνο όταν καλείται η συνάρτηση printid ().
- Τέλος του σώματος της λειτουργίας printid ().
- Τέλος του σώματος της τάξης Guru99.
- Η αρχή του ορισμού της συνάρτησης printname ().
- Εκτυπώστε την τιμή της μεταβλητής tutorial_name στην κονσόλα μαζί με άλλο κείμενο. Σημειώστε ότι αυτό έχει προστεθεί στο σώμα της συνάρτησης printname (). Θα εκτελεστεί μόνο όταν καλείται η συνάρτηση printname ().
- Τέλος του ορισμού της συνάρτησης printname ().
- Καλέστε την κύρια λειτουργία (). Η λογική του προγράμματος πρέπει να προστεθεί στο σώμα αυτής της λειτουργίας.
- Δημιουργήστε μια παρουσία της τάξης Guru99 και δώστε της το όνομα guru99.
- Χρησιμοποιήστε την παραπάνω παρουσία για να αντιστοιχίσετε μια τιμή C ++ στη μεταβλητή όνομα_προγράμματος.
- Χρησιμοποιήστε την παρουσία guru99 για να αντιστοιχίσετε μια τιμή 1001 στο αναγνωριστικό μεταβλητής.
- Χρησιμοποιήστε το παράδειγμα9999 για να καλέσετε τη συνάρτηση printname ().
- Καλέστε την εντολή end (end line) για να εκτυπώσετε μια νέα κενή γραμμή στην κονσόλα.
- Χρησιμοποιήστε το παράδειγμα guru99 για να καλέσετε τη συνάρτηση printid ().
- Το πρόγραμμα πρέπει να επιστρέψει την τιμή μετά την επιτυχή ολοκλήρωση.
- Τέλος του σώματος της κύριας () λειτουργίας.
Κατασκευαστές και Καταστροφείς
Τι είναι οι κατασκευαστές;
Οι κατασκευές είναι ειδικές λειτουργίες που προετοιμάζουν αντικείμενα. Οι μεταγλωττιστές C ++ καλούν έναν κατασκευαστή κατά τη δημιουργία ενός αντικειμένου. Οι κατασκευαστές βοηθούν στην εκχώρηση τιμών στα μέλη της τάξης. Φυσικά, αυτό αφότου έχουν εκχωρηθεί κάποιος χώρος μνήμης.
Τι είναι οι Καταστροφείς;
Οι καταστροφείς από την άλλη πλευρά βοηθούν στην καταστροφή αντικειμένων κλάσης.
Το όνομα του κατασκευαστή πρέπει να είναι παρόμοιο με το όνομα της τάξης. Οι κατασκευαστές δεν έχουν τύπο επιστροφής.
Ο κατασκευαστής μπορεί να οριστεί εντός ή εκτός του σώματος της τάξης. Εάν ορίζεται εκτός του σώματος της τάξης, θα πρέπει να οριστεί με το όνομα της κλάσης και τον τελεστή ανάλυσης πεδίου (: :)
Παράδειγμα 3:
#includeusing namespace std;class ClassA {public:ClassA() {cout << "Class constructor called"< Παραγωγή:
Ακολουθεί ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση κώδικα:
- Συμπεριλάβετε το αρχείο κεφαλίδας iostream στον κώδικα για να χρησιμοποιήσετε τις λειτουργίες του.
- Συμπεριλάβετε τον χώρο ονομάτων std στον κώδικά μας για να χρησιμοποιήσετε τις κλάσεις του χωρίς να το καλέσετε.
- Δημιουργήστε μια τάξη με το όνομα ClassA.
- Χρησιμοποιήστε τον τροποποιητή δημόσιας πρόσβασης για να επισημάνετε το μέλος που πρόκειται να δημιουργήσουμε ως δημόσια προσβάσιμο.
- Δημιουργήστε έναν κατασκευαστή για την τάξη.
- Κείμενο για εκτύπωση στην κονσόλα όταν καλείται ο κατασκευαστής. Το endl είναι μια λέξη-κλειδί C ++, που σημαίνει τελική γραμμή. Μετακινεί το δρομέα του ποντικιού στην επόμενη γραμμή.
- Τέλος του αμαξώματος του κατασκευαστή κλάσης.
- Δημιουργήστε έναν καταστροφέα για την τάξη.
- Κείμενο για εκτύπωση στην κονσόλα όταν καλείται ο καταστροφέας. Το endl είναι μια λέξη-κλειδί C ++, που σημαίνει τελική γραμμή. Μετακινεί το δρομέα του ποντικιού στην επόμενη γραμμή.
- Τέλος του σώματος του καταστροφέα.
- Τέλος του σώματος της τάξης.
- Καλέστε την κύρια λειτουργία (). Η λογική του προγράμματος πρέπει να προστεθεί στο σώμα αυτής της λειτουργίας.
- Δημιουργήστε ένα αντικείμενο κλάσης και δώστε το το όνομα a. Ο κατασκευαστής θα καλείται.
- Δημιουργήστε μια ακέραια μεταβλητή με το όνομα p και εκχωρήστε την τιμή 1.
- Δημιουργήστε ένα μπλοκ δήλωσης if χρησιμοποιώντας τη μεταβλητή p.
- Δημιουργήστε ένα αντικείμενο κλάσης και δώστε το το όνομα β. Ο καταστροφέας θα κληθεί.
- Τέλος του σώματος της δήλωσης if.
- Τέλος του σώματος της κύριας () συνάρτησης.
Περίληψη:
- Το C ++ είναι αντικειμενικό.
- Τα μαθήματα αποτελούν τα κύρια χαρακτηριστικά του C ++ που το καθιστούν αντικειμενικό.
- Η τάξη C ++ συνδυάζει δεδομένα και μεθόδους για τον χειρισμό των δεδομένων σε μία.
- Η τάξη είναι ένα σχεδιάγραμμα για ένα αντικείμενο.
- Οι τάξεις καθορίζουν τη μορφή ενός αντικειμένου.
- Τα δεδομένα και οι μέθοδοι που περιέχονται σε μια τάξη είναι γνωστά ως μέλη της τάξης.
- Για να αποκτήσετε πρόσβαση στα μέλη της τάξης, θα πρέπει να χρησιμοποιήσετε μια παρουσία της τάξης.
- Για να δημιουργήσουμε μια τάξη, χρησιμοποιούμε τη λέξη-κλειδί κλάσης.
- Οι λειτουργίες των μελών της τάξης μπορούν να καθοριστούν εντός ή εκτός μιας τάξης.