User Tools

Site Tools


cpp:classes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
cpp:classes [2020/04/08 08:50] – [Οι μέθοδοι της κλάσης] gthanoscpp:classes [2020/04/08 09:42] gthanos
Line 102: Line 102:
 Επιπλέον, οι μέθοδοι //getWidth// και //getHeight// έχουν το προσδιοριστή **const** αμέσως μετά τη δήλωση τους. Ο προσδιοριστής //const// σε αυτή την περίπτωση, δηλώνει ότι η συγκεκριμένη συνάρτηση **δεν μεταβάλλει το αντικείμενο στο οποίο ανήκει**. Η χρήση του προσδιοριστή //const// αποτελεί α) προστασία προς τον προγραμματιστή που υλοποιεί τη μέθοδο, ώστε σε περίπτωση που προσπαθήσει να γράψει ένα πεδίο της κλάσης η μεταγλώττιση να αποτύχει εμφανίζοντας μήνυμα λάθους και β) δήλωση προς τους προγραμματιστές-χρήστες της κλάσης ότι η συγκεκριμένη συνάρτηση δεν θα μεταβάλλει με οποιονδήποτε τρόπο την κατάσταση του αντικειμένου. Επιπλέον, οι μέθοδοι //getWidth// και //getHeight// έχουν το προσδιοριστή **const** αμέσως μετά τη δήλωση τους. Ο προσδιοριστής //const// σε αυτή την περίπτωση, δηλώνει ότι η συγκεκριμένη συνάρτηση **δεν μεταβάλλει το αντικείμενο στο οποίο ανήκει**. Η χρήση του προσδιοριστή //const// αποτελεί α) προστασία προς τον προγραμματιστή που υλοποιεί τη μέθοδο, ώστε σε περίπτωση που προσπαθήσει να γράψει ένα πεδίο της κλάσης η μεταγλώττιση να αποτύχει εμφανίζοντας μήνυμα λάθους και β) δήλωση προς τους προγραμματιστές-χρήστες της κλάσης ότι η συγκεκριμένη συνάρτηση δεν θα μεταβάλλει με οποιονδήποτε τρόπο την κατάσταση του αντικειμένου.
  
 +===== Πεδία που περιγράφονται από κλάσεις =====
 +
 +Εκτός από πεδία βασικού τύπου μπορούμε να έχουμε και πεδία κλάσεων των οποίων ο τύπος περιγράφεται από κλάσεις. Παράδειγμα μιας τέτοια κλάσης είναι το κυβοειδές το οποίο χρησιμοποιεί την κλάση Rectangle που ορίσαμε παραπάνω.
 +
 +<code cpp Cuboid.hpp>
 +#include <iostream>
 +using namespace std;
 +
 +#include "Rectangle.hpp"
 +
 +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>
 +
 +<code cpp Cuboid.cpp>
 +#include "Cuboid.hpp"
 +
 +void Cuboid::setRectangle(Rectangle r) {rect = r;}
 +Rectangle Cuboid::getRectangle() const {return rect;}
 +void Cuboid::setLength(int l) { length = l; }
 +int Cuboid::getLength() const { return length; }
 +
 +int Cuboid::volume() {
 +  return length * rect.getWidth() * rect.getHeight();
 +}
 +</code>
cpp/classes.txt · Last modified: 2021/05/06 23:01 (external edit)