Οι κλάσεις είναι κάτι σαν το «καλούπι» στο οποίο τα αντικείμενα μας θα πάρουν την αντίστοιχη μορφή όταν θα δημιουργηθούν. Εδώ Αποφασίζουμε για το πώς θα ονομάζεται ο τύπος του αντικειμένου μας, τι χαρακτηριστικά (ιδιότητες) θα έχει καθώς και ποια θα είναι η συμπεριφορά του (δηλ. οι λειτουργίες του).
Μια κλάση στον προγραμματισμό αντιπροσωπεύει ένα σύνολο οντοτήτων ή αντικειμένων είτε είναι πραγματικά είτε θεωρητικά. Συνήθως χρησιμοποιούμε τις κλάσεις όταν πρόκειται να προσπελάσουμε πολλαπλά από αυτά τα αντικείμενα έτσι ώστε να είναι πιο εύκολα διαχωρίσιμα. Έτσι η κλάση «άνθρωπος» αναφέρεται σε πολλούς ανθρώπους, αλλά χρησιμοποιείται σε ονομαστική ενικού. Χρησιμοποιώντας αυτόν τον τρόπο μπορούμε να δείχνουμε την σχέση μεταξύ αλληλεπιδρώμενων αντικειμένων διευκολύνοντας κατά πολύ τον τρόπο της ανάπτυξης καθώς και την μελλοντική συντήρηση ή επέκταση. Μπορούμε έτσι να αλλάξουμε εύκολα την δομή ενός αντικειμένου προσθέτοντας νέες λειτουργίες ,αφαιρώντας ή προσθέτοντας ιδιότητες ή να διορθώσουμε λάθη χωρίς να χρειάζεται να αλλάξει το περιβάλλον του.
Οι μεταβλητές της κλάσης αντιπροσωπεύουν χαρακτηριστικά ή ιδιότητες της οντότητας αντικειμένου που αντιπροσωπεύει, ενώ όπως είπαμε και προηγουμένως οι μέθοδοι της αντιπροσωπεύουν τις λειτουργίες του. Ας δούμε ένα μικρό παράδειγμα:
- Οντότητα: Φοιτητής
- Ιδιότητες: Όνομα, Επώνυμο, Εξάμηνο, Χρωστούμενα μαθήματα κ.α.
- Λειτουργίες: Δήλωση μαθημάτων, Συμμετοχή σε εργασία, κ.α.
Η οντότητα φοιτητής με όνομα «Κώστας» είναι μέλος της κλάσης Φοιτητής με τα χαρακτηριστικά Όνομα, Επώνυμο, Εξάμηνο, Χρωστούμενα μαθήματα, και λειτουργίες Δήλωση μαθημάτων , Συμμετοχή σε εργασία κ.α.
Η διαδικασία με την οποία αναπτύσσουμε αντικείμενα στον αντικειμενοστραφή προγραμματισμό έχει μια συγκεκριμένη σειρά προκειμένου να λειτουργήσει σωστά.
Αρχικά πρέπει να αποφασίσουμε πως θα ονομάζεται η ομάδα αντικειμένων που έχουμε σκοπό να δημιουργούμε κάθε φορά, και με βάση αυτό το όνομα να κατασκευάσουμε το «καλούπι» με το οποίο θα τα δημιουργούμε. Το καλούπι αυτό στις γλώσσες προγραμματισμού ονομάζεται τύπος αντικειμένων και αντικατοπτρίζεται από το περιεχόμενο μιας κλάσης (class). Μια κλάση περιλαμβάνει όλα αυτά τα χαρακτηριστικά (ιδιότητες και λειτουργίες) που καθιστούν το αντικείμενο, αυτό που είναι. Οπότε το όνομα της κλάσης είναι και το όνομα του τύπου αντικειμένων που έχουμε σκοπό να δημιουργήσουμε. Αφού κατασκευάσουμε πλήρως την κλάση και συμπεριλάβουμε μέσα σε αυτήν και τους ανάλογους κατασκευαστές, τότε για να δημιουργήσουμε ένα αντικείμενο βασιζόμενοι στον συγκεκριμένο τύπο, αρκεί να καλέσουμε το όνομα της κλάσης, δίνοντας αντίστοιχα ορίσματα για τον κατασκευαστή της. Η γραμμή κώδικα που διαθέτει όλα αυτά, ονομάζεται στιγμιότυπο αντικειμένου, και είναι η στιγμή κατά την οποία ένα αντικείμενο δημιουργείται βασιζόμενο στο καλούπι του (κλάση).
- Αρχικά αποφασίζουμε πως θα ονομάσουμε την ομάδα αντικειμένων μας.
- Μετά, δημιουργούμε την κλάση μας συμπεριλαμβάνοντας μέσα όλα τα χαρακτηριστικά (ιδιότητες και λειτουργίες) των αντικειμένων μας.
- Ύστερα δημιουργούμε ένα αντικείμενο βασιζόμενοι στον νέο τύπο που δημιουργήσαμε.
Δημιουργία κλάσης
Για να δημιουργήσουμε μια απλή κλάση χρησιμοποιούμε την εξής σύνταξη:
<?php
class όνομα {
}
?>
Χρησιμοποιούμε την λέξη κλειδί «class» και όπου όνομα βάζουμε το όνομα που θέλουμε να έχει η κλάση μας χρησιμοποιώντας λατινικά γράμματα.
<?php
class oxima{
}
?>
Για να είναι χρήσιμες οι κλάσεις θα πρέπει να έχουν ιδιότητες (=μεταβλητές) και λειτουργίες (=μέθοδοι).
<?php
class oxima{
var $montelo;
var $kybika;
function leitourgia(){
}
}
?>
Οι ιδιότητες είναι τα $montelo και $kybika, και η λειτουργία η leitourgia() η οποία δεν κάνει απολύτως τίποτα.
Ενθυλάκωση
Στις αντικειμενοστραφής γλώσσες προγραμματισμού υποστηρίζεται η ενθυλάκωση η οποία είναι γνωστή και ως απόκρυψη δεδομένων.
Η πρόσβαση στα δεδομένα ενός αντικειμένου γίνεται μόνο μέσα από το περιβάλλον του. Η ενθυλάκωση πραγματοποιείται μέσω των εντολών δήλωσης πρόσβασης , και έτσι εξασφαλίζεται πως μια κλάση δεν θα έχει άμεση πρόσβαση στα δεδομένα μιας άλλης κλάσης, αλλά αυτά θα «φιλτράρονται» χρησιμοποιώντας κάποια δημόσια λειτουργία της δεύτερης.
Εντολή | Περιγραφή | Παράδειγμα |
---|---|---|
public | Δημόσιο |
|
private | Ιδιωτικό |
|
<?php
class oxima{
private $montelo;
public $kybika;
public function leitourgia(){
}
}
?>
Η ιδιότητα $montelo είναι προσπελάσιμη μόνο από την κλάση oxima ενώ η ιδιότητα $kybika και η λειτουργία leitourgia() είναι προσπελάσιμες από οποιαδήποτε άλλη κλάση.