Ένας πλήρης οδηγός με παραδείγματα

Η JavaScript είναι μια γλώσσα πολλαπλών παραδειγμάτων που σας επιτρέπει να γράφετε προγράμματα που ακολουθούν λειτουργικά, αντικειμενοστραφή και επιτακτικά στυλ προγραμματισμού.

Για την υποστήριξη αντικειμενοστρεφών μοτίβων, η JavaScript έχει κλάσεις. Επειδή η κατανόησή τους είναι ζωτικής σημασίας, αυτό το άρθρο είναι ένας οδηγός για το τι είναι οι τάξεις JavaScript και πώς να τις χρησιμοποιήσετε.

Τι είναι οι τάξεις στο JavaScript;

Στον αντικειμενοστραφή προγραμματισμό, μοντελοποιούμε συστήματα ως ομάδες αντικειμένων που αλληλεπιδρούν μεταξύ τους. Για να λειτουργήσουν, τα αντικείμενα αποθηκεύουν δεδομένα σε ιδιότητες και εκτελούν ενέργειες που ορίζονται ως μέθοδοι τους. Μια κλάση ορίζει ποιες ιδιότητες και μεθόδους μεταφέρονται από αντικείμενα του ίδιου τύπου. Επομένως, οι κλάσεις είναι προσχέδια για αντικείμενα.

Ορολογίες που χρησιμοποιούνται στις τάξεις

Για να διασφαλίσουμε ότι βρισκόμαστε στην ίδια σελίδα, ακολουθεί μια περιγραφή των τάξεων με βασικούς όρους που θα χρησιμοποιήσουμε σε αυτό το άρθρο. Εάν είστε ήδη εξοικειωμένοι με τον αντικειμενοστραφή προγραμματισμό, μπορείτε να μεταβείτε στην επόμενη ενότητα.

❇️ Μια κλάση είναι ένα προσχέδιο για ένα αντικείμενο. Παρέχει ένα πρότυπο από το οποίο μπορούν να κατασκευαστούν αντικείμενα αυτού του τύπου. Η δημιουργία ενός αντικειμένου από το πρότυπο που παρέχεται από την κλάση ονομάζεται instantiation.

❇️ Μέλος τάξης είναι οτιδήποτε ανήκει στην τάξη. Υπάρχουν δύο είδη μελών κλάσης – μέθοδοι και ιδιότητες.

❇️ Μια ιδιότητα είναι ένα μέλος κλάσης του οποίου ο πρωταρχικός σκοπός είναι η αποθήκευση τιμών. Αυτές θα μπορούσαν να είναι απλές τιμές όπως αριθμοί και συμβολοσειρές. Θα μπορούσαν επίσης να είναι πολύπλοκα αντικείμενα και πίνακες.

❇️ Ορισμένες ιδιότητες είναι προσβάσιμες μόνο εντός της κλάσης και εύστοχα ονομάζονται ιδιωτικές ιδιότητες. Ορισμένα είναι προσβάσιμα τόσο εντός όσο και εκτός της τάξης. Τέτοια ακίνητα ονομάζονται δημόσια ακίνητα.

❇️ Μια μέθοδος είναι μια συνάρτηση που ορίζεται μέσα σε μια κλάση. Επομένως, ανήκει στην κατηγορία και έχει πρόσβαση σε δημόσια και ιδιωτικά ακίνητα. Όπως τα ακίνητα, έχουμε επίσης δημόσιες μεθόδους και ιδιωτικές μεθόδους.

  Πώς να παρέχετε μια κάρτα SIM

❇️ Υπάρχουν ορισμένες μέθοδοι για την παροχή μιας διεπαφής για κώδικα εκτός κλάσης για αλληλεπίδραση με ιδιότητες εντός της κλάσης. Υπάρχουν δύο ομάδες μεθόδων που το κάνουν αυτό: getters και setters. Οι λήπτες λαμβάνουν τιμές ιδιοτήτων κλάσης, ενώ οι ρυθμιστές ορίζουν τιμές ιδιοτήτων κλάσης.

