- Η δήλωση μιας κλάσης (class)
είναι παρόμοια με αυτή μιας δομής:
class point {
int x, y;
};
- Οι κλάσεις χρησιμοποιούνται για την υλοποίηση αφηρημένων τύπων
δεδομένων.
Για το σκοπό αυτό μπορούμε να ορίσουμε μέλη (members)
της κλάσης:
μεταβλητές και συναρτήσεις
που είναι ορατά μόνο από συναρτήσεις που αναφέρονται στον τύπο αυτό
(private) καθώς και μεταβλητές και συναρτήσεις που είναι καθολικά
ορατά (public).
Οι μεταβλητές ορίζουν ιδιότητες (properties)
και οι συναρτήσεις ορίζουν
μεθόδους πρόσβασης (methods)
των αντικειμένων της κλάσης.
Παράδειγμα:
class point {
private:
int x, y;
public:
int getx();
int gety();
void setpos(int sx, int sy);
void display();
};
Στο παραπάνω παράδειγμα τα μέλη (ιδιότητες) της κλάσης x, y δεν είναι ορατά και προσβάσιμα
παρά μόνο από τις συναρτήσεις (μεθόδους) της κλάσης getx, gety, setpos και display.
- Ο ορισμός των συναρτήσεων της κλάσης γίνεται με τη χρήση της
σύνταξης κλάση::συνάρτηση.
Παράδειγμα:
int
point::getx()
{
return (x);
}
int
point::gety()
{
return (y);
}
void
point::display()
{
cout << "(" << x << "," << y << ")\n";
}
void
point::setpos(int sx, int sy)
{
x = sx;
y = sy;
}
- Αφού δηλωθεί μια κλάση (τυπικά σε ένα αρχείο κλάση.h) και οριστούν
οι συναρτήσεις της (τυπικά σε ένα αρχείο κλάση.cpp) μπορούν να οριστούν
μεταβλητές με τον τύπο της κλάσης.
Πρόσβαση στις συναρτήσεις της κλάσης έχουν οι μεταβλητές αυτές με τη
σύνταξη μεταβλητή.συνάρτηση.
Μπορούμε επίσης να δηλώσουμε μεταβλητές δείκτες μιας κλάσης.
Πρόσβαση στις συναρτήσεις της κλάσης έχουν οι μεταβλητές αυτές με τη
σύνταξη μεταβλητή->συνάρτηση.
Παράδειγμα:
#include <iostream.h>
#include "point.h"
main()
{
point a;
point b, *c;
c = new point;
b.setpos(6, 6);
cout << b.getx();
a.display();
b.display();
c->display();
}
- Οι συναρτήσεις της κλάσης μπορούν να έχουν πρόσβαση στα στοιχεία της
κλάσης με τους εξής τρόπους:
- με το όνομά τους (π.χ. x),
- μέσω της ορισμένης από τη γλώσσα
μεταβλητής this που δείχνει στην κλάση (π.χ. this->x),
- με πρόθεμα το όνομα της κλάσης για να αποφεύγεται η σύγχυση
όταν υπάρχει τοπική μεταβλητή με το ίδιο όνομα (π.χ. point::x).
Παράδειγμα:
void
point::setpos(int sx, int sy)
{
this->x = sx;
point::y = sy;
}