Σεμινάριο για τον τομέα Πληροφορικής της ΤΕΕ



Σχετικά έγγραφα
Ένα Σενάριο ιδασκαλίας των Βασικών Εννοιών- Αρχών του Αντικειµενοστρεφούς Προγραµµατισµού

Διδακτική Προσέγγιση για τον Αντικειμενοστρεφή Προγραμματισμό: εφαρμογή στο BlueJ

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

Αντικειμενοστρεφής Προγραμματισμός

Μελέτη των Δυσκολιών των Φοιτητών για την Έννοια του «Αντικειμένου» στον Αντικειμενοστραφή Προγραμματισμό

2.1 Αντικειµενοστρεφής προγραµµατισµός

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

Διαγράμματα Κλάσεων στη Σχεδίαση

3 Αλληλεπίδραση Αντικειμένων

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Σχεδίαση Εκπαιδευτικού Λογισμικού. Εργασία 2 - Α' φάση. Σενάριο/Σχέδιο μαθήματος. Σταματία Κορρέ Μ1430

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Εφαρμογή Μεθοδολογίας ICONIX

Tynker: Γρήγορος οδηγός για εκπαιδευτικούς

ΕΚΠΑΙΔΕΥΤΙΚΟ ΣΕΝΑΡΙΟ.

Υποδείγματα Ανάπτυξης

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

ΕΡΓΟ: «ΑΝΑΠΤΥΞΗ ΜΕΤΑΠΤΥΧΙΑΚΟΥ ΕΚΠΑΙ ΕΥΤΙΚΟΥ ΥΛΙΚΟΥ ΓΙΑ ΕΠΙΜΟΡΦΩΤΕΣ ΤΕΧΝΟΛΟΓΙΩΝ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΚΑΙ ΤΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ (ΤΠΕ) ΣΤΗΝ ΤΕΧΝΙΚΗ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΙ

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

ΤΟΜΕΑΣ HΛΕΚΤΡΟΝΙΚΗΣ. Επαγγελματικό λογισμικό στην ΤΕΕ: Επιμόρφωση και Εφαρμογή ΣΕΜΙΝΑΡΙΟ 1

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Σενάριο Χρήσης myschool

ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ 1. ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦ.

Κλάσεις και Αντικείµενα

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Εισαγωγή στον προγραμματισμό

Η έννοια της μεταβλητής και της λίστας με την βοήθεια του λογισμικού Scratch

ΠΛΗΡΟΦΟΡΙΚΗ Γ ΤΑΞΗΣ ΓΕΛ ΚΛΕΙΩ ΣΓΟΥΡΟΠΟΥΛΟΥ. ΣΥΓΧΡΟΝΑ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ Αντικειμενοστραφής Προγραμματισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΠΑΙΔΑΓΩΓΙΚΟ ΤΜΗΜΑ ΔΗΜΟΤΙΚΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΦΛΩΡΙΝΑ

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗ, Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ

Το μάθημα Διδακτική Μαθημάτων Ειδικότητας φέρνει τους φοιτητές σε επαφή με τα επιστημονικά, επιστημολογικά και διδακτικά χαρακτηριστικά της κάθε

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Οδηγός καταχώρισης σχεδίου δράσης σχολείου στην Ηλεκτρονική Πύλη Επαγγελματικής Μάθησης

Τα Διδακτικά Σενάρια και οι Προδιαγραφές τους. του Σταύρου Κοκκαλίδη. Μαθηματικού

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2520

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΔΙΔΑΣΚΑΛΙΑ ΤΗΣ ΕΝΝΟΙΑΣ ΤΟΥ ΟΡΙΟΥ ΣΥΝΑΡΤΗΣΗΣ

ΕΝΟΤΗΤΑ ΣΕΝΑΡΙΟΥ 9 ΔΟΜΕΣΕΠΙΛΟΓΗΣΣΤΟ SCRATCH

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

Ενότητα 13: Διδασκαλία Οντοκεντρικού Προγραμματισμού. Διδάσκων: Βασίλης Κόμης, Καθηγητής

Προγραμματιστικές τεχνικές

Μαλούτα Θεανώ Σελίδα 1

Οδηγός καταχώρισης στοιχείων στην Ηλεκτρονική Πύλη Επαγγελματικής Μάθησης

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ

Δημιουργία μιας εφαρμογής Java με το NetBeans

Εγχειρίδιο χρήσης 1η Έκδοση Ιανουάριος 2014 Δράση 1 - «Επιστημονική υποστήριξη, Διοίκηση, Οργάνωση και Συντονισμός της Πράξης»

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Πληροφορική Γυμνασίου. Δρ. Κοτίνη Ισαβέλλα Σχ. Σύμβουλος Πληροφορικής Πέλλας, Ημαθίας και Πιερίας

Ελέγξτε την ταινία σας

ΤΟΜΕΑΣ HΛΕΚΤΡΟΝΙΚΗΣ. Επαγγελματικό λογισμικό στην ΤΕΕ: Επιμόρφωση και Εφαρμογή ΣΕΜΙΝΑΡΙΟ 2

Αντικειμενοστραφής Προγραμματισμός

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Η γλώσσα προγραμματισμού C

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών

Η διάρκεια πραγματοποίησης της ανοιχτής εκπαιδευτικής πρακτικής ήταν 2 διδακτικές ώρες

Προγραμματιστικό Περιβάλλον

Ειδικά Θέματα Προγραμματισμού

Γνωστικοί στόχοι: Μετά το τέλος της πρακτικής, οι μαθητές πρέπει να μπορούν να:

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εισαγωγή στο περιβάλλον Code::Blocks

Γνωρίστε το Excel 2007

Αντικειμενοστρεφής Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

Αντικειμενοστραφής Προγραμματισμός

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Αγορά Πληροφορικής. Προϊόντα και Υπηρεσίες.

ΕΡΓΑΣΙΕΣ ΟΝΤΟΚΕΝΤΡΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Γρήγορη Εκκίνηση. Όταν ξεκινήσετε το GeoGebra, εμφανίζεται το παρακάτω παράθυρο:

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Ανάπτυξη και εικαστικός Σχεδιασμός Ιστοτόπων

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου

Αντικειμενοστρεφής Προγραμματισμός

Περιγραφή του εκπαιδευτικού/ μαθησιακού υλικού (Teaching plan)

Δημιουργία η-μαθήματος με τη. 3 ο Μέρος Εισαγωγή πληροφοριών: δημιουργία ιστοσελίδας

Τo πρόγραμμα «Διάγραμμα Ροής» και η διδακτική του αξιοποίηση στην Διδασκαλία του προγραμματισμού

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Αντικειμενοστραφής Προγραμματισμός

Εισαγωγή στη δομή επιλογής στο προγραμματιστικό περιβάλλον SCRATCH.

ΕΦΑΡΜΟΓΗ ΔΙΑΧΕΙΡΙΣΗΣ ΕΝΙΣΧΥΤΙΚΗΣ ΔΙΔΑΣΚΑΛΙΑΣ (ΕΚΔΟΣΗ 2.0 ΣΕΠΤΕΜΒΡΙΟΣ 2016) ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

