Διαφορά μεταξύ τάξεων και δομών

Anonim

Classes vs. Structures

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

Τι είναι οι κλάσεις;

Τα μαθήματα απεικονίζουν την αφηρημένη αναπαράσταση αντικειμένων πραγματικού κόσμου, ενώ οι σχέσεις απεικονίζουν τον τρόπο με τον οποίο κάθε τάξη συνδέεται με άλλους. Και οι δύο κλάσεις και οι σχέσεις έχουν ιδιότητες που ονομάζονται ιδιότητες. Οι μέθοδοι στις τάξεις αντιπροσωπεύουν ή ορίζουν τη συμπεριφορά αυτών των τάξεων. Οι μέθοδοι και τα χαρακτηριστικά των κλάσεων ονομάζονται μέλη της τάξης. Συνήθως, η ενθυλάκωση επιτυγχάνεται κάνοντας τα χαρακτηριστικά ιδιωτικά, ενώ παράλληλα δημιουργούνται δημόσιες μέθοδοι που μπορούν να χρησιμοποιηθούν για την πρόσβαση σε αυτά τα χαρακτηριστικά. Ένα αντικείμενο είναι η περίπτωση μιας κλάσης. Η κληρονομιά επιτρέπει στον χρήστη να επεκτείνει τάξεις (που ονομάζονται δευτερεύουσες κλάσεις) από άλλες κλάσεις (που ονομάζονται σούπερ κλάσεις). Ο πολυμορφισμός επιτρέπει στον προγραμματιστή να αντικαταστήσει ένα αντικείμενο μιας τάξης στη θέση ενός αντικειμένου της σούπερ κλάσης του. Τυπικά, τα ουσιαστικά που εντοπίζονται στον ορισμό του προβλήματος γίνονται άμεσα τάξεις στο πρόγραμμα. Και ομοίως, τα ρήματα γίνονται μέθοδοι. Δημόσια, ιδιωτικά και προστατευόμενα είναι οι τυπικοί τροποποιητές πρόσβασης που χρησιμοποιούνται για τις τάξεις. Ένα διάγραμμα κλάσης παρουσιάζει τις κλάσεις των συστημάτων, τις σχέσεις μεταξύ των τάξεων και τις ιδιότητές τους.

Τι είναι οι δομές;

Όπως αναφέρθηκε παραπάνω, οι δομές είναι πολύ παρόμοιες με τις κατηγορίες με παρόμοια χρήση, αλλά είναι ελαφρώς περιορισμένες δυνατότητες από τις κλάσεις. Στην πραγματικότητα, τα μαθήματα μπορούν να θεωρηθούν ως επέκταση στις δομές. Για παράδειγμα, οι δομές είναι ίδιες με τις κλάσεις της C ++, αλλά έχουν προεπιλεγμένα δημόσια μέλη. Μια δομή μπορεί να οριστεί από το χρήστη για να αντιπροσωπεύει έναν σύνθετο τύπο. Παρόμοια με τις κλάσεις, οι δομές περιέχουν μέλη που μπορούν να ανήκουν σε πολλούς τύπους. Η λέξη κλειδί struct χρησιμοποιείται για να καθορίσει μια δομή σε C και C ++, ενώ η λέξη-κλειδί Δομή χρησιμοποιείται για το ίδιο σε γλώσσες προγραμματισμού. NET.

Ποια είναι η διαφορά μεταξύ Κατηγοριών και Δομών;

Παρόλο που και οι δύο κλάσεις και δομές είναι παρόμοια κατασκευάσματα που βρίσκονται σε γλώσσες προγραμματισμού, έχουν πολύ μικρές διαφορές. Τυπικά, η τάξη είναι μια επέκταση της δομής και επομένως οι δομές έχουν κάποιους σχετικούς περιορισμούς. Για παράδειγμα, οι δομές μπορούν να θεωρηθούν ίδιες με τις κλάσεις στην C ++, αλλά τα μέλη δεν είναι δημόσια από προεπιλογή στις κλάσεις (αντίθετα με τις δομές).Αυτό στην πραγματικότητα σημαίνει ότι μπορείτε να ορίσετε μια κλάση και μια δομή με ακριβώς τα ίδια χαρακτηριστικά χρησιμοποιώντας τους κατάλληλους τροποποιητές πρόσβασης στην C ++. Ωστόσο, στο C, οι δομές δεν μπορούν να περιέχουν λειτουργίες ή υπερφορτωμένες λειτουργίες. Οι λέξεις-κλειδιά class και struct χρησιμοποιούνται για να καθορίσουν μια κλάση και μια δομή σε C ++, αντίστοιχα. Οταν πρόκειται για. NET γλώσσες (C #, VB. NET, κ.λπ.), η κλάση είναι ένας τύπος αναφοράς, ενώ η δομή είναι ένας τύπος τιμής. Συνήθως, οι δομές χρησιμοποιούνται για μικρότερα αντικείμενα, αλλά οι κλάσεις χρησιμοποιούνται για μεγαλύτερα αντικείμενα που διατηρούνται στη μνήμη για μεγαλύτερο χρονικό διάστημα.