🟢Κ1 Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό

1.1. Η γλώσσα προγραμματισμού Java

Carierra ΠΑΤΡΑΣ - Java
  • H Java δημιουργήθηκε το 1995 από τη SUN και θεωρείται αυτή τη στιγμή μία από τις πιο δημοφιλείς γλώσσες στον χώρο της πληροφορικής. Στις 13 Νοεμβρίου του 2006 η Java έγινε πλέον μια γλώσσα ανοιχτού κώδικα (GPL) όσον αφορά το μεταγλωττιστή (javac) και το πακέτο ανάπτυξης (JDK, Java Development Kit). Από το 2010 και μετά η εταιρία λογισμικού Oracle Corporation εξαγόρασε την Sun Microsystems και μαζί με αυτήν όλες τις τεχνολογίες (πνευματικά δικαιώματα/ πατέντες) που η δεύτερη είχε στην κατοχή της ή είχε δημιουργήσει. 
  • Η Java είναι μια γλώσσα που χρησιμοποιείται αρκετά για δικτυακές εφαρμογές ή για εφαρμογές που εκτελούνται μέσω browser στον παγκόσμιο ιστό (applets). Σύμφωνα με τους δημιουργούς της, η Java είναι μια απλή, αντικειμενοστρεφής, κατανεμημένη, διερμηνευόμενη, ισχυρή, ασφαλής, πολυνηματική και δυναμική γλώσσα.

 

 

 

Διαδικασία μεταγλώττισης και εκτέλεσης προγραμμάτων Java

Σχήμα: Διαδικασία μεταγλώττισης και εκτέλεσης προγραμμάτων Java

 

 


 

 

1.2. Το περιβάλλον εκτέλεσης της γλώσσας Java

Τα προγράμματα μεταγλωττίζονται αρχικά σε μια ενδιάμεση γλώσσα γνωστή ως java bytecode. Η γλώσσα αυτή είναι ουσιαστικά η γλώσσα μιας εικονικής μηχανής, γνωστής ως Java Virtual Machine (JVM). Στη συνέχεια το πρόγραμμα που προκύπτει σε μορφή java bytecode εκτελείται από τον διερμηνευτή κάθε πλατφόρμας.

Πιο συγκεκριμένα τα βήματα:

  1. Αφού το γράψουμε σε κάποιον συντάκτη πηγαίου κώδικα, το πρόγραμμα περνάει από το μεταγλωττιστή (compiler) και 
  2. παράγεται ο ενδιάμεσος κώδικας για την εικονική μηχανή της Java. Το αρχείο του πηγαίου κώδικα έχει κατάληξη java, π.χ. Hello.java, ενώ το αρχείο με τον κώδικα μηχανής έχει κατάληξη .class και στην προκειμένη περίπτωση Hello.class. 
  3. Κατόπιν γίνεται η σύνδεση με τις βιβλιοθήκες προγραμματισμού που χρησιμοποιούνται (acm.program) και παράγεται το τελικό αρχείο για εκτέλεση από την εικονική μηχανή της Java. 
  4. Στη συνέχεια όποτε θέλουμε να εκτελέσουμε την εφαρμογή, καλούμε τη μηχανή εκτέλεσης της Java με όρισμα το αρχείο jar.
Σχήμα: Διαδικασία ανάπτυξης προγράμματος Java

 

 

💪🏻Δραστηριότητα: 

Βάλτε σε σειρά τα βήματα για την διαδικασία ανάπτυξης προγράμματος Java.

 

 


 

 

1.3. Γνωριμία με το περιβάλλον προγραμματισμού

Greenfoot: transforming the way ...Το Greenfoot είναι ένα Ολοκληρωμένο Περιβάλλον Ανάπτυξης Εφαρμογών (IDE) που έχει ως σκοπό τη διδασκαλία του αντικειμενοστρεφούς προγραμματισμού με τη γλώσσα προγραμματισμού Java. Στο περιβάλλον αυτό δημιουργείται ένας κόσμος μέσα στον οποίο αλληλοεπιδρούν διάφορες μορφές (actors) και μπορούν να υλοποιηθούν προγράμματα που αφορούν σε παιχνίδια, προσομοιώσεις και γραφικά

Visual
Εικόνα: Το βασικό παράθυρο του Greenfoot

 