Μέρος B: Εισαγωγή στις έννοιες παιδαγωγικής αξιοποίησης των ΤΠΕ με εφαρμογή στη διδακτική της Πληροφορικής Οργάνωση και Σχεδίαση Μαθήματος

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

Ξεκινώντας τον Προγραµµατισµό στις τάξεις του ηµοτικού Παίζοντας µε το Scratch

Στάδια επίλυσης προβλήματος -Εφαρμογή στη Δομή της Επανάληψης

Αναπαραγωγή με αρχεία ήχου

Transcript:

Σεμινάριο για τον τομέα Πληροφορικής της ΤΕΕ Θέμα: Διδασκαλία των βασικών εννοιών του Αντικειμενοστρεφούς Προγραμματισμού με τη χρήση της γλώσσας Java και του εκπαιδευτικού περιβάλλοντος BlueJ

1. Γενικά Στόχος του εκπαιδευτικού αυτού σεμιναρίου είναι η εισαγωγή στις βασικές έννοιες της αντικειμενοστρεφούς φιλοσοφίας προγραμματισμού: κλάση, αντικείμενο, ιδιότητες, μέθοδος, μέθοδος κατασκευαστή, υπερφόρτωση μεθόδων, κληρονομικότητα, πολυμορφισμός, αφηρημένες κλάσεις-μέθοδοι, κελυφοποίηση, διαπροσωπεία κλάσης, καθώς το σεμινάριο εστιάζεται σε αυθεντικές καταστάσεις του πραγματικού κόσμου με πρόσωπα, που επιτελούν ρόλους και έχουν συγκεκριμένες αρμοδιότητες. Στο σεμινάριο θα χρησιμοποιηθεί η γλώσσα προγραμματισμού Java και το εκπαιδευτικό περιβάλλον BlueJ. 2. Ένταξη Σεμιναρίου στο Αναλυτικό Πρόγραμμα Σπουδών Τάξη: - Τομέας: - Ειδικότητα: Πληροφορικής Μάθημα: - Διδακτική ενότητα: - Διδακτικές ώρες: 36 3. Περιγραφή εκπαιδευτικού σεναρίου Το σεμινάριο θα περιλαμβάνει ένα ολοκληρωμένο σενάριο σκοπός του οποίου είναι η σχεδίαση και υλοποίηση ενός προγράμματος προσομοίωσης μιας αυθεντικής κατάστασης η οποία παρουσιάζεται αρχικά στους εκπαιδευόμενους. Το σενάριο αποτελείται από μια σειρά από δραστηριότητες οι οποίες περιγράφονται αναλυτικά στη συνέχεια. 4. Διδακτικοί Στόχοι Ως αποτέλεσμα της εκπαιδευτικής διαδικασίας ο εκπαιδευόμενος αναμένεται: Να γνωρίζει έννοιες του αντικειμενοστρεφούς προγραμματιστικού υποδείγματος: κλάση, αντικείμενο, ιδιότητες, μέθοδος, μέθοδος κατασκευαστή, υπερφόρτωση μεθόδων, κληρονομικότητα, πολυμορφισμός, αφηρημένες κλάσεις-μέθοδοι, κελυφοποίηση, διαπροσωπεία κλάσης Να είναι σε θέση να παράγει ένα αντικειμενοστρεφές σχέδιο για ένα ρεαλιστικό πεδίο εφαρμογής Με βάση το αντικειμενοστρεφές σχέδιο να δημιουργεί ένα πρόγραμμα στη γλώσσα Java χρησιμοποιώντας το περιβάλλον BlueJ Να λύνει ανάλογης φύσης προβλήματα μεταφέροντας τη γνώση που αποκόμισε Να γνωρίζει άλλα εκπαιδευτικά περιβάλλοντα για την εκμάθηση του αντικειμενοστρεφούς προγραμματισμού. 5. Περιγραφή Δραστηριοτήτων Στους εκπαιδευόμενους παρουσιάζεται αρχικά βίντεο το οποίο παρακολουθούν και δείχνει μια κατάσταση από τον πραγματικό κόσμο με πρόσωπα που επιτελούν λειτουργίες και αλληλεπιδρούν μεταξύ τους. Εναλλακτικά, δίνεται στους

εκπαιδευόμενους να διαβάσουν ένα κείμενο το οποίο περιγράφει μια αυθεντική κατάσταση από τον πραγματικό κόσμο. Οι εκπαιδευόμενοι καλούνται να εντοπίσουν τις οντότητες (κλάσεις) που υπάρχουν σε μια αυθεντική κατάσταση η οποία αφορά σε μια αγορά προϊόντων, να τις αναλύσουν ως προς τις ιδιότητες που τις χαρακτηρίζουν μέσα στο συγκεκριμένο αυθεντικό παράδειγμα, ως προς τις λειτουργίες που επιτελούν. Στη συνέχεια οι εκπαιδευόμενοι σχεδιάζουν το μοντέλο κλάσεων αντικειμένων στο προγραμματιστικό περιβάλλον BlueJ, με την υποστήριξη του εκπαιδευτή. Έχοντας λάβει υπόψη το αυθεντικό παράδειγμα, οι λειτουργίες που επιτελούνται από τα αντικείμενα πρέπει να ανάγονται σε απλές μαθηματικές πράξεις και οι εκπαιδευόμενοι να συμπληρώνουν τη λειτουργικότητα των κλάσεων (κώδικας των μεθόδων τους) στο περιβάλλον BlueJ με απλές εντολές πρόσθεσης, αφαίρεσης, πολλαπλασιασμού με την βοήθεια του εκπαιδευτή. Στη συνέχεια ο εκπαιδευτής παρουσιάζει πώς μπορούν οι εκπαιδευόμενοι στο περιβάλλον BlueJ, να δημιουργήσουν αντικείμενα από τις κλάσεις τις οποίες σχεδίασαν και των οποίων τη λειτουργικότητα όρισαν μέσω μεθόδων και πώς μπορούν να παράγουν αλληλεπιδράσεις μεταξύ των αντικειμένων ώστε να υλοποιηθεί η λειτουργικότητα του προγράμματος που προσομοιώνει την αυθεντική κατάσταση του παραδείγματος. Μετά από αυτό, οι εκπαιδευόμενοι καλούνται να εκτελέσουν το σενάριο του αυθεντικού παραδείγματος που διάβασαν στην αφηγηματική περιγραφή. Στη διαδικασία εκτέλεσης του σεναρίου, αναδύεται η ανάγκη αναφοράς σε έννοιες, όπως κατασκευαστής, κελυφοποίηση, αφηρημένες κλάσεις-μέθοδοι, κληρονομικότητα, πολυμορφισμός. Το εκπαιδευτικό σενάριο αποτελείται από επτά δραστηριότητες. Αρ Διάρκεια (ώρες) Θέμα 1 2 Aνάλυση μιας αυθεντικής κατάστασης 2 6 Σχεδίαση κλάσεων στο BlueJ 3 3 Εύρεση ιδιοτήτων και λειτουργιών των κλάσεων 4 12 Συγγραφή κώδικα κλάσεων 5 7 Εκτέλεση προγράμματος 6 4 Ζητήματα αντικειμενοστρεφούς σχεδίασης 7 2 Η διδασκαλία του αντικειμενοστρεφούς προγραμματισμού Κάθε δραστηριότητα του εκπαιδευτικού σεναρίου πραγματοποιείται ύστερα από την ολοκλήρωση της αμέσως προηγούμενης. 6. Περιγραφή ρόλων συμμετεχόντων Στην πραγματοποίηση των δραστηριοτήτων επιμορφωτής και εκπαιδευόμενοι έχουν συγκεκριμένους ρόλους: Ρόλος Εκπαιδευτή Ο εκπαιδευτής παρουσιάζει στους εκπαιδευόμενους την κατάσταση μιας αγοράς με πρόσωπα που επιτελούν λειτουργίες και αλληλεπιδρούν μεταξύ τους. Επιπλέον, ο εκπαιδευτής καθορίζει τη σύνθεση των ομάδων. Κάθε ομάδα αποτελείται από δύο εκπαιδευόμενους.

