User Tools

Site Tools


cpp:classes

This is an old revision of the document!


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

Όπως και στη Java οι κλάσεις στη C++ δημιουργούν νέους τύπους δεδομένων. Παρακάτω δίνεται το παράδειγμα της κλάσης Rectangle με παράλληλη δημιουργία ενός αντικειμένου της κλάσης αυτής.

Rectangle.cpp
#include <iostream>
using namespace std;
 
class Rectangle {
  private:
    int width, height;
  public:
    void setWidth(int w);
    void setHeight(int h);
    int getWidth();
    int getHeight();
};
 
void Rectangle::setWidth(int w) { width = w; }
void Rectangle::setHeight(int h) { height = h; }
int Rectangle::getWidth() { return width; }
int Rectangle::getHeight() { return height; }
 
int main () {
  Rectangle rect;
  rect.setWidth(5);
  rect.setHeight(6);
  cout << "area: " << rect.getWidth() * rect.getHeight() << endl;
  return 0;
}

Η παραπάνω κλάση διαθέτει τα πεδία τύπου int width, height και τις μεθόδους setWidth, setHeight, getWidth, getHeight. Η κλάση δεν διαθέτει κατασκευαστή. Η δήλωση Rect rect; στη μέθοδο main() δημιουργεί ένα αντικείμενο με κλήση του default κατασκευαστή.

Οι μέθοδοι της κλάσης

A member function of a class is a function that has its definition or its prototype within the class definition like any other variable. It operates on any object of the class of which it is a member, and has access to all the members of a class for that object.

Οι μέθοδοι της κλάσης είναι συναρτήσεις οι οποίες έχουν απευθείας πρόσβαση στα πεδία (μεταβλητές) της κλάσης. Οι μέθοδοι ορίζονται μέσα στην κλάση ή ορίζεται το πρότυπο τους μέσα στην κλάση και η υλοποίηση τους εκτός. Από το παραπάνω παράδειγμα παρατηρήστε τους δύο διαφορετικούς τρόπους ορισμού των μεθόδων setWidth και setHeight.

Rectangle.cpp
#include <iostream>
using namespace std;
 
class Rectangle {
  private:
    int width, height;
  public:
    void setWidth(int w);
    void setHeight(int h) { height = h; }
};
 
void Rectangle::setWidth(int w) { width = w; }

Οι δύο παραπάνω τρόποι ορισμού μίας μεθόδου της κλάσης είναι ισοδύναμοι με την διαφορά ότι η μέθοδος setHeight ορίζεται ως inline ακόμη και εάν η λέξη inline δεν αναφέρεται ρητά. Για τον ορισμό της μεθόδου setWidth εκτός της κλάσης είναι απαραίτητη η χρήση του ονόματος της κλάσης ακολουθούμενη από το scope operator (Rectangle::setWidth(int w)). Η χρήση του scope operator εξασφαλίζει ότι η μέθοδος ανήκει στην κλάση και δεν αποτελεί αυτόνομη μέθοδο του προγράμματος.

cpp/classes.1491984892.txt.gz · Last modified: 2017/04/12 07:14 (external edit)