Ας ξεκινήσουμε λίγο από τον πραγματικό κόσμο:
Ας υποθέσουμε λοιπόν οτι έχουμε ένα ...χαρτόκουτο.
Τι μπορεί να περιλαμβάνει η έννοια "χαρτόκουτο"; Πολλά πράγματα. Ενα χαρτόκουτο έχει: Μήκος, πλάτος, ύψος, χρώμα, και άλλες τετοιες ιδιοτητες.
Ωπ, τι ειπα; "Ιδιότητες"; Ας το κρατήσουμε αυτό στην άκρη και ας δούμε τι άλλο μπορεί να κάνει κανείς με ένα χαρτόκουτο.
Ενα χαρτόκουτο λοιπόν μπορεί να αδειάσει, να γεμίσει, να κλείσει, να ανοίξει, να σχιστεί, να καεί, και χίλια δύο άλλα ενδιαφέροντα πράγματα. Σωστά;
Μπορούμε λοιπόν να το κάνουμε ο,τι θέλουμε με διαφορες μεθόδους.
Ωπ, είπα "μεθόδους";
Ωραία.
Αρα ένα χαρτόκουτο έχει ιδιότητες.
Για το χαρτόκουτο μπορούν να εφαρμοστούν διάφορες δυνατές ενέργειες, οι οποίες ονομάζονται και μέθοδοι.
Τι είναι για εμάς το χαρτόκουτο;
Ειναι ένα πράγμα που έχει μήκος, πλάτος, ύψος, χρώμα, μπορεί να ανοιχτεί, να κλειστεί, να σχιστεί, να καεί.
Ενα πράγμα που έχει μήκος, πλάτος, χρώμα, άνοιγμα φτερών, αριθμό κινητήρων, και μπορεί να πετάξει είναι χαρτόκουτο;
Μαλλον οχι.
Ξερετε γιατί;
Γιατί ανήκει σε άλλη ΚΛΑΣΗ.
Μήπως έδωσα μια απλή εξήγηση του πράγματος;
Η κλάση είναι ένας ορισμός που αποτελείται από ιδιότητες (properties) και μεθόδους (methods) και βάσει της οποίας μπορούμε να δημιουργούμε αντικείμενα.
Τι είναι όμως αντικείμενο;
Αντικείμενο είναι το κουτί από τα σοκολατάκια μάρκας "Φαετωρακανεδιαιτααύριο" που έχω μπροστά μου. Το ΣΥΓΚΕΚΡΙΜΕΝΟ κουτί.
Εχει ύψος (καποια cm), βάρος (καποια γραμμάρια), χρώμα (π.χ. κίτρινο) και γενικώς έχει συγκεκριμένα πράγματα ως τιμές στις ιδιότητες που ορίζονται από την κλάση του. Επίσης, όταν θα ανοίξεις το κουτί αυτό, δεν θα ανοίξεις οποιοδήποτε κουτί. Θα ανοίξεις το ΣΥΓΚΕΚΡΙΜΕΝΟ κουτί.
Αντικείμενο είναι ένα instance (στιγμιότυπο) μιας κλάσης. Σκέψου την κλάση ως τον ορισμό και το αντικείμενο ως το συγκεκριμένο πράγμα που προκύπτει βάσει αυτού. Σκέψου, για να το πούμε διαφορετικά, την κλάση ως "καλούπι" μέσω του οποίου δημιουργείς αντικείμενα.
Φυσικά και μπορείς να δημιουργήσεις πολλά αντικείμενα από την ίδια κλάση. Ενα κουτί σοκολατάκια, και ένα κουτί κουλουράκια. Μπορείς επίσης να δημιουργήσεις πολλά ίδια κουτιά σοκολατάκια. Οταν όμως πεις "ανοίγω το κουτί τάδε" θα ανοίξεις μόνο το κουτί τάδε και οχι ο,τι κουτί υπάρχει μπροστά σου. Αρα, τι θα έχεις; Μια μέθοδο που εφαρμόζεται επάνω σε ένα instance της κλάσης "χαρτόκουτο". Ποιό instance; Μα το συγκεκριμένο κουτί!
(Οι ορισμοί μου είναι πολύ χαλαροί και μπορεί να ξεφεύγουν από τους επίσημους ορισμούς, σκοπό έχω όμως να γίνει κατανοητό από όποιον δεν έχει ξανά συναντήσει τους ορισμούς ως τώρα, και όχι να είμαι απόλυτα ακριβής).
Το εξετάσαμε μόνο θεωρητικα σε αυτό το post, επιφυλάσσομαι και για την προγραμματιστική του απόδοση.
Σωτήρης Φιλιππίδης
DotSee Web Services