Περιορισμοί: Σε όλη τη διάρκεια του σεμιναρίου, ο εκπαιδευτής φροντίζει να οριστούν ομάδες ίδιας δυναμικότητας, να ενθαρρύνει την επικοινωνία μεταξύ των μελών της ομάδας και να συλλέγει στοιχεία για την αξιολόγηση των ομάδων και των μαθητών ξεχωριστά. Ρόλος Μαθητή Οι εκπαιδευόμενοι χωρίζονται σε ομάδες των δύο ατόμων. Κάθε ομάδα θα σχεδιάσει και θα υλοποιήσει το έργο στο περιβάλλον BlueJ ανεξάρτητα από την άλλη. Ρόλος μελών κάθε ομάδας Ένα μέλος της ομάδας παίζει το ρόλο του σχεδιαστή ή προγραμματιστή κάθε φορά. Το άλλο μέλος επιθεωρεί τη σχεδίαση και την ανάπτυξη, παρεμβαίνοντας διαρκώς με παρατηρήσεις και διορθώσεις. Τα μέλη της ομάδας συζητούν συνεχώς για τις σχεδιαστικές και άλλες αποφάσεις που πρόκειται να λάβουν, αναλύοντας τα υπέρ και τα κατά της κάθε μιας και αποφασίζοντας από κοινού. Οι εκπαιδευόμενοι εναλλάσσονται τακτικά στους ρόλους τους. Έτσι, για παράδειγμα, εναλλάσσονται μετά από τη σχεδίαση κάθε κλάσης ή μετά από κάθε εκτέλεση του προγράμματος που έχουν δημιουργήσει. Περιορισμοί: Ο εκπαιδευόμενος που παίζει κάθε φορά το ρόλο του σχεδιαστή/προγραμματιστή έχει αυξημένες αρμοδιότητες ώστε να μπορεί να δώσει λύσεις σε τυχόν προβλήματα που προκύπτουν μέσα στην ομάδα. 7. Απαραίτητοι Τεχνολογικοί Πόροι Εργαστηριακοί χώροι Το εκπαιδευτικό σενάριο πρέπει να πραγματοποιηθεί σε εργαστηριακό χώρο στον οποίο θα υπάρχει επαρκής αριθμός υπολογιστών, αναλόγως του αριθμού των συμμετεχόντων/εκπαιδευόμενων (2 εκπαιδευόμενοι ανά υπολογιστή). Διαδικτυακή υποδομή Το εργαστήριο πληροφορικής του σχολείου. Υλικό (Hardware) Υπολογιστές εργαστηρίου και προαιρετικά χρήση βίντεο. Λογισμικά Εργαλεία (Software) Στο σενάριο χρησιμοποιείται το εκπαιδευτικό προγραμματιστικό περιβάλλον BlueJ. Προϋπόθεση αποτελεί κατά πρώτο λόγο η εγκατάσταση του Java2 SDK και κατά δεύτερο λόγο του Java2 SDK Documentation.

8. Δραστηριότητες Δραστηριότητα 1η: Aνάλυση μιας αυθεντικής κατάστασης Διδακτικοί Στόχοι Μετά το τέλος της ενότητας οι εκπαιδευόμενοι αναμένεται να αναγνωρίζουν τις οντότητες ενός συγκεκριμένου πεδίου εφαρμογής και τις σχέσεις τους. Ο εκπαιδευτής κάνει μια εισαγωγή στη δραστηριότητα, αποσαφηνίζοντας τους διδακτικούς της στόχους και εξηγώντας το πρόβλημα. Δίνονται στους εκπαιδευόμενους γραπτές οδηγίες, στις οποίες αναλύεται ο ρόλος του κάθε εκπαιδευόμενου καθώς και ο γενικότερος σκοπός της δραστηριότητας. Παρουσίαση του προβλήματος Ανάγνωση αφηγηματικής περιγραφής ή παρουσίαση βίντεο Όπως αναφέρθηκε προηγουμένως, το πρόβλημα αφορά στη σχεδίαση και την υλοποίηση ενός προγράμματος σε Java το οποίο αποτελεί μια αντικειμενοστρεφή προσομοίωση μιας αυθεντικής κατάστασης η οποία αφορά σε μια αγορά προϊόντων. Η αυθεντική αυτή κατάσταση παρουσιάζεται στους εκπαιδευόμενους με τη χρήση βίντεο ή μέσω μιας γραπτής λεκτικής περιγραφής. Η περιγραφή αυτή δίνεται στη συνέχεια: Σε μια αγορά κινούνται οι αγοραστές και υπάρχουν οι πωλητές με τα προϊόντα τους. Οι αγοραστές έχουν ένα καλάθι στο οποίο τοποθετούν τα προϊόντα που αγοράζουν και το πορτοφόλι από το οποίο πληρώνουν ό,τι αγοράσουν. Αντίστοιχα οι πωλητές έχουν το «ταμείο» τους με τα χρήματα που εισπράττουν από τις πωλήσεις. Οι αγοραστές διαλέγουν προϊόντα, τα οποία ζυγίζονται, υπολογίζεται η αξία τους, πληρώνουν το ποσό στον πωλητή ο οποίος το εισπράττει και το βάζει στο «ταμείο» του και τοποθετούν τα προϊόντα που αγόρασαν στο καλάθι τους. Τα προϊόντα που υπάρχουν στην αγορά είναι δύο κατηγοριών: τα πρώτης ποιότητας, τα οποία πωλούνται στην κανονική τους τιμή, και τα δεύτερης ποιότητας, τα οποία πωλούνται με έκπτωση. Αρχικός εντοπισμός οντοτήτων Ο εκπαιδευτής εξηγεί τι πρέπει να κάνουν οι εκπαιδευόμενοι και αυτοί στη συνέχεια καλούνται να αναγνωρίσουν στο αυθεντικό παράδειγμα όλες τις οντότητες. Οδηγίες προς τους εκπαιδευόμενους Κάντε μια λίστα των βασικών οντοτήτων που παρατηρείτε στην αυθεντική κατάσταση. Προσδοκώμενο αποτέλεσμα Οι οντότητες που προκύπτουν μετά από αυτή τη δραστηριότητα είναι: Αγοραστής (Customer) Προϊόν (Product) Προϊόν Πρώτης Ποιότητας (FirstClassProduct) Προϊόν Δεύτερης Ποιότητας (SecondClassProduct) Καλάθι (Basket) Πωλητής (Seller)