Η οθόνη του Greenfoot χωρίζεται σε τρία μέρη: 

  • Τον Κόσμο (World), μέσα στον οποίο ζουν τα αντικείμενα που δημιουργούμε και ο οποίος καταλαμβάνει το μεγαλύτερο μέρος της οθόνης. 
  • Την ιεραρχική δομή των κλάσεων (Class hierarchy), όπου φαίνονται σε ιεραρχική δομή όλοι οι τύποι των αντικειμένων που χρησιμοποιούμε (Οι τύποι αντικειμένων ‘World’ και ‘Αctor’ εμφανίζονται σε όλα τα σενάρια του Greenfoot). Όλοι οι τύποι των αντικειμένων επεκτείνουν τους αρχικούς τύπους World και Actor και υιοθετούν τις ιδιότητες και την όποια λειτουργικότητά τους. 
  • Την κονσόλα χειρισμού, που βρίσκεται στο κάτω μέρος της οθόνης. Η εκτέλεση ενός σεναρίου γίνεται με το πάτημα του κουμπιού Εκκίνηση (Act). Η ρύθμιση της ταχύτητας εκτέλεσης γίνεται με την μπάρα κύλισης Ταχύτητα (Speed). Για να εκτελούμε βήμα - βήμα το σενάριο πατάμε το κουμπί Δράση (Run). Αν θέλουμε να ξεκινήσουμε την εκτέλεση από την αρχή πατάμε το κουμπί Επαναφορά (Reset).
  • Στο πάνω μέρος της οθόνης υπάρχουν το οριζόντιο μενού: Σενάριο, Επεξεργασία, Χειριστήρια και Βοήθεια. 
  • Η αποθήκευση ενός αντίγραφου του σεναρίου, γίνεται με κλικ στην επιλογή Αποθήκευση ως... (Save as…) στο μενού Σενάριο.

 

 


 

 

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

  • Οι κλάσεις (classes) και τα αντικείμενα (objects or instances) είναι θεμελιώδεις έννοιες στον αντικειμενοστρεφή προγραμματισμό.
  • Βασική αρχή πάνω στην οποία στηρίζεται ο Αντικειμενοστρεφής Προγραμματισμός είναι η προσέγγιση του πραγματικού κόσμου, ο οποίος αποτελείται από αντικείμενα απλά ή σύνθετα. Τα αντικείμενα έχουν ένα σύνολο χαρακτηριστικών - ιδιοτήτων (attributes) που προσδιορίζουν τη φυσική τους υπόσταση. Κάθε αντικείμενο επίσης, έχει κανόνες συμπεριφοράς και μπορεί να εκτελεί συγκεκριμένες ενέργειες (μεθόδους), ανάλογα με τα μηνύματα που λαμβάνει από το περιβάλλον στο οποίο βρίσκεται. Επίσης, ένα αντικείμενο μπορεί να επιδρά πάνω σ’ ένα άλλο αντικείμενο στέλνοντας του το κατάλληλο μήνυμα.

 

 

Παράδειγμα:

Η κλάση Αυτοκίνητο έχει χαρακτηριστικά (μηχανή, ρόδες, τιμόνι, μηχανισμός πλοήγησης, κ.ά.) και λειτουργίες (εκκίνηση, πέδηση, μεταβολή ταχύτητας, αλλαγή κατεύθυνσης, κ.ά.), οι οποίες καθορίζουν τη συμπεριφορά της κλάσης. Το αντικείμενο Αυτοκίνητο 1 έχει συγκεκριμένες τιμές στις ιδιότητες που ορίζονται από την κλάση του, ενώ το Αυτοκίνητο 2 έχει διαφορετικές τιμές στις ιδιότητες του. 

Δηλαδή:

Εικονα: Παράδειγμα Κλάσης και Αντικειμένων της (Αυτοκίνητο)

 

 

Παράδειγμα:  

Cutter for cookies 2025
Εικόνα: Φόρμα για μπισκότα και Μπισκότα (σε ζύμη)

Η κλάση είναι σαν τη «φόρμα» που φτιάχνουμε μπισκότα ενώ το κάθε «μπισκότο» είναι ένα αντικείμενο. Κάθε μπισκότο είναι μοναδικό. Διαφέρει έστω και λίγο από τα άλλα και ας φτιάχτηκαν από την ίδια φόρμα.  

 

 

 

 

 

 

💪🏻Δραστηριότητα 🧩

Διαμοιράστε σωστά τους όρους που παρουσιάζονται ανάλογα με το αν αποτελεί παράδειγμα κλάσης, μεθόδου ή ιδιότητας.

 

 


 

 

1.5. Υποκλάσεις και Υπερκλάσεις

  • Μια κλάση που κληρονομεί χαρακτηριστικά και λειτουργίες από μια άλλη κλάση καλείται υποκλάση (subclass) και η κλάση από την οποία κληρονομούνται καλείται υπερκλάση (superclass).
  • Η ιδέα είναι, να υπάρχει μια γενική κλάση (υπερκλάση), με κάποια χαρακτηριστικά και λειτουργίες, από την οποία μπορούμε να ορίσουμε εξειδικευμένες παραλλαγές της (υποκλάσεις).
  • Στον αντικειμενοστρεφή προγραμματισμό η επέκταση των κλάσεων σε πιο εξειδικευμένες κλάσεις είναι γνωστή ως κληρονομικότητα.
Σχήμα: Διάγραμμα Ιεραρχίας Κλάσεων (Υπερκλάση - Υποκλάσεις)

 

 

💪🏻Δραστηριότητα 🧩

 

 

💪🏻Δραστηριότητα ✏️

