Προς το περιεχόμενο

Αντικείμενα και κλάσεις


Giorgos3924

Προτεινόμενες αναρτήσεις

Δημοσ.

Μπορεί κάποιος να μου εξηγήσει ποια είναι η ουσιαστική διαφορά

των αντικειμένων και των κλάσεων από την δομή και τις μεταβλητές δομής στη C;

Ξεκίνησα να διαβάζω για C++ και απ' ότι βλέπω δεν υπάρχει κάποια ουσιαστική διαφορά

εκτός αν κάτι δεν κατάλαβα ή δεν πρόσεξα.

Η μόνη διαφορά που είδα μέχρι τώρα είναι οι ονομασίες.

Ποιό είναι αυτό που δίνει τη "φυσική οντότητα" στο αντικείμενο μιας κλάσης;

Τί προσφέρει η κλάση που δεν προσφέρει η δομή στη C;

Δημοσ.

Μπορεί κάποιος να μου εξηγήσει ποια είναι η ουσιαστική διαφορά

των αντικειμένων και των κλάσεων από την δομή και τις μεταβλητές δομής στη C;

Ξεκίνησα να διαβάζω για C++ και απ' ότι βλέπω δεν υπάρχει κάποια ουσιαστική διαφορά

εκτός αν κάτι δεν κατάλαβα ή δεν πρόσεξα.

Η μόνη διαφορά που είδα μέχρι τώρα είναι οι ονομασίες.

Ποιό είναι αυτό που δίνει τη "φυσική οντότητα" στο αντικείμενο μιας κλάσης;

Τί προσφέρει η κλάση που δεν προσφέρει η δομή στη C;

Δημοσ.

Οι κλάσσεις συνοδεύονται από methods. Αντιθέτως στην C πρέπει να περάσεις την δομή σαν παράμετρο για να την χρησιμοποιήσεις μέσα σε μια function.

 

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

 

Ξέχασα να αναφέρω την διαφορά των class methods (δηλαδή static σε ορολογία java) από τις instance methods.

 

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

Δημοσ.

Οι κλάσσεις συνοδεύονται από methods. Αντιθέτως στην C πρέπει να περάσεις την δομή σαν παράμετρο για να την χρησιμοποιήσεις μέσα σε μια function.

 

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

 

Ξέχασα να αναφέρω την διαφορά των class methods (δηλαδή static σε ορολογία java) από τις instance methods.

 

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

Δημοσ.

Παρεμπιπτόντως μια που συζητάμε για κλάσεις, ένα θέμα που συνήθως δεν τυγχάνει προσοχής είναι

η σειρά με την οποία αρχικοποιούνται οι στατικές κλάσεις (static classes) όταν ξεκινά να τρέχει το πρόγραμμα.

 

Κάποτε μου χρειάστηκε να γίνεται αρχικοποίηση στατικών κλάσεων με συγκεκριμένη σειρά.

Αντίθετα απ' ότι νόμιζα, η τελεσίδικη λύση αυτού του προβλήματος είναι δύσκολη....

Δημοσ.
Μπορεί κάποιος να μου εξηγήσει ποια είναι η ουσιαστική διαφορά

των αντικειμένων και των κλάσεων από την δομή και τις μεταβλητές δομής στη C;

Ξεκίνησα να διαβάζω για C++ και απ' ότι βλέπω δεν υπάρχει κάποια ουσιαστική διαφορά

εκτός αν κάτι δεν κατάλαβα ή δεν πρόσεξα.

Η μόνη διαφορά που είδα μέχρι τώρα είναι οι ονομασίες.

Ποιό είναι αυτό που δίνει τη "φυσική οντότητα" στο αντικείμενο μιας κλάσης;

Τί προσφέρει η κλάση που δεν προσφέρει η δομή στη C;

 

Ο μηχανισμος του v-table. Ουσιαστικα μια class ειναι ενας struct "με ενα member παραπανω". Για να εχεις μια εικονα... Μια κλασση σε c θα ηταν καπως ετσι

>struct  c_class
{
struct
{
	void(*f1)(void);
	void(*f2)(void);

} *VTable;
int x,y,z,g,h,j;
};

 

Οπου vtable μας δειχνει που ειναι οι functions

Δημοσ.

@Evgenios1 : :shock: Καλά τώρα θεωρείς πως έδωσες στον άνθρωπο να καταλάβει τη διαφορά; :confused:

 

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

  • κληρονομικότητα (όπου μια κλάση κληρονομεί χαρακτηριστικά από μια άλλη)
  • scope (ποιος μπορεί να έχει πρόσβαση στις μεταβλητές και τις συναρτήσεις μέλη τις κλάσεις)
  • πολυμορφισμός κλπ

Δημοσ.

Τι να σου πω karnage, το παιδι τωτησε ποια η διαφορα μεταξυ struct c με class c++, και εγω του απαντησα :-D.

 

Btw TS κανε ενα search για το "virtual table" θα σου λυγουν πολλες αποριες.

Δημοσ.

η δομη στην C ειναι ενας τυπος δεδομενων που οριζεται απο τον χρηστη,προκειμενου να κατασκευαστουν συνθετα προγραμματα.θυμιζει αρκετα αν εχεις ασχοληθει με java τισ κλασεις

 

μια δομη για πχ ειναι

struct student

{

char onoma[20];

char eponumo[30];

int am;

float grade;

} ;

 

αυτη ειναι μια δομη

ομως δεν υπαρχει κληρονομικοτητα των αντικειμενων τις κλασης που φτιαχνεις.ενω στην C++ και στην java υπαρχει

Δημοσ.

η δομη στην C ειναι ενας τυπος δεδομενων που οριζεται απο τον χρηστη,προκειμενου να κατασκευαστουν συνθετα προγραμματα.θυμιζει αρκετα αν εχεις ασχοληθει με java τισ κλασεις

 

μια δομη για πχ ειναι

struct student

{

char onoma[20];

char eponumo[30];

int am;

float grade;

} ;

 

αυτη ειναι μια δομη

ομως δεν υπαρχει κληρονομικοτητα των αντικειμενων τις κλασης που φτιαχνεις.ενω στην C++ και στην java υπαρχει

Δημοσ.

Η διαφορά που έχουν τα C structs από τις κλάσεις είναι πως οι κλάσεις εκτός από δεδομένα ενθυλακώνουν και συμπεριφορά. Επίσης συμβάλλουν σε αντικειμενοστρεφείς έννοιες όπως η κληρονομικότητα και ο πολυμορφισμός.

 

Τα C++ structs δεν έχουν καμιά διαφορά εκτός του ότι το default acess specifier τους είναι public ενώ στις κλάσεις private.

Βέβαια αν τα μέλη που διαθέτει είναι όλα POD(Plain-old datatypes) όπως ints, floats , booleans τότε και η δομή θεωρείται POD, άρα δε χρειάζεται constructor, copy constructor, destructor και assignment operator.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...