Περιγραφή των οντοτήτων Οι εκπαιδευόμενοι συζητούν τις οντότητες που εντόπισαν στην προηγούμενη δραστηριότητα, προσδιορίζοντας τα χαρακτηριστικά και τις λειτουργίες κάθεμιας από αυτές. Οδηγίες προς τους εκπαιδευόμενους Περιγράψτε τις λειτουργίες που εκτελεί κάθε οντότητα. Προσπαθήστε να εντοπίσετε τις ουσιαστικές λειτουργίες που έχουν σχέση με την αυθεντική κατάσταση που ζητείται να προσομοιωθεί. Έτσι, η λειτουργία του αγοραστή «περπατάει στην αγορά» δεν ενδιαφέρει. Σκεφθείτε ποια χαρακτηριστικά, τα οποία έχουν σημασία για τη συγκεκριμένη αυθεντική κατάσταση, καθορίζουν την κατάσταση των οντοτήτων κάθε στιγμή. Σημειώστε ότι αποτέλεσμα αυτής της ανάλυσης είναι η εύρεση των χαρακτηριστικών μιας οντότητας αλλά και ο εντοπισμός σχέσεων μεταξύ οντοτήτων. Σκεφθείτε αν είναι δυνατόν να υπάρχουν περισσότεροι από ένας εκπρόσωποι μιας οντότητας, για παράδειγμα πολλά διαφορετικά προϊόντα. Επιβεβαιώστε ότι καλύπτονται όλες οι απαιτήσεις του προβλήματος που περιγράφηκε, από τις οντότητες (κλάσεις) και τις λειτουργίες τις οποίες τους αποδώσατε. Προσδοκώμενο αποτέλεσμα Το αποτέλεσμα αυτής της δραστηριότητας είναι μια λεκτική περιγραφή για κάθε οντότητα, όπως φαίνεται στη συνέχεια: Ο αγοραστής έχει ένα καλάθι και ένα πορτοφόλι. Διαλέγει προϊόντα, τα ζυγίζει ο πωλητής, πληρώνει την αξία που θα υπολογίσει ο πωλητής και βάζει αυτό που αγόρασε στο καλάθι του. Ο αγοραστής ζητά εξυπηρέτηση από τον πωλητή. Το προϊόν χαρακτηρίζεται από το όνομά του και την τιμή του. Το προϊόν πρώτης ποιότητας χαρακτηρίζεται από το όνομά του και την τιμή του που είναι ίδια με την τιμή της οντότητας προϊόν. Το προϊόν δεύτερης ποιότητας χαρακτηρίζεται από το όνομά του, το ποσοστό έκπτωσης στην τιμή του και την τιμή του που υπολογίζεται από την τιμή της οντότητας προϊόν και το ποσοστό έκπτωσης της τιμής του. Το καλάθι έχει προϊόντα και τοποθετούνται σε αυτό τα προϊόντα που αγοράζονται. Ο πωλητής έχει το ταμείο του, ζυγίζει τα προϊόντα, υπολογίζει την αξία τους και εισπράττει το ποσό της αξίας τους από τους αγοραστές το οποίο βάζει στο ταμείο του.

Δραστηριότητα 2η: Σχεδίαση κλάσεων στο BlueJ Διδακτικοί Στόχοι Μετά το τέλος της ενότητας οι εκπαιδευόμενοι αναμένεται: Να δημιουργούν έργα στο BlueJ Να δημιουργούν και να διαγράφουν κλάσεις στο BlueJ Να δημιουργούν και να διαχειρίζονται αφηρημένες κλάσεις στο BlueJ Να ορίζουν σχέσεις κληρονομικότητας μεταξύ κλάσεων στο ΒluleJ Οι οντότητες που εντοπίστηκαν στην προηγούμενη ενότητα πρόκειται να αποτυπωθούν σε ένα σχέδιο ενός προγράμματος με τη χρήση του περιβάλλοντος BlueJ ως κλάσεις. Για την έναρξη του προγράμματος BlueJ εκτελέστε το πρόγραμμα bluej.exe το οποίο βρίσκεται στον κατάλογο εγκατάστασης του BlueJ. Η δημιουργία ενός έργου στο BlueJ παρουσιάζεται στην επόμενη παράγραφο. Δημιουργία έργου στο BlueJ Επιλέξτε Project -> New Project από το μενού του BlueJ. Στο πλαίσιο διαλόγου που εμφανίζεται δώστε το όνομα του έργου, στην προκειμένη περίπτωση market και κάντε κλικ στο κουμπί Create. Εικόνα 2-1. Δημιουργία έργου στο BlueJ Δημιουργία και διαγραφή κλάσεων στο BlueJ Δημιουργήστε στο BlueJ μια κλάση για κάθε οντότητα του προβλήματος, όπως αυτή ορίστηκε στο προηγούμενο βήμα. Η δημιουργία μιας κλάσης γίνεται κάνοντας κλικ στο κουμπί New Class αριστερά στην επιφάνεια εργασίας του BlueJ. Εμφανίζεται ένα πλαίσιο διαλόγου, όπως φαίνεται στην Εικόνα 2-1, στο οποίο εισάγετε το όνομα της κλάσης.

Εικόνα 2-1. Δημιουργία κλάσης στο BlueJ Στην Εικόνα 2-1 παρουσιάζεται η δημιουργία της κλάσης Customer. Μετά την εισαγωγή της η κλάση εμφανίζεται στην κεντρική περιοχή της επιφάνειας του BlueJ η οποία περιέχει το διάγραμμα κλάσεων, όπως φαίνεται στην Εικόνα 2-2. Κατά τη διαδικασία της σχεδίασης είναι πιθανό να χρειαστεί να διαγράψετε κάποια κλάση. Για τη διαγραφή μιας κλάσης κάντε δεξί κλικ στο εικονίδιο της κλάσης στο διάγραμμα κλάσεων και στη συνέχεια στο πτυσσόμενο (pop-up) μενού που εμφανίζεται επιλέξτε Remove. Εικόνα 2-2. Κλάση στο BlueJ Δημιουργία αφηρημένων κλάσεων Για τη δημιουργία αφηρημένης κλάσης κάντε κλικ στο κουμπί New Class και στη συνέχεια επιλέξτε τον τύπο Abstract class όπως φαίνεται στην Εικόνα 2-3.

Εικόνα 2-3. Εισαγωγή αφηρημένης κλάσης Η αφηρημένη κλάση Product εμφανίζεται στο διάγραμμα κλάσεων με τον προσδιοριστή <<abstract>>, όπως φαίνεται στην Εικόνα 2-4. Εικόνα 2-4. Εμφάνιση αφηρημένης κλάσης Ορισμός σχέσεων κληρονομικότητας Οι κλάσεις FirstQualityProduct και SecondQualityProduct είναι υποκλάσεις της Product, δηλαδή κληρονομούν από αυτή. Για τον ορισμό σχέσεων κληρονομικότητας κάντε κλικ στο κουμπί με το βέλος της κληρονομικότητας (η συνεχής γραμμή με το τρίγωνο στο άκρο) και συνδέστε τις κλάσεις με τέτοιο τρόπο ώστε το τρίγωνο να βρίσκεται στην άκρη, να πρόσκειται στην κλάση η οποία κληρονομείται, όπως φαίνεται στην Εικόνα 2-5.

