6.6 Η ενθυλάκωση (Encapsulation) στην γλώσσα C++

Η ενθυλάκωση (Encapsulation) στην γλώσσα C++ είναι ένας μηχανισμός που επιτρέπει τη συσπείρωση δεδομένων και συναρτήσεων που τα χειρίζονται σε ένα αντικείμενο. Μέσω της ενθυλάκωσης, η πρόσβαση και η επεξεργασία των δεδομένων γίνεται μόνο μέσω των δημόσιων μεθόδων της κλάσης.

Η ενθυλάκωση βοηθά στην επίτευξη αρχών αντικειμενοστραφούς προγραμματισμού, όπως η αφαιρετικότητα (abstraction), η επαναχρησιμοποίηση κώδικα και η ασφάλεια. Με την ενθυλάκωση, οι λεπτομέρειες υλοποίησης κρύβονται από τον χρήστη και μόνο οι δημόσιες μέθοδοι είναι προσβάσιμες, προσφέροντας ένα σταθερό και καλά ορισμένο διεπαφή.

Για την ενθυλάκωση στην C++, χρησιμοποιούνται κλάσεις και η προστασία δεδομένων γίνεται με τη χρήση δημόσιων (public), ιδιωτικών (private) και προστατευμένων (protected) μελών. Η ενθυλάκωση επιτρέπει τη δημιουργία ασφαλών και αποτελεσματικών κλάσεων, ενισχύοντας την οργάνωση και τη συντήρηση του κώδικα.

Ένα παράδειγμα με χρήση get και set μεθόδων:

#include <iostream>
using namespace std;

class Car {
  private:
    string brand; // Ιδιωτική μεταβλητή για τη μάρκα του αυτοκινήτου
    string model; // Ιδιωτική μεταβλητή για το μοντέλο του αυτοκινήτου
    int year; // Ιδιωτική μεταβλητή για το έτος του αυτοκινήτου
  public:
    void setBrand(string brand) {
      this->brand = brand; // Ορισμός της μάρκας του αυτοκινήτου
    }
    string getBrand() {
      return brand; // Επιστροφή της μάρκας του αυτοκινήτου
    }
    void setModel(string model) {
      this->model = model; // Ορισμός του μοντέλου του αυτοκινήτου
    }
    string getModel() {
      return model; // Επιστροφή του μοντέλου του αυτοκινήτου
    }
    void setYear(int year) {
      this->year = year; // Ορισμός του έτους του αυτοκινήτου
    }
    int getYear() {
      return year; // Επιστροφή του έτους του αυτοκινήτου
    }
};

int main() {
  Car myCar; // Δημιουργία αντικειμένου της κλάσης Car

  myCar.setBrand("Ford"); // Ορισμός της μάρκας του αυτοκινήτου
  myCar.setModel("Mustang"); // Ορισμός του μοντέλου του αυτοκινήτου
  myCar.setYear(1969); // Ορισμός του έτους του αυτοκινήτου

  cout << myCar.getBrand() << " " << myCar.getModel() << " " << myCar.getYear() << endl; // Εκτύπωση των πληροφοριών του αυτοκινήτου

  return 0;
}

Ο παραπάνω κώδικας σε C++ δημιουργεί μια κλάση με όνομα “Car” που αναπαριστά ένα αυτοκίνητο. Η κλάση έχει ιδιότητες (μεταβλητές) για τη μάρκα, το μοντέλο και το έτος του αυτοκινήτου.

Η κλάση περιλαμβάνει μεθόδους (συναρτήσεις μέλη) για να ορίσει και να ανακτήσει τιμές για τις ιδιότητες του αυτοκινήτου. Οι μέθοδοι setBrand, setModel και setYear χρησιμοποιούνται για να ορίσουν τις μεταβλητές brand, model και year αντίστοιχα. Οι μέθοδοι getBrand, getModel και getYear επιστρέφουν τις τρέχουσες τιμές των ιδιοτήτων.

Στην συνέχεια, η συνάρτηση main δημιουργεί ένα αντικείμενο της κλάσης Car με όνομα myCar. Χρησιμοποιούνται οι μέθοδοι setBrand, setModel και setYear για να οριστούν οι τιμές των ιδιοτήτων του αυτοκινήτου.

Τέλος, εκτυπώνονται οι τιμές των ιδιοτήτων του αυτοκινήτου χρησιμοποιώντας τις μεθόδους getBrand, getModel και getYear και η έξοδος εμφανίζεται στην οθόνη.

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

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

27 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων