Πως φτιάχνουμε αντικείμενα; (Εκτός ύλης)
Το σχολικό βιβλίο δυστυχώς δεν έχει ούτε ένα παράδειγμα του πως θα μπορούσαμε να φτιάξουμε κλάσεις και αντικείμενα. Προσεγγίζει τον Αντικειμενοστραφή προγραμματισμό μόνο θεωρητικά.
Για την καλύτερη κατανόηση όλων όσων θα περιγράψουμε σε αυτό το κεφάλαιο, θα επεκτείνουμε την ΓΛΩΣΣΑ προσθέτωντας νέα στοιχεία σε αυτήν ώστε να δούμε στην πράξη πως θα μπορύσε να δημιουργήσουμε κλάσεις και αντικείμενα. Προσοχή! Ο κώδικας που θα παρουσιαστεί παρακάτω δεν υπάρχει στο σχολικό βιβλίο και συνεπώς δεν είναι στην ύλη των Πανελλαδικών εξετάσεων.
Φανταστείτε να πρέπει να φτιάξετε ένα πρόγραμμα που να διαχειρίζεται δεδομένα (όνομα, επίθετο, διεύθυνση κατοικίας, ΑΜΚΑ, κλπ) για 100 ανθρώπους. Σε αυτή την περίπτωση θα χρειαστούμε 100 αντικείμενα (ένα αντικείμενο για κάθε άνθρωπο). Θα χρειαστούμε επίσης ένα μηχανισμό (κώδικα) που θα μας βοηθήσει να φτιάξουμε πολύ γρήγορα και εύκολα τα παραπάνω αντικείμενα. Αυτός ο μηχανισμός καλείται κλάση (class).
Για να παραμείνει ο κώδικας όσο γίνεται πιο απλός ας θεωρήσουμε οτι έχουμε μόνο 2 ιδιότητες (όνομα, ηλικία) και 2 μεθόδους (αρχικοποίηση, δίπλωμα_οδήγηησης). Η αντίστοιχη κλάση θα μπορύσε να είναι :
! Ορισμός Μιας Κλάσης
ΚΛΑΣΗ Άνθρωπος:
! Δήλωση Μελών της Κλάσης
ΧΑΡΑΚΤΗΡΕΣ: όνομα
ΑΚΕΡΑΙΕΣ: ηλικία
! Κατασκευαστής για να αρχικοποιεί την κατάσταση του ανθρώπου
ΔΙΑΔΙΚΑΣΙΑ αρχικοποίηση(x, y):
this.όνομα <- x
this.ηλικία <- y
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
! ΣΥΝΑΡΤΗΣΗ για να πάρει πληροφορίες για τον άνθρωπο
ΣΥΝΑΡΤΗΣΗ δίπλωμα_οδήγησης():
ΑΝ this.ηλικία>=17 ΤΟΤΕ
δίπλωμα_οδήγησης <- "Ναι! Μπορεί να βγάλει δίπλωμα οδήγησης."
ΑΛΛΙΩΣ
δίπλωμα_οδήγησης <- "Δεν μπορεί να βγάλει δίπλωμα οδήγησης."
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
ΤΕΛΟΣ_ΚΛΑΣΗΣ
Οι παρακάτω εντολές δημιουργούν δύο αντικείμενα από την κλάση άνθρωπος, αρχικοποιούν τις μεταβλητές κάθε αντικειμένου και εκτελούν την συνάρτηση δίπλωμα_οδήγησης() σε κάθε αντικείμενο.
! Δημιουργία δύο αντικειμένων από Κχλάση
άνθρωπος1 <- new Άνθρωπος()
άνθρωπος2 <- new Άνθρωπος()
! Αρχικοποίηση Κατάστασης Αντικειμένων
άνθρωπος1.αρχικοποίηση("Γιάννης", 30)
άνθρωπος2.αρχικοποίηση("Αλίκη", 25)
! Εκτέλεση μεθόδου σε Αντικείμενα
απάντηση1 <- άνθρωπος1.δίπλωμα_οδήγησης()
απάντηση2 <- άνθρωπος2.δίπλωμα_οδήγησης()
! Εμφάνιση Αποτελεσμάτων
ΓΡΑΨΕ "O/H ",άνθρωπος1.όνομα, " μπορεί να βγάλει δίπλωμα; ", απάντηση1
ΓΡΑΨΕ "O/H ",άνθρωπος2.όνομα, " μπορεί να βγάλει δίπλωμα; ", απάντηση2
Κλάση
Στον αντικειμενοστραφή προγραμματισμό οι κλάσεις αντικατοπτρίζουν αντικείμενα από τον κόσμο στον οποίο ζούμε. Η παρακάτω κλάση ορίζει ένα αυτοκίνητο (όχι κάποιο συγκεκριμένο αλλά γενικά ένα αυτοκίνητο).
Η κλάση είναι το “καλούπι” από το οποίο κατασκευάζονται τα αυτοκίνητα (αντικείμενα ή αλλιώς στιγμιότυπα) που θέλουμε να έχουμε σε ένα πρόγραμμα. Μια καλή αναλογία για να περιγράψουμε την σχέση κλάσης και αντικειμένου είναι τα διάφορα έντυπα/φόρμες που μας ζητάνε να συμπληρώσουμε. Η πρωτότυπη φόρμα από την οποία βγάζουμε αντίγραφα (φωτοτυπίες) είναι η κλάση. Το αντίγραφο όταν συμπληρωθεί αποτελεί ένα αντικείμενο (στιγμιότυπο).
Ο γενικός τύπος ενός αντικειμένου καλείται κλάση (class) και καθορίζει τις αρχικές ιδιότητες και τη συμπεριφορά κάθε αντικειμένου που προέρχεται από αυτή. Μια κλάση αποτελεί ένα αφαιρετικό (abstract) στοιχείο (τύπο) και μπορεί να παράγει ένα απεριόριστο πλήθος δομικά ίδιων αντικειμένων.
Στην αμέσως προηγούμενη ενότητα μελετήσαμε ένα σενάριο απο λουλουδιών και κατασκευάσαμε το αντίστοιχο διάγραμμα αναπαράστασης των αντικειμένων. Τώρα που είχαμε τι είναι η κλάση να προχωρήσουμε στο επόμενο βήμα και να κατασκευάσουμε το αντίστοιχο διάγραμμα αναπαράσταση κλάσεων. Ποιος συγκεκριμένα αυτό που πρέπει να κάνουμε είναι να παρατηρήσουμε ποια αντικείμενα έχουν ομοιότητες. Είναι εύκολα αντιληπτό η κυρία Μαρία και η κυρία Άννα έχουν πολλά κοινά στοιχεία (τα αντικείμενα τους μοιάζουν καταπληκτικά) άρα αυτά τα δύο αντικείμενα μπορούν να αντικατασταθούν με μία κλάση που θα την ονομάσουμε πελάτης. Ε τον ίδιο τρόπο και τα αντικείμενα Γιώργος και Τζιοβάνι μπορούν να αντικατασταθούν με μία κλάση που θα την ονομάσουμε Ανθοπώλης. Στο σενάριο που μελετήσαμε υπάρχει μόνο ένας ανθοδέτης (ο Αντόνιο) και ένας ταχυμεταφορέας (ο Πέπε). Αυτά τα δύο αντικείμενο θα αντικατασταθούν με της κλάσεις Ανθοδέτης και Ταχυμεταφορέας. Το σενάριο που μελετήσαμε εσκεμμένα για λόγους οικονομίας είχε λίγα αντικείμενο. Είναι προφανές ότι σε ένα αληθινό πρόγραμμα διαχείρισης ανθοδεσμών θα υπάρχει πελατών, ανθοπωλείων, ανθοδετών και ταχυμεταφορέων οπότε καθίσταται αναγκαία η χρήση κλάσεων. Το νέο διάγραμμα προκύπτει άν αντικαταστήσουμε τα αντικείμενα με κλάσεις είναι το ακόλουθο :
Ενθυλάκωση
Σε μια αντικειμενοστραφή εφαρμογή κάθε αντικείμενο αποτελεί ξεχωριστή οντότητα και περιέχει ενσωματωμένες τις ιδιότητες (δεδομένα) και τους κανόνες συμπεριφοράς του (μεθόδους). Η δυνατότητα ενός αντικειμένου να συνδυάζει εσωτερικά τα δεδομένα και τις μεθόδους χειρισμού του καλείται ενθυλάκωση (encapsulation). Την ενθυλάκωση μπορούμε να την παρομοιάσουμε σαν ένα κέλυφος που υπάρχει γύρω από κάθε αντικείμενο και διαχωρίζει τον εσωτερικό από τον εξωτερικό του κόσμο.
Το κάθε αντικείμενο έχει ενσωματώσει τις μεταβλητές και τα υποπρογράμματα του. Με αυτό τον τρόπο εξασφαλίζουμε οτι δεν μπορούν να μεταβληθούν οι τιμές των μεταβλητών κατά λάθος ή κακόβουλα. Ο σωστός τρόπος να μεταβάλουμε την τιμή μιας μεταβλητής είναι με κατάλληλα υποπρογράμματα του ίδιου του αντικειμένου.
Ας δούμε μερικά παραδείγματα ενθυλάκωσης από την καθημερινή ζωή:
Φυσικά! Ας δούμε ένα παράδειγμα ενθυλάκωσης από την καθημερινή ζωή:
Ιατρικά Αρχεία
– Ενθυλάκωση: Οι πληροφορίες των ασθενών αποθηκεύονται σε ένα σύστημα ιατρικών αρχείων. Οι λεπτομέρειες (όπως το ιατρικό ιστορικό, οι συνταγές και τα αποτελέσματα εξετάσεων) είναι ιδιωτικές και μπορούν να προσπελαστούν ή να τροποποιηθούν μόνο από εξουσιοδοτημένο προσωπικό μέσω συγκεκριμένων μεθόδων (όπως η σύνδεση με χρήση κωδικού).
– Όφελος: Προστατεύει τα ευαίσθητα δεδομένα των ασθενών από μη εξουσιοδοτημένη πρόσβαση και διασφαλίζει ότι μόνο εξειδικευμένο ιατρικό προσωπικό μπορεί να ενημερώσει τα αρχεία.
Ερωτήσεις ανάπτυξης απο Πανελλαδικές εξετάσεις
- xxxxxxxxxxxxxxxxxx