Εικόνα 2-5. Σχέση κληρονομικότητας στο διάγραμμα κλάσεων Σημείωση: Οι έννοιες αφηρημένη (abstract) κλάση και αφηρημένη μέθοδος καλό είναι να αγνοηθούν σε αυτό το σημείο και να εισαχθούν αργότερα από τον εκπαιδευτή. Συγκεκριμένα, η κλάση Product δεν θα δηλωθεί abstract σε αυτήν τη φάση, αλλά αργότερα κατά τη διόρθωση του κώδικα της κλάσης.

Δραστηριότητα 3η: Εύρεση ιδιοτήτων και λειτουργιών των κλάσεων Διδακτικοί Στόχοι Μετά το τέλος της ενότητας οι εκπαιδευόμενοι αναμένεται: Να εντοπίζουν τις ιδιότητες των κλάσεων που σχεδιάζουν. Να εντοπίζουν τις λειτουργίες των κλάσεων που σχεδιάζουν. Αποφασίστε για τις ιδιότητες και λειτουργίες των οντοτήτων που έχετε εντοπίσει στις προηγούμενες ενότητες. Αυτές οι ιδιότητες και λειτουργίες θα αποτυπωθούν ως πεδία και μέθοδοι, αντίστοιχα, των κλάσεων που έχετε δημιουργήσει. Προσδοκώμενο Αποτέλεσμα Οντότητα (κλάση) Αγοραστής (Customer) Ιδιότητες (πεδία) καλάθι του τύπου Καλάθι (Basket) ποσό στο πορτοφόλι του τύπου πραγματικός αριθμός Λειτουργίες (μέθοδοι) Πληρώνει την αξία ενός προϊόντος που θα υπολογίσει ο πωλητής. Η αξία είναι δεδομένο ποσό (amount) το οποίο αφαιρείται από το πορτοφόλι του αγοραστή. Υπογραφή της μεθόδου: void pay (double amount) Οντότητα Προϊόν (Product) Ιδιότητες όνομα του τύπου σειρά χαρακτήρων τιμή του τύπου πραγματικός αριθμός Οντότητα Προϊόν Πρώτης Ποιότητας (FirstQualityProduct) Ιδιότητες όνομα του τύπου σειρά χαρακτήρων τιμή του τύπου πραγματικός αριθμός Οντότητα Προϊόν Δεύτερης Ποιότητας (SecondQualityProduct) Ιδιότητες όνομα του τύπου σειρά χαρακτήρων τιμή του τύπου πραγματικός αριθμός ποσοστό έκπτωσης στην τιμή του τύπου πραγματικός αριθμός Λειτουργίες (μέθοδοι) Υπολογισμός της τιμής πώλησης του προϊόντος. Η επιστρεφόμενη τιμή υπολογίζεται με βάση την τιμή του προϊόντος και την έκπτωση σύμφωνα με τον τύπο: <τιμή πώλησης> = <τιμή> * (1 (<ποσοστό έκπτωσης> / 100)) Υπογραφή μεθόδου: double saleprice() Οντότητα Καλάθι (Basket) Ιδιότητες προϊόντα του τύπου Προϊόν (πίνακας της κλάσης java.util.vector με στοιχεία του τύπου προϊόν)

Λειτουργίες (μέθοδοι) Τοποθέτηση ενός συγκεκριμένου προϊόντος στο καλάθι. Χρειάζεται να προσδιοριστεί το προϊόν το οποίο αγοράστηκε και η καθαυτό λειτουργία είναι να προστεθεί στον πίνακα το προϊόν αυτό. Υπογραφή μεθόδου: void addproduct(product aproduct) Οντότητα Πωλητής (Seller) Ιδιότητες ποσό στο ταμείο του τύπου πραγματικός αριθμός Λειτουργίες (μέθοδοι) Ζυγίζει τα προϊόντα. Από τη λειτουργία αυτή εξάγεται (επιστρέφεται) το βάρος του προϊόντος, τύπου πραγματικού αριθμού διπλής ακρίβειας (double). Υπογραφή μεθόδου: double weigh(product aproduct) Υπολογίζει την αξία των προϊόντων που αγοράζουν οι πελάτες. Χρειάζεται να προσδιοριστεί το προϊόν το οποίο αγοράστηκε και η ποσότητα του. Η καθαυτό λειτουργία είναι να πολλαπλασιαστεί η τιμή του προϊόντος, η οποία θα αποκτηθεί με προσπέλαση στην οντότητα προϊόν, επί την ποσότητα και να επιστραφεί το αποτέλεσμα. Υπογραφή μεθόδου: double calculatevalue(product aproduct, double quantity) Εισπράττει χρήματα από τους αγοραστές. Χρειάζεται να προσδιοριστεί το ποσόν και η καθαυτό λειτουργία είναι να προστεθεί το ποσό στο «ταμείο» του πωλητή. Υπογραφή μεθόδου: void receivepayment(double amount) 12

Δραστηριότητα 4η: Συγγραφή κώδικα κλάσεων Διδακτικοί Στόχοι Μετά το τέλος της ενότητας οι εκπαιδευόμενοι αναμένεται: Να χρησιμοποιούν το διορθωτή κλάσεων του BlueJ για να διορθώνουν τον κώδικα μιας κλάσης. Να ορίζουν πεδία κλάσεων. Να ορίζουν μεθόδους κλάσεων. Να ορίζουν μεθόδους κατασκευαστών κλάσεων. Να μεταγλωττίζουν μεμονωμένες κλάσεις. Να μεταγλωττίζουν όλες τις κλάσεις ενός έργου. Να εντοπίζουν και να διορθώνουν σφάλματα μεταγλώττισης με το διορθωτή του BlueJ. Να κατανοούν τη χρήση αφηρημένων κλάσεων και μεθόδων. Για τον ορισμό των πεδίων (fields) και των μεθόδων μιας κλάσης στο BlueJ είναι απαραίτητη η διόρθωση του πηγαίου κώδικα της κλάσης. Ο τρόπος με τον οποίο πραγματοποιείται η διόρθωση περιγράφεται στη συνέχεια. Διόρθωση του κώδικα μιας κλάσης Κατά τον ορισμό μιας κλάσης με το BlueJ δημιουργείται αυτόματα πηγαίος κώδικας για την κλάση. Για την πρόσβαση σε αυτόν τον κώδικα, κάντε διπλό κλικ πάνω στο εικονίδιο της κλάσης στο διάγραμμα κλάσεων. Εμφανίζεται τότε το παράθυρο του διορθωτή κώδικα (Editor) με τον κώδικα της κλάσης, όπως φαίνεται στην Εικόνα. Με τη χρήση του διορθωτή είναι δυνατή η ανάγνωση και διόρθωση του κώδικα των κλάσεων του BlueJ. Το BlueJ υποστηρίζει πλήρως τη γλώσσα Java. Με τη δημιουργία μιας κλάσης δημιουργείται αυτόματα κώδικας που αφορά στη δήλωση και το χειρισμό ενός πεδίου τύπου ακέραιου, όπως φαίνεται στη συνέχεια: private int x; Ο κώδικας αυτός είναι ενδεικτικός και πρέπει να διαγραφεί. Διαγράψτε την παραπάνω δήλωση (γραμμή 11 στον αρχικό κώδικα της κλάσης), την εντολή ανάθεσης x = 0; στη γραμμή 19 του αρχικού κώδικα της κλάσης και τον ορισμό της μεθόδου samplemethod (γραμμές 22 έως 32). Για την εμφάνιση ή απόκρυψη των γραμμών κώδικα στο διορθωτή επιλέξτε Options->Preferences από το μενού του διορθωτή και στη συνέχεια επιλέξτε κάνοντας κλικ στην επιλογή Display line numbers. 13