❇️ Ορισμένα μέλη είναι στατικά. Αυτό σημαίνει ότι είναι προσβάσιμα μόνο στην κλάση και δεν μπορούν να προσπελαστούν σε παρουσίες κλάσης.

Αντίθετα, ορισμένα μέλη κλάσης δεν είναι στατικά, που σημαίνει ότι μπορούν να προσπελαστούν μόνο σε περιπτώσεις κλάσεων. Πρέπει να δημιουργήσετε την κλάση για να μπορέσετε να αποκτήσετε πρόσβαση σε ένα μη στατικό μέλος.

Όταν δημιουργείτε μια κλάση, καλείται μια ειδική μέθοδος για τη ρύθμιση ιδιοτήτων για το παράδειγμα. Αυτή η μέθοδος ονομάζεται συνάρτηση κατασκευαστή.

Ξεκινώντας μια τάξη Επεξήγηση

Χρησιμοποιούμε τη νέα λέξη-κλειδί και το όνομα της κλάσης για να δημιουργήσουμε μια κλάση σε JavaScript. Για παράδειγμα, ας δημιουργήσουμε την κλάση Array.

const myArr = new Array()

Δημιουργία τάξεων σε JavaScript

Αυτή η ενότητα θα συζητήσει τη δημιουργία μιας τάξης που υλοποιεί όλες τις έννοιες που καλύψαμε στο Τμήμα Ορολογίας. Θα το κάνουμε αυτό σε μια σειρά παραδειγμάτων, όπου κάθε παράδειγμα βασίζεται στα προηγούμενα.

Δήλωση Κενής Τάξης

Για να δηλώσουμε μια κλάση σε JavaScript, χρησιμοποιούμε τη λέξη-κλειδί class και δίνουμε στην κλάση ένα όνομα. Στη συνέχεια, ορίζουμε το σώμα της τάξης. Το σώμα είναι κλεισμένο σε σγουρά τιράντες και συγκρατεί όλα τα μέλη της τάξης.

Ακολουθεί ένα παράδειγμα δήλωσης κλάσης με κενό σώμα:

class Dog {

}

Τώρα, μπορείτε να δημιουργήσετε την τάξη ως εξής και να την εκτυπώσετε.

const pet = new Dog;
console.log(pet);

Δημιουργία Δημοσίων Περιουσιών

Οι δημόσιες ιδιότητες ορίζονται με ένα αναγνωριστικό και μια προαιρετική τιμή.

class Dog {
    name = "Roy";
    age;
}

Εδώ, ορίσαμε το όνομα με τιμή συμβολοσειράς και την ηλικία χωρίς τιμή.

const pet = new Dog();

console.log(pet.name);
console.log(pet.age);

Καθορισμός Δημόσιων Μεθόδων

Μπορούμε να προσθέσουμε μεθόδους στην τάξη μας μέσα στο σώμα της. Ορίζουμε μια μέθοδο με τον ίδιο τρόπο που θα ορίζαμε μια συνάρτηση. Ωστόσο, παραλείπουμε τη λέξη-κλειδί συνάρτησης.

class Dog {
    name = "Roy";
    age;

    walk () {
        console.log("Walking");
    }
}

Στο παραπάνω παράδειγμα, ορίσαμε τη μέθοδο περπατήματος. Κάθε παρουσία της κλάσης Animal θα έχει αυτήν τη μέθοδο.

const pet = new Dog();
pet.walk();

Πρόσβαση στις ιδιότητες από τις μεθόδους

Στο JavaScript, γενικά έχουμε πρόσβαση σε ιδιότητες σε ένα αντικείμενο χρησιμοποιώντας τον τελεστή κουκκίδας. Για παράδειγμα, αν είχαμε ένα αντικείμενο με όνομα πρόσωπο και θέλαμε να αποκτήσουμε πρόσβαση στην ιδιότητα ονόματος, θα το κάναμε ως εξής.