Γράψτε στο τετράδιό σας το διάγραμμα ιεραρχίας κλάσεων που αντιστοιχεί για τις κλάσεις Ζώο (υπερκλάση), Ερπετό (υποκλάση), Πτηνό (υποκλάση).

 

 

💪🏻Δραστηριότητα 🧩

 

 

⚙️🧠Άσκηση

Περιγραφή σεναρίου: ένας βάτραχος κινείται μέσα στο πλέγμα του Κόσμου FrogWorld και προσπαθεί να φάει όσες περισσότερες μύγες μπορεί, από αυτές που πιθανόν υπάρχουν μέσα σε αυτό.

1️⃣Ανοίγουμε το περιβάλλον Greenfoot και δημιουργούμε ένα νέο σενάριο πατώντας με το ποντίκι στο μενού Σενάριο και επιλέγοντας Νέο. Στην οθόνη που εμφανίζεται δίνουμε στο όνομα φακέλου τη λέξη FrogEatFlies (ο τίτλος του σεναρίου μας) και πατάμε το κουμπί Δημιουργία.

Εικόνα: Δημιουργία νέου σεναρίου στο Greenfoot

 

2️⃣Για να δημιουργήσουμε το νέο Κόσμο κάνουμε με το ποντίκι δεξί κλικ πάνω στο εικονίδιο World. Από το μενού που εμφανίζεται επιλέγουμε το πεδίο Νέα υποκλάση και την ονομάζουμε FrogWorld, με εικόνα background: cell.jpg

Εικόνα: (α) Δημιουργία υποκλάσης - (β) Νέο όνομα κλάσης

 

3️⃣Οι αλλαγές που πραγματοποιήσαμε θα εμφανισθούν στο περιβάλλον του Greenfoot αφού πρώτα μεταγλωττίσουμε το πρόγραμμά μας, πατώντας το κουμπί Mεταγλώττιση όλων.

 

4️⃣Το επόμενο βήμα είναι να δημιουργήσουμε τις κλάσεις για τα αντικείμενα που θα μας χρειαστούν στο σενάριο μας, δηλαδή το βάτραχο και τη μύγα. Μια καλή σχεδίαση του Κόσμου είναι να δημιουργήσουμε μια υποκλάση της Actor, την κλάση Animal (ζώα) και δύο υποκλάσεις της, τη Frog και Fly. Η κλάση Animal δεν θα έχει κάποια εικόνα, ενώ στις κλάσεις Frog και Fly θα δώσουμε τις εικόνες frog.png και fly.png αντίστοιχα, που θα τις βρούμε μέσα στην κατηγορία εικόνων «animals».

Εικόνα: Οι νέες κλάσεις Frog και Fly

 

5️⃣Η δημιουργία των αντικειμένων γίνεται με δεξί κλικ πάνω στην αντίστοιχη κλάση και στη συνέχεια επιλογή της ενέργειας new Frog(), new Fly() αντίστοιχα (Εικόνα 1.5.7). Τα αντικείμενα που δημιουργούνται μπορούμε να τα σύρουμε με το ποντίκι σε όποιο σημείο της επιφάνειας εργασίας (του Κόσμου) θέλουμε. Με αυτό τον τρόπο μπορούμε να δημιουργήσουμε, σε κάθε κλάση, όσα αντικείμενα επιθυμούμε.

Εικόνα: Δημιουργία αντικειμένων κλάσης

 

 


 

 

1.6. Ιδιότητες Αντικειμένων (attributes)

Όπως αναφέραμε παραπάνω, τα αντικείμενα στον προγραμματισμό έχουν διάφορα χαρακτηριστικά και συμπεριφορές, όπως έχουν και τα αντικείμενα στον πραγματικό κόσμο. 

Τα χαρακτηριστικά, που συχνά λέγονται και ιδιότητες (attributes), αποθηκεύουν πληροφορίες για τα αντικείμενα.

 

Εικονα: Παράδειγμα Κλάσης και Αντικειμένων (Καλαθοσφαιριστής)

 

 

⚙️🧠Άσκηση

Δείτε τις ιδιότητες των αντικειμένων αυτών κάνοντας δεξί κλικ επάνω τους και επιλέγοντας από το μενού που εμφανίζεται το Επιθεώρηση. Η επιλογή αυτή μας δείχνει όλες τις πληροφορίες για τις μεταβλητές που συνθέτουν το αντικείμενο.

Π.χ. το αντικείμενο frog ή fly του προηγούμενου παραδείγματος στο περιβάλλον Greenfoot

Εικόνα: Επιθεώρηση ιδιοτήτων αντικειμένου

 

 


 

 

1.7. Ανάπτυξη απλών προγραμμάτων

Δομή Κώδικα στην Java

 

 

⚙️🧠Άσκηση

Δημιουργήστε το παρακάτω κόσμο (world) και επεξεργαστείτε το κώδικα κατάλληλα όπως δείχνουν οι εικόνες παρακάτω ώστε όταν ένα αντικείμενο βάτραχος (frog) αγγίζει ένα αντικείμενο μύγας (fly) τότε η μύγα εξαφανίζεται.