Εικόνα 4-1. Διορθωτής κώδικα Διορθώστε τον κώδικα μιας κλάσης ορίζοντας πεδία και μεθόδους στη γλώσσα Java. Στο παράρτημα παρατίθενται βιβλιογραφικές αναφορές για την εκμάθηση της γλώσσας. Εικόνα 4-2. Εμφάνιση αρίθμησης γραμμών στο διορθωτή κώδικα Ο κώδικας κάθε κλάσης διορθώνεται ξεχωριστά, όπως φαίνεται στην Εικόνα. Μετά την ενημέρωση του κώδικα μιας κλάσης με χρήση του διορθωτή κώδικα, ενδέχεται να εμφανιστούν σχέσεις εξάρτησης ( Uses ) μεταξύ κλάσεων στο διάγραμμα κλάσεων. Εξάρτηση μεταξύ δυο κλάσεων υπάρχει όταν μια κλάση χρησιμοποιεί 14

κώδικα μιας άλλης κλάσης. Μια σχέση εξάρτησης παριστάνεται στο διάγραμμα κλάσεων με μια διακεκομμένη γραμμή που συνδέει δύο κλάσεις με ένα βέλος στην άκρη της κλάσης από την οποία εξαρτάται προκύπτει η εξάρτηση. Παραδείγματα σχέσεων εξάρτησης παρουσιάζονται στην Εικόνα. Στην ίδια εικόνα, η κλάση Customer έχει ένα πεδίο του τύπου Basket: private Basket mybasket; Έτσι, η κλάση Customer εμφανίζεται στην Εικόνα εξάρτησης με την κλάση Basket. να συνδέεται με μια σχέση Εικόνα 4-3. Εμφάνιση σχέσεων εξάρτησης στο διάγραμμα κλάσεων Ας σημειωθεί ότι η σχέση εξάρτησης είναι δυνατόν να οριστεί και γραφικά, στο διάγραμμα κλάσεων, με τον ίδιο τρόπο με τη σχέση κληρονομικότητας, όπως παρουσιάστηκε προηγουμένως. Ορισμός πεδίων κλάσεων Όπως αναφέρθηκε, τα πεδία ή οι μεταβλητές-μέλη μιας κλάσης αποτυπώνουν την κατάσταση των αντικειμένων αυτής της κλάσης. Ο ορισμός πεδίων στο BlueJ γίνεται με δηλώσεις που εισάγονται στον πηγαίο κώδικα κάθε κλάσης με χρήση του διορθωτή κώδικα. Η ακριβής μορφή της δήλωσης ενός πεδίου περιγράφεται σε εγχειρίδια της γλώσσας, όπως αυτά που παρατίθενται στη βιβλιογραφία. Παράδειγμα ορισμού πεδίων στη γλώσσα Java αποτελεί το παρακάτω: public class Customer { private Basket mybasket; private double walletamount; //... 15

} Στο παράδειγμα, το πεδίο mybasket της κλάσης Customer είναι τύπου Basket, ενώ το πεδίο walletamount είναι τύπου double. Η ορατότητα και των δύο πεδίων ορίζεται ως private. Ορισμός μεθόδων Για την απόδοση λειτουργικότητας στις κλάσεις απαιτείται ο ορισμός μεθόδων οι οποίες υλοποιούν τις διάφορες λειτουργίες των κλάσεων, όπως αυτές προδιαγράφηκαν προηγουμένως. Ενδεικτικά, απαιτείται η υλοποίηση των μεθόδων addproduct, weigh, pay, receivepayment, calculatevalue, saleprice, κ.λπ. Για την υλοποίηση συγκεκριμένων μεθόδων θα χρειασθεί η βοήθεια του εκπαιδευτή για τη συγγραφή των εντολών, και ιδιαίτερα για τις μεθόδους addproduct(product aproduct) όπου υλοποιείται η προσθήκη ενός στοιχείου (element) σε ένα αντικείμενο της κλάσης java.util.vector ως εξής: public void addproduct(product aproduct) { Products.add(aProduct); } και weigh() όπου απαιτείται η προσομοίωση της λειτουργίας ζύγισης με την παραγωγή τυχαίου πραγματικού αριθμού με τη χρήση της μεθόδου random της κλάσης java.lang.math για την παραγωγή τυχαίων αριθμών. Ορισμός κατασκευαστών Πέρα από τη χρήση μεθόδων ανάγνωσης και ανάθεσης τιμής που αναφέρθηκαν παραπάνω, είναι καλό να συζητηθεί το ζήτημα δημιουργίας αντικειμένων με συγκεκριμένες τιμές των πεδίων τους κατά την αρχικοποίηση (π.χ. ποσό στο πορτοφόλι του αγοραστή, τιμή προϊόντος). Ο εκπαιδευτής θα αναφερθεί στην μέθοδο κατασκευαστή (constructor) και οι φοιτητές θα καθορίσουν constructors στις κλάσεις που είναι αναγκαίο (Basket, Costumer, FirstQualityProduct, SecondQualityProduct), με συγκεκριμένες παραμέτρους για την ανάθεση τιμών στα πεδία κάθε κλάσης. Για παράδειγμα, ο παρακάτω constructor αρχικοποιεί την κλάση FirstQualityProduct δίνοντας τιμές στα πεδία name και price της κλάσης. public FirstQualityProduct(String name, double price) { //... } Οι εκπαιδευόμενοι καλούνται να υλοποιήσουν τους κατασκευαστές των κλάσεων με τη βοήθεια του εκπαιδευτή. Επιπλέον, θα χρειασθεί η βοήθεια του εκπαιδευτή για τον καθορισμό και την υλοποίηση κατασκευαστών (constructors) για την κλάση Basket η οποία διαθέτει ως πεδίο, έναν πίνακα τύπου Vector από προϊόντα και έτσι απαιτείται η δημιουργία αντικειμένου τύπου Vector στην μέθοδο του κατασκευαστή myproducts = new java.util.vector(); Ο εκπαιδευτής θα πρέπει να εξηγήσει την ανάγκη μη ύπαρξης μεθόδου constructor στην αφηρημένη κλάση Product αλλά μόνο στις υποκλάσεις της. Ορισμός μεθόδων ανάγνωσης και ανάθεσης τιμών Αποτελεί συνήθη πρακτική στον αντικειμενοστρεφή προγραμματισμό ορισμός των πεδίων μιας κλάσης με τον μετατροπέα ορατότητας private, όπως παρουσιάστηκε σε προηγούμενο παράδειγμα. Σε τέτοια πεδία έχουν πρόσβαση μόνο μέθοδοι που 16

ανήκουν στην ίδια κλάση. Με αυτόν τον τρόπο αποκρύπτονται οι λεπτομέρειες της υλοποίησης μιας κλάσης και υποστηρίζεται έτσι ένα από τα βασικά χαρακτηριστικά του αντικειμενοστρεφούς προγραμματιστικού παραδείγματος που είναι η κελυφοποίηση (encapsulation) ή αλλιώς απόκρυψη πληροφοριών (information hiding). Έτσι, θα προκύψει η ανάγκη να οριστούν σε κάθε κλάση μέθοδοι για την ανάθεση αλλά και την ανάγνωση των τιμών στα πεδία της κλάσης. Για παράδειγμα, για να προσδιοριστεί ποιο είναι το καλάθι κάποιου αγοραστή ορίζεται μια μέθοδος ανάγνωσης της τιμής του πεδίου mybasket της κλάσης Customer. Ο εκπαιδευτής θα χρειαστεί να αναφερθεί σε τέτοιου είδους λειτουργίες (μεθόδους) και στη συνέχεια οι εκπαιδευόμενοι μπορούν να προσθέσουν στις ήδη σχεδιασμένες οντότητες τέτοιες λειτουργίες. Επιπλέον, είναι αναγκαίος ο ορισμός μεθόδων για την ανάγνωση της τιμής ενός πεδίου. Ως παράδειγμα, η μέθοδος: public Basket getbasket() { return mybasket; } χρησιμοποιείται για την ανάγνωση της τιμής του πεδίου mybasket στην κλάση Customer. Το πεδίο mybasket έχει ορατότητα private και δεν είναι δυνατή με άλλο τρόπο η πρόσβαση στην τιμή του. Η μέθοδος getbasket δηλώνεται με ορατότητα public, ενώ η τιμή που επιστρέφει έχει τον ίδιο τύπο με το πεδίο mybasket. Το όνομα της μεθόδου έχει το πρόθεμα get. Παρ ότι αυτό δεν είναι υποχρεωτικό, αποτελεί μια σύμβαση που ακολουθείται ευρέως στη γλώσσα Java και την αντικειμενοστρεφή ανάπτυξη λογισμικού γενικότερα. Αντίστοιχα, η μέθοδος: public void setbasket(basket basket) { this.mybasket = basket; } αναθέτει την τιμή του ορίσματός της στο πεδίο mybasket. Αντίστοιχα, το πρόθεμα set τίθεται στις μεθόδους απόδοσης τιμών σε πεδία κλάσεων. Ορισμός αφηρημένων κλάσεων και μεθόδων Ο εκπαιδευτής εξηγεί τον τρόπο δήλωσης abstract κλάσεων και μεθόδων. Ο εκπαιδευτής θα πρέπει επίσης να εξηγήσει ότι στο σχεδιασμό υπάρχει η κλάση Product από την οποία δε δημιουργούνται ποτέ αντικείμενα, αλλά αντίθετα, τα πραγματικά προϊόντα (αντικείμενα) είναι αντικείμενα της κλάσης Προϊόν Πρώτης Ποιότητας (FirstQualityProduct) ή της κλάσης Προϊόν Δεύτερης Ποιότητας (SecondQualityProduct). Έτσι θα παρουσιαστούν από τον εκπαιδευτή οι έννοιες αφηρημένη κλάση και αφηρημένη μέθοδος. Η κλάση Product θα δηλωθεί ως αφηρημένη (abstract), θα υπάρξει σε αυτήν η αφηρημένη μέθοδος saleprice(). Αυτό γίνεται βάζοντας τη λέξη (μετατροπέα) abstract στη δήλωση της κλάσης. Με άλλα λόγια, στον κώδικα της κλάσης Product αλλάξτε τη δήλωση: public class Product { //... } σε public abstract class Product { //Δήλωση αφηρημένης μεθόδου abstract double saleprice(); 17

} //... H αφηρημένη μέθοδος saleprice() θα υλοποιηθεί στην υποκλάση FirstQualityProduct η οποία θα επιστρέφει την τιμή που κληρονομείται από την κλάση-βάση. Εδώ θα πρέπει ο εκπαιδευτής να εξηγήσει την έννοια του πολυμορφισμού, όπου η ίδια μέθοδος (ίδιο όνομα, ίδιος αριθμός και τύπος παραμέτρων) ορίζεται σε δύο ή περισσότερες κλάσεις μιας ιεραρχίας κλάσεων και να αναφερθεί στο πώς «επιλύεται» το ζήτημα, ποια από όλες εκτελείται όταν κληθεί αυτή η μέθοδος. Μεταγλώττιση Μετά τη διόρθωση του κώδικα μιας ή περισσοτέρων κλάσεων γίνεται η μεταγλώττιση του προγράμματος. Η μεταγλώττιση είναι δυνατόν να πραγματοποιηθεί είτε συνολικά, οπότε μεταγλωττίζονται όλες οι κλάσεις ενός έργου το έργο στο BlueJ, είτε χωριστά για κάθε κλάση. Για τη μεταγλώττιση ολόκληρου του έργου κάντε κλικ στο κουμπί Compile δεξιά στην επιφάνεια εργασίας του BlueJ. Εάν υπάρχει σφάλμα μεταγλώττισης σε κάποια κλάση, το BlueJ εμφανίζει τον κώδικα αυτής της κλάσης με το διορθωτή κώδικα εμφανίζοντας κατάλληλο μήνυμα σφάλματος στη γραμμή κατάστασης (κάτω αριστερά) στο πλαίσιο του διορθωτή κώδικα. Επιπλέον, επισημαίνεται η θέση του πρώτου σφάλματος μεταγλώττισης που εντοπίστηκε καθώς και το κατάλληλο μήνυμα σφάλματος του μεταγλωττιστή στο κάτω μέρος του παραθύρου του διορθωτή κλάσεων, όπως φαίνεται στην Εικόνα 4-4. Η μεταγλώττιση μιας μεμονωμένης κλάσης γίνεται στο διάγραμμα κλάσεων κάνοντας κλικ με το δεξί πλήκτρο του ποντικού στην αντίστοιχη κλάση και επιλέγοντας Compile στο πτυσσόμενο (pop-up) μενού που εμφανίζεται (Εικόνα 4-5). Εναλλακτικά, ενώ διορθώνετε τον κώδικα της κλάσης στο διορθωτή κώδικα της κλάσης κάντε κλικ στο κουμπί Compile πάνω δεξιά στην οθόνη. Παρατηρήστε ότι μια κλάση που είτε δεν έχει μεταγλωττιστεί, είτε ο κώδικάς της έχει αλλάξει μετά την προηγούμενη μεταγλώττιση, παρουσιάζεται στο διάγραμμα κλάσεων διαγραμμισμένη, ενώ μετά τη μεταγλώττισή της η διαγράμμιση εξαφανίζεται. Έτσι, οι κλάσεις στην 4-1 εμφανίζονται διαγραμμισμένες, αντίθετα με τις μεταγλωττισμένες κλάσεις στην Εικόνα. 18

Εικόνα 4-4. Μήνυμα σφάλματος κατά τη μεταγλώττιση Εικόνα 4-5. Μεταγλώττιση μεμονωμένης κλάσης 19

Δραστηριότητα 5η: Εκτέλεση προγράμματος Διδακτικοί Στόχοι Μετά το τέλος της ενότητας οι εκπαιδευόμενοι αναμένεται: Να δημιουργούν αντικείμενα Να εκτελούν μεθόδους αντικειμένων Να επιθεωρούν την κατάσταση αντικειμένων Δημιουργία αντικειμένων Αφού ο εκπαιδευτής παρουσιάσει πώς δημιουργούνται αντικείμενα από τις κλάσεις και πώς εκτελούνται οι μέθοδοι των αντικειμένων, οι εκπαιδευόμενοι εκτελούν το σενάριο του αυθεντικού παραδείγματος, δημιουργώντας αντικείμενα και εκτελώντας λειτουργίες, ακολουθώντας την αφήγηση που διάβασαν ή ανακαλώντας το βίντεο που παρακολούθησαν. Για να είναι δυνατή η δημιουργία ενός αντικειμένου (instance) μιας κλάσης στο BlueJ είναι απαραίτητο η κλάση να έχει μεταγλωττιστεί επιτυχώς. Για τη δημιουργία ενός αντικειμένου μιας κλάσης στο BlueJ κάντε κλικ με το δεξί πλήκτρο του ποντικιού στο εικονίδιο της κλάσης στο διάγραμμα κλάσεων και επιλέξτε έναν από τους κατασκευαστές (constructors) της κλάσης στο πτυσσόμενο (pop-up) μενού που εμφανίζεται, όπως φαίνεται στην Εικόνα 5-1. Η μέθοδος του κατασκευαστή είναι δυνατόν να περιέχει παραμέτρους. Σε αυτήν την περίπτωση η εισαγωγή των παραμέτρων γίνεται σε κατάλληλο πλαίσιο διαλόγου που εμφανίζεται, όπως περιγράφεται στη συνέχεια. Εικόνα 5-1. Δημιουργία αντικειμένου Στο πλαίσιο διαλόγου που εμφανίζεται πληκτρολογήστε το όνομα του αντικειμένου (instance), όπως φαίνεται στην Εικόνα 5-2. 20

Εικόνα 5-2. Πλαίσιο δημιουργίας αντικειμένου Μετά την εκτέλεση του κατασκευαστή το αντικείμενο εμφανίζεται στον «πάγκο αντικειμένων» (object bench) στο κάτω αριστερό μέρος της οθόνης (Εικόνα 5-36). Για την αφαίρεση ενός αντικειμένου κάντε δεξί κλικ στο εικονίδιό του στον πάγκο αντικειμένων και επιλέξτε Remove στο πτυσσόμενο μενού που εμφανίζεται. Εικόνα 5-36. Εμφάνιση αντικειμένου στον πάγκο αντικειμένων Κλήση μεθόδων και επιθεώρηση αντικειμένων Για να καλέστε μια μέθοδο μιας κλάσης πρέπει να έχετε αρχικά δημιουργήσει αντικείμενα της κλάσης αυτής. Εξαίρεση αποτελούν οι στατικές (static) μέθοδοι, οι οποίες εφαρμόζονται στην κλάση την ίδια και όχι σε κάποιο στιγμιότυπό της (αντικείμενο). Όπως αναφέρθηκε, τα αντικείμενα μιας κλάσης εμφανίζονται στον πάγκο αντικειμένων, όπως φαίνεται στην Εικόνα 5-36. Κάντε κλικ με το δεξί πλήκτρο του ποντικιού πάνω στο αντικείμενο και επιλέξτε το όνομα μεθόδου που θέλετε να εκτελεστεί, όπως φαίνεται στην Εικόνα. Εάν η μέθοδος δέχεται παραμέτρους, το BlueJ εμφανίζει πλαίσιο διαλόγου για την εισαγωγή των παραμέτρων (Εικόνα ). Προσέξτε ώστε οι παράμετροι να έχουν το σωστό τύπο 21

(π.χ. int, double, κλπ). Σε περίπτωση που η μέθοδος δέχεται ως παράμετρο αντικείμενο μιας κλάσης, δίνεται ως παράμετρος το όνομα του αντικειμένου, όπως αυτό εμφανίζεται στον πάγκο αντικειμένων. Αν η μέθοδος επιστρέφει τιμή, τότε αυτή εμφανίζεται σε κατάλληλο πλαίσιο διαλόγου μετά το τέλος της εκτέλεσης της μεθόδου. Εικόνα 5-4 Εκτέλεση μεθόδου Εικόνα 5-5. Εισαγωγή παραμέτρων σε μέθοδο Κάνοντας διπλό κλικ πάνω στο εικονίδιο ενός αντικειμένου στον πάγκο αντικειμένων εμφανίζονται οι τιμές των πεδίων του. Σε περίπτωση που το πεδίο αναφέρεται σε άλλο αντικείμενο ή πίνακα, στη θέση της τιμής του αντικειμένου εμφανίζεται ένα βέλος, όπως φαίνεται στην Εικόνα. Κάνοντας διπλό κλικ στο βέλος εμφανίζεται πλαίσιο διαλόγου για την επιθεώρηση του αντικειμένου στο οποίο αναφέρεται το πρώτο. Για παράδειγμα, κάνοντας διπλό κλικ στο βέλος δίπλα στο πεδίο mybasket στην Εικόνα εμφανίζεται πλαίσιο διαλόγου για την επιθεώρηση του αντικειμένου mybasket; 22

Εικόνα 5-6. Πλαίσιο διαλόγου επιθεώρησης αντικειμένου Η σειρά ενεργειών που πρέπει να ακολουθήσετε για τη δημιουργία αντικειμένων και την εκτέλεση λειτουργιών (κλήση μεθόδων) είναι η εξής: Δημιουργία ενός ή περισσοτέρων αντικειμένων του τύπου Basket. Προτείνεται να ξεκινήσετε από ένα αντικείμενο. Δημιουργία τόσων αντικειμένων του τύπου αγοραστή όσα και τα αντικείμενα του τύπου καλάθι που δημιουργήσατε, ορίζοντας, με τη βοήθεια της μεθόδου κατασκευαστή της κλάσης Customer, από ένα διαφορετικό καλάθι σε κάθε αγοραστή. Δημιουργία ενός ή περισσοτέρων αντικειμένων του τύπου FirstQualityProduct και SecondQualityProduct. Δημιουργήστε ένα τουλάχιστον αντικείμενο από κάθε τύπο προϊόντος. Δημιουργία ενός ή περισσοτέρων αντικειμένων του τύπου Seller. Επιθεώρηση των τιμών των πεδίων των αντικειμένων που δημιουργήσατε Εκτέλεση κατά σειρά των λειτουργιών: Ζύγιση προϊόντος Υπολογισμός αξίας προϊόντος Πληρωμή ποσού Είσπραξη ποσού Τοποθέτηση του προϊόντος στο καλάθι κάποιου συγκεκριμένου αγοραστή. 23