person.name

Ωστόσο, εάν θέλουμε να αποκτήσουμε πρόσβαση σε μια ιδιότητα μέσα από το αντικείμενο, χρησιμοποιούμε τη λέξη-κλειδί this αντί για το όνομα του αντικειμένου. Εδώ είναι ένα παράδειγμα:

this.name

Η λέξη-κλειδί αυτή αναφέρεται στο αντικείμενο. Έτσι, εάν θέλαμε να αποκτήσουμε πρόσβαση στις ιδιότητες κλάσης από μεθόδους εντός της κλάσης, θα χρησιμοποιούσαμε αυτήν τη σύνταξη..

  Πώς να παρακολουθήσετε δωρεάν το Halo Nightfall στο Διαδίκτυο

Δημιουργία Ιδιωτικών Ιδιοτήτων

Ας υποθέσουμε ότι θέλαμε το όνομα και τις ιδιότητες ηλικίας που ορίσαμε νωρίτερα να είναι ιδιωτικά. Θα επαναπροσδιορίσουμε την τάξη ως εξής:

class Dog {
    #name = "Roy";
    #age;

    walk () {
        console.log("Walking");
    }
}

Όπως μπορείτε να δείτε, τα ιδιωτικά ακίνητα καθορίζονται χρησιμοποιώντας πινακίδες λιβρών. Αν προσπαθήσατε να αποκτήσετε πρόσβαση σε αυτά, θα συναντούσατε σφάλματα.

const dog = new Dog();

dog.#name

Δημιουργία μεθόδων Getter και Setter

Τώρα, το όνομα και οι ιδιότητες ηλικίας της κατηγορίας είναι ιδιωτικές. Επομένως, μπορούν να προσπελαστούν μόνο με μεθόδους εντός της κλάσης.

Αν θέλουμε να ενεργοποιήσουμε τον κώδικα εκτός κλάσης για πρόσβαση σε αυτές τις ιδιότητες, ορίζουμε getters και setters. Ας το κάνουμε αυτό για την ιδιότητα ονόματος.

class Dog {
    #name = "Roy";
    #age;

    get name () {
        return this.#name;
    }

    set name (value) {
        this.#name = value;
    }

    walk () {
        console.log("Walking");
    }
}

Με την κλάση που ορίζεται παραπάνω, μπορείτε να ορίσετε το όνομα και να το εμφανίσετε χρησιμοποιώντας τον παρακάτω κώδικα:

const pet = new Dog();

// Setting the name
pet.name = "Rex";

// Getting the name
console.log(pet.name);

Δημιουργία ιδιωτικών μεθόδων

Όπως και τα ιδιωτικά ακίνητα, οι ιδιωτικές μέθοδοι έχουν το πρόθεμα με το σύμβολο της λίρας. Επομένως, η δήλωση μιας ιδιωτικής μεθόδου θα μοιάζει με αυτό:

class Dog {
    #name = "Roy";
    #age;

    get name () {
        return this.#name;
    }

    set name (value) {
        this.#name = value;
    }

    #increaseAge() {
        this.#age ++;
    }

    #decreaseAge () {
        this.#age --;
    }

    walk () {
        console.log("Walking");
    }
}

Εάν προσπαθήσατε να αποκτήσετε πρόσβαση σε αυτές τις μεθόδους εκτός της τάξης, δεν θα λειτουργούσε.

const pet = new Dog();
pet.#increaseAge();

Δημιουργία μεθόδου κατασκευαστή

