Ο σχεδιασμός με γνώμονα τα αντικείμενα (OOD) στο C++ είναι ένα πρότυπο προγραμματισμού που οργανώνει το σχεδιασμό λογισμικού γύρω από τα δεδομένα, ή αντικείμενα, αντί για τις λειτουργίες και τη λογική. Βοηθά στη δημιουργία αρθρωτών, επαναχρησιμοποιήσιμων και διατηρητέων κώδικα. Αυτό το άρθρο παρέχει πρακτικά παραδείγματα του OD στο C++ και συζητά πώς να αξιολογήσει τις επιπτώσεις της απόδοσης της χρήσης αντικειμενοστρεφών τεχνικών.

Βασικές αρχές του σχεδιασμού με γνώμονα τα αντικείμενα

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

Πρακτικό Παράδειγμα: Ιεραρχία τάξης σχήματος

Εξετάστε μια απλή ιεραρχία για σχήματα. Η βασική τάξη Shape ορίζει μια κοινή διεπαφή για όλα τα σχήματα, όπως η περιοχή υπολογισμού. Παράγωγες τάξεις όπως Circle] και Rectangle εφαρμόζουν συγκεκριμένες συμπεριφορές.

class Shape {
public:
 virtual double area() const = 0;
 virtual ~Shape() {}
};

class Circle : public Shape {
private:
 double radius;
public:
 Circle(double r) : radius(r) {}
 double area() const override {
 return 3.14159 * radius * radius;
 }
};

class Rectangle : public Shape {
private:
 double width, height;
public:
 Rectangle(double w, double h) : width(w), height(h) {}
 double area() const override {
 return width * height;
 }
};

Επιδόσεις

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

Συμβουλές βελτιστοποίησης απόδοσης

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