Σπίτι Προσωπικά Οικονομικά Factoring και κληρονομικότητα σε C ++ - dummies

Factoring και κληρονομικότητα σε C ++ - dummies

Βίντεο: Building Dynamic Web Apps with Laravel by Eric Ouyang 2024

Βίντεο: Building Dynamic Web Apps with Laravel by Eric Ouyang 2024
Anonim

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

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

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

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

Οι αντικειμενοστραφείς προγραμματιστές έρχονται με έναν συνοπτικό τρόπο για να περιγράψουν τα κυριότερα σημεία μιας τάξης σε ένα σχέδιο. Οι τάξεις Έλεγχος και Εξοικονόμηση εμφανίζονται σε αυτό το σχήμα. (Αυτός είναι μόνο ένας από τους πολλούς τρόπους για να εκφραστεί γραφικά το ίδιο πράγμα.)

Έλεγχος και Αποταμίευση. ">

Ανεξάρτητες τάξεις Έλεγχος και Αποταμίευση.

Για να διαβάσετε αυτό το σχήμα και τα άλλα σχήματα, θυμηθείτε τα εξής:

  • Το μεγάλο κουτί είναι η κατηγορία, με το όνομα της κλάσης στην κορυφή.

  • Τα ονόματα σε πλαίσια είναι λειτουργίες μελών.

  • Τα ονόματα που δεν βρίσκονται σε πλαίσια είναι στοιχεία δεδομένων.

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

  • Ένα παχύ βέλος αντιπροσωπεύει τη σχέση IS_A.

  • Ένα λεπτό βέλος αντιπροσωπεύει τη σχέση HAS_A.

Αυτοκίνητο IS_A Όχημα , αλλά ένα αυτοκίνητο HAS_A Motor .

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

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

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

Αποταμίευση που εφαρμόζεται ως υποκατηγορία Έλεγχος. ">

Αποταμίευση που εφαρμόζεται ως υποκατηγορία Έλεγχος.

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

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

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

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

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

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

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

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

Πώς μπορείτε να αποφύγετε αυτά τα προβλήματα; Υποστηρίζοντας ότι Έλεγχος είναι μια ειδική περίπτωση Αποταμιεύσεις αλλαγές αλλά δεν λύνουν το πρόβλημά μας. Αυτό που χρειάζεστε είναι μια τρίτη τάξη (ονομάστε Λογαριασμός, μόνο για τα χέρια) που ενσωματώνει τα πράγματα που είναι κοινά μεταξύ Έλεγχος και Αποταμίευση .

Έλεγχος και Αποταμίευση σε μια κοινή κατηγορία Λογαριασμού . ">

Βάση Έλεγχος και Αποταμίευση σε μια κοινή κατηγορία Λογαριασμού .

Πώς δημιουργεί ένα νέο λογαριασμό για να λύσει τα προβλήματα; Πρώτον, η δημιουργία μιας νέας κατηγορίας Λογαριασμού είναι μια πιο ακριβής περιγραφή του πραγματικού κόσμου (ό, τι και αν είναι). Φυσικά, υπάρχει πραγματικά κάτι γνωστό ως λογαριασμό. Οι λογαριασμοί ταμιευτηρίου και οι λογαριασμοί ελέγχου είναι ειδικές περιπτώσεις αυτής της πιο θεμελιώδους έννοιας.

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

Αυτή η διαδικασία θανάτωσης κοινών ιδιοτήτων από παρόμοιες κατηγορίες είναι η ουσία της factoring κατηγορίας .

Ο factoring είναι νόμιμος μόνο αν η σχέση κληρονομιάς αντιστοιχεί στην πραγματικότητα. Factoring μαζί μια κλάση ποντίκι και Joystick επειδή και οι δύο συσκευές υποδείξεων υλικού είναι νόμιμη. Factoring μαζί μια τάξη Ποντίκι και Οθόνη επειδή και οι δύο κάνουν κλήσεις χαμηλού επιπέδου λειτουργικό σύστημα δεν είναι.

Factoring και κληρονομικότητα σε C ++ - dummies

Η επιλογή των συντακτών

Πώς να αλλάξετε τη ρύθμιση ισορροπίας λευκού σε ετικέτες Canon EOS 70D

Πώς να αλλάξετε τη ρύθμιση ισορροπίας λευκού σε ετικέτες Canon EOS 70D

Χρησιμοποιώντας το Ο έλεγχος εξισορρόπησης λευκού στο Canon EOS 70D σας μπορεί εύκολα και γρήγορα να διορθώσει προβλήματα χρώματος. Οι διαθέσιμες ρυθμίσεις ισορροπίας λευκού απεικονίζονται με τα σύμβολα που εμφανίζονται στον παρακάτω πίνακα. Μπορείτε να δείτε την τρέχουσα ρύθμιση στην οθόνη Ρυθμίσεις λήψης, όπως φαίνεται στο παρακάτω σχήμα. Για να προσαρμόσετε τη ρύθμιση, έχετε ...

Η επιλογή των συντακτών

Προετοιμασία αντιγράφου TIFF ψηφιακής εικόνας για δημοσίευση - ανδρεικέλες

Προετοιμασία αντιγράφου TIFF ψηφιακής εικόνας για δημοσίευση - ανδρεικέλες

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

Εξάγοντας το περίγραμμα επιλογής του ψηφιακού σας επεξεργαστή εικόνας - ανδρείκελα

Εξάγοντας το περίγραμμα επιλογής του ψηφιακού σας επεξεργαστή εικόνας - ανδρείκελα

Η πρώτη προσπάθεια. Αναμείνετε να βελτιώσετε το περίγραμμα επιλογής σας τουλάχιστον λίγο. Μπορείτε να βελτιώσετε το περίγραμμα σας με διάφορους τρόπους: Αντίστροφη περιγράμματος επιλογής: Απλά χρησιμοποιήστε την εντολή Invert (ή την αντίστοιχη εντολή του προγράμματος). Προσθέστε σε περίγραμμα επιλογής: ...

Επιλογή από τις άκρες της ψηφιακής εικόνας - ανδρείκελα

Επιλογή από τις άκρες της ψηφιακής εικόνας - ανδρείκελα

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

Η επιλογή των συντακτών

Πώς να χρησιμοποιείτε το παράθυρο μητρώου του QuickBooks 2010 - dummies

Πώς να χρησιμοποιείτε το παράθυρο μητρώου του QuickBooks 2010 - dummies

Για να εργαστείτε ευκολότερα με το παράθυρο του Μητρώου και να ελέγξετε τον τρόπο εμφάνισής του: Το κουμπί Μετάβαση: Εμφανίζει το παράθυρο διαλόγου Μετάβαση (Go To). Αυτό το παράθυρο διαλόγου σάς επιτρέπει να αναζητήσετε μια συναλλαγή στο παράθυρο "Εγγραφή". Για παράδειγμα, μπορείτε να αναζητήσετε ...

Πώς να εργάζεστε με έναν υπάρχοντα προϋπολογισμό σε QuickBooks - dummies

Πώς να εργάζεστε με έναν υπάρχοντα προϋπολογισμό σε QuickBooks - dummies

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

Πώς να χρησιμοποιείτε τα κουτιά παραθύρων αναφορών του QuickBooks - dummies

Πώς να χρησιμοποιείτε τα κουτιά παραθύρων αναφορών του QuickBooks - dummies

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