Μπορείτε επίσης να ορίσετε τη μέθοδο κατασκευής. Αυτή η μέθοδος θα καλείται αυτόματα κάθε φορά που δημιουργείτε μια νέα κλάση. Η μέθοδος του κατασκευαστή μπορεί να χρησιμοποιηθεί για την προετοιμασία των ιδιοτήτων. Σε αυτό το παράδειγμα, θα αρχικοποιήσουμε την ηλικία και το όνομα σε οποιαδήποτε ορίσματα παρέχει ο χρήστης κατά την εγκατάσταση.

class Dog {
    #name;
    #age;

    constructor (name = "Dog", age = 0) {
        this.#name = name;
        this.#age = age;
    }

    get name () {
        return this.#name;
    }

    set name (value) {
        this.#name = value;
    }

    #increaseAge() {
        this.#age ++;
    }

    #decreaseAge () {
        this.#age --;
    }

    walk () {
        console.log("Walking");
    }
}

Όταν εγκαινιάζουμε την τάξη μας, μπορούμε να παρέχουμε όνομα και ηλικία.

const pet = new Dog('Roy', 3);
console.log(pet.name);

Δημιουργία στατικών ιδιοτήτων και μεθόδων

Όπως αναφέρθηκε, τα στατικά μέλη μπορούν να προσπελαστούν χωρίς να δημιουργηθεί η κλάση πρώτα. Στο παρακάτω παράδειγμα, θα δημιουργήσουμε μια στατική ιδιότητα και μέθοδο.

class Dog {
    #name;
    #age;
    static genus = "Canis";

    constructor (name = "Dog", age = 0) {
        this.#name = name;
        this.#age = age;
    }

    static bark() {
        console.log("Woof");
    }

    get name () {
        return this.#name;
    }

    set name (value) {
        this.#name = value;
    }

    #increaseAge() {
        this.#age ++;
    }

    #decreaseAge () {
        this.#age --;
    }

    walk () {
        console.log("Walking");
    }
}

Τώρα, μπορείτε να αποκτήσετε πρόσβαση στη στατική ιδιότητα και μέθοδο χωρίς στιγμιότυπο.

console.log(Dog.genus);
Dog.bark();

Κληρονομία

Οι κλάσεις μπορούν να κληρονομήσουν ιδιότητες από άλλες κλάσεις. Μια κλάση που κληρονομεί μέλη από μια άλλη κλάση ονομάζεται υπερκλάση, ενώ η κλάση από την οποία κληρονομεί μέλη είναι η βασική κλάση ή υποκλάση.

  Πώς να κλειδώσετε μια παρουσίαση PowerPoint από την επεξεργασία

Για να δημιουργήσουμε μια υπερκλάση σε JavaScript, χρησιμοποιούμε τη λέξη-κλειδί επέκτασης. Ακολουθεί ένα παράδειγμα όπου κληρονομούμε από την κατηγορία Dog.

class Rottweiler extends Dog {
    constructor (name, age) {
        super(name, age);
        this.breed = 'rottweiler';
    }
}

Όπως μπορείτε να δείτε, η τάξη είναι σε μεγάλο βαθμό η ίδια με πριν. Ωστόσο, μέσα στον κατασκευαστή, καλέσαμε τη συνάρτηση super. Η λέξη-κλειδί σούπερ αναφέρεται στον κατασκευαστή της βασικής κλάσης. Επομένως, καλέσαμε τον κατασκευαστή της βασικής κλάσης μέσα στην υπερκλάση μας, περνώντας σε όνομα και ηλικία.

const myPet = new Rottweiler();
console.log(myPet);

συμπέρασμα

Σε αυτό το άρθρο, καλύψαμε μαθήματα. Καλύψαμε τι είναι, τα μέλη που μπορούν να κρατήσουν και τις διαφορετικές ταξινομήσεις για τα μέλη. Στη συνέχεια, τα απεικονίσαμε όλα αυτά με παραδείγματα.

Στη συνέχεια, μπορεί να θέλετε να διαβάσετε ερωτήσεις συνέντευξης προγραμματισμού αντικειμενοστρεφούς.