cpp:classes
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| cpp:classes [2017/05/10 04:36] – [Οι μέθοδοι της κλάσης] gthanos | cpp:classes [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 13: | Line 13: | ||
| void setWidth(int w); | void setWidth(int w); | ||
| void setHeight(int h); | void setHeight(int h); | ||
| - | int getWidth(); | + | int getWidth() |
| - | int getHeight(); | + | int getHeight() |
| }; | }; | ||
| void Rectangle:: | void Rectangle:: | ||
| void Rectangle:: | void Rectangle:: | ||
| - | int Rectangle:: | + | int Rectangle:: |
| - | int Rectangle:: | + | int Rectangle:: |
| int main () { | int main () { | ||
| Line 31: | Line 31: | ||
| </ | </ | ||
| - | Η παραπάνω κλάση διαθέτει τα πεδία τύπου //int width, height// και τις μεθόδους //setWidth, setHeight, getWidth, getHeight// | + | Η παραπάνω κλάση διαθέτει τα πεδία τύπου //int width, height// και τις μεθόδους //setWidth, setHeight, getWidth, getHeight// |
| + | |||
| + | ===== Διάκριση μεταξύ δήλωσης της κλάσης και υλοποίησης της κλάσης ===== | ||
| + | |||
| + | Στο προηγούμενο παράδειγμα, | ||
| + | |||
| + | <code cpp Rectangle.hpp> | ||
| + | #include < | ||
| + | using namespace std; | ||
| + | |||
| + | class Rectangle { | ||
| + | private: | ||
| + | int width, height; | ||
| + | public: | ||
| + | void setWidth(int w); | ||
| + | void setHeight(int h); | ||
| + | int getWidth() const; | ||
| + | int getHeight() const; | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | <code cpp Rectangle.cpp> | ||
| + | #include " | ||
| + | |||
| + | void Rectangle:: | ||
| + | void Rectangle:: | ||
| + | int Rectangle:: | ||
| + | int Rectangle:: | ||
| + | </ | ||
| + | |||
| + | Ο λόγος που διακρίνουμε μία κλάση σε δήλωση και υλοποίηση είναι ότι η δήλωση της κλάσης πιθανόν να συμπεριληφθεί μέσω μιας εντολής ''# | ||
| + | |||
| + | <WRAP important 80% center round> | ||
| + | Στη συνέχεια, | ||
| + | </ | ||
| ===== Οι μέθοδοι της κλάσης ===== | ===== Οι μέθοδοι της κλάσης ===== | ||
| - | Οι μέθοδοι της κλάσης είναι συναρτήσεις οι οποίες έχουν απευθείας πρόσβαση στα πεδία (μεταβλητές) της κλάσης. Οι μέθοδοι ορίζονται μέσα στην κλάση ή ορίζεται το πρότυπο τους μέσα στην κλάση και η υλοποίηση τους εκτός. Από το παρακάτω παράδειγμα παρατηρήστε τους δύο διαφορετικούς τρόπους ορισμού των μεθόδων // | + | Οι μέθοδοι της κλάσης είναι συναρτήσεις οι οποίες έχουν απευθείας πρόσβαση στα πεδία (μεταβλητές) της κλάσης. Οι μέθοδοι ορίζονται μέσα στην κλάση ή ορίζεται το πρότυπο τους μέσα στην κλάση και η υλοποίηση τους εκτός. Από το παρακάτω παράδειγμα παρατηρήστε τους δύο διαφορετικούς τρόπους ορισμού των μεθόδων // |
| - | <code c++ Rectangle.cpp> | + | <code c++ Rectangle.hpp> |
| #include < | #include < | ||
| using namespace std; | using namespace std; | ||
| Line 50: | Line 85: | ||
| void setHeight(int h) { height = h; } | void setHeight(int h) { height = h; } | ||
| }; | }; | ||
| + | |||
| + | </ | ||
| + | |||
| + | <code c++ Rectangle.cpp> | ||
| + | #include " | ||
| int Rectangle:: | int Rectangle:: | ||
| Line 56: | Line 96: | ||
| </ | </ | ||
| - | Οι δύο παραπάνω τρόποι ορισμού μίας μεθόδου της κλάσης είναι ισοδύναμοι με την διαφορά ότι η μέθοδος // | + | Οι δύο παραπάνω τρόποι ορισμού μιας μεθόδου της κλάσης είναι ισοδύναμοι με την διαφορά ότι η μέθοδος // |
| - | <WRAP center round important 80%> | + | Για τον ορισμό της μεθόδου //setWidth// εκτός της κλάσης είναι απαραίτητη η χρήση του ονόματος της κλάσης ακολουθούμενη από το //scope operator// **Rectangle:: |
| - | Οι μέθοδοι //getWidth// και | + | |
| - | </ | + | |
| + | Παρατηρήστε ότι οι μέθοδοι // | ||
| + | ===== Πεδία που περιγράφονται από κλάσεις ===== | ||
| + | |||
| + | Εκτός από πεδία βασικού τύπου μπορούμε να έχουμε και πεδία κλάσεων των οποίων ο τύπος περιγράφεται από κλάσεις. Παράδειγμα μιας τέτοια κλάσης είναι το ορθογώνιο παραλληλεπίπεδο - κυβοειδές (κλάση Cuboid) το οποίο έχει ένα πεδίο τύπου Rectangle το οποίο ορίσαμε παραπάνω. | ||
| + | |||
| + | <code cpp Cuboid.hpp> | ||
| + | #include < | ||
| + | using namespace std; | ||
| + | |||
| + | #include " | ||
| + | |||
| + | class Cuboid { | ||
| + | private: | ||
| + | int length; | ||
| + | Rectangle rect; | ||
| + | public: | ||
| + | void setRectangle(Rectangle r); | ||
| + | Rectangle getRectangle() const; | ||
| + | void setLength(int l); | ||
| + | int getLength() const; | ||
| + | int volume(); | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | <code cpp Cuboid.cpp> | ||
| + | #include " | ||
| + | |||
| + | void Cuboid:: | ||
| + | Rectangle Cuboid:: | ||
| + | void Cuboid:: | ||
| + | int Cuboid:: | ||
| + | |||
| + | int Cuboid:: | ||
| + | return length * rect.getWidth() * rect.getHeight(); | ||
| + | } | ||
| + | </ | ||
cpp/classes.1494390999.txt.gz · Last modified: 2017/05/10 03:36 (external edit)
