12.6. Άσκηση 6 - [αξιοποίηση γραφικής διεπαφής (GUI)] (έκδοση 2006)

Σχετικά έγγραφα
12.6. Άσκηση 6 - [αξιοποίηση γραφικής διεπαφής (GUI)] (έκδοση 2004)

Η στοίβα (stack) H στοίβα είναι ένας αποθηκευτικός χώρος οργανωµένος κατά τέτοιο τρόπο ώστε να υποστηρίζει δύο βασικές λειτουργίες:

(Logic Gate Simulator)

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

Ανάπτυξη Plugins για το AgentSheets

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

Οντοκεντρικός Προγραμματισμός

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

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

public class ArrayStack implements Stack {

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

HelloApplet. Παύλος Εφραιμίδης Java Applets 1

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

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

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

Εισαγωγή στους Υπολογιστές

CSD Univ. of Crete Φθινόπωρο Άσκηση 1 Εκφώνηση

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

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

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών

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

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

Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ GRS-1

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας

Οντοκεντρικός Προγραμματισμός

ΕΡΓΑΣΤΗΡΙΟ 16. Χρησιμοποιώντας τον Αποσφαλματιστή (Debugger) του Eclipse

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

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

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

ΕΡΓΑΣΙΑ 2. Κατασκευάζοντας Ημερολόγια. Ημερομηνία Ανάρτησης: 23/02/2018 Ημερομηνία Παράδοσης: 13/03/2018, 09:00

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

Η Απάντηση. Φύλλο Εργασίας. Μηνύματα

Η Απάντηση. Ενδεικτικές Απαντήσεις Φύλλου Εργασίας. Μηνύματα. 1. Πληκτρολογήστε την εντολή:

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

8. Μέθοδοι (Methods)

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

ANDROID Προγραμματισμός Εφαρμογών

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

Ask1, Ask2, Ask3. private void jbutton1actionperformed(java.awt.event.actionevent evt) { jlabel1.settext( "You pressed the 1st button" ); }

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

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

Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, :00-10:00 π.μ.

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

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

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

Βασικά της γλώσσας JAVA

3. Γράψτε μία εντολή που να εμφανίζει π.χ. «Πόσα είναι τα κορίτσια του;» και μία που να εμφανίζει: «Τα κορίτσια του Τζειμς Μποντ είναι 4»

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Python. 1η Ομάδα Ασκήσεων

Διδάσκων: Παναγιώτης Ανδρέου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Graphical User Interfaces (GUI) SWING

Κεφάλαιο 1. Νήματα (Threads). Time Sharing

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

scanf() scanf() stdin scanf() printf() int float double %lf float

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

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

ΕΡΓΑΣΙΑ 3. Παίζοντας Sudoku. Ημερομηνία Ανάρτησης: 16/03/2018 Ημερομηνία Παράδοσης: 03/04/2018, 09:00

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

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

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

ΣΕΛΙ Α 1 ΚΕΦΑΛΑΙΟ 1 - ΑΡΧΙΚΑ

Εισαγωγή στο προγραμματιστικό περιβάλλον ANSI

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

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

Συλλογές, Στοίβες και Ουρές

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

Κεφάλαιο VI : Εργαστηριακές ασκήσεις που αφορούν τη δηµιουργία γραφικού περιβάλλοντος χρήστη στη Java.

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

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

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ #2 Ethernet MAC Στρώµα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

ΓΡΑΠΤΗ ΕΞΕΤΑΣΗ ΣΤΟ ΜΑΘΗΜΑ "ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΣΧΕ ΙΑΣΜΟΣ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ" ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ιδάσκων: Β.Βεσκούκης

Διαδικασιακός Προγραμματισμός

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

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

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

Εργαστήριο 2 - Άσκηση - Ανάλυση

GET SDI PORTAL v1. Οδηγός Βοήθειας

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

Transcript:

exercise 6new_10 12/5/2008 12.6. Άσκηση 6 - [αξιοποίηση γραφικής διεπαφής (GUI)] (έκδοση 2006) 12.6.1. Περιγραφή Θεωρήστε την γραφική διεπαφή της αριθµοµηχανής των MS Windows. Μια παρόµοια διεπαφή (δες σχήµα 6.1) ορίζεται από την κλάση CalculatorGui. Η διεπαφή αυτή σας δίνεται µε τη µορφή Java κλάσεων σε bytecodes στο αρχείο CalcGuiV1Exer6.zip ή CalcGuiV1Exer6.jar (δες δικτυακό τόπο του βιβλίου). Σχήµα 6.1. Γραφική διεπαφή της έκδοσης 1 του CalculatorGui. Η κλάση CalculatorGui έχει ένα δηµιουργό που δέχεται ένα όρισµα τύπου Operand. Την αναφορά αυτή χρησιµοποιεί το στιγµιότυπο της κλάσης CalculatorGui για να επικοινωνήσει µε το συγκεκριµένο στιγµιότυπο της Operand αποστέλλοντας του κατάλληλα µηνύµατα σε απόκριση της δράσης του χρήστη επί της γραφικής διεπαφής. Στα πλαίσια της άσκησης αυτής θα αναπτύξετε µια πρώτη έκδοση της αριθµοµηχανής χρησιµοποιώντας την γραφική διεπαφή που σας δίνεται. Θα ορίσετε κατάλληλα την κλάση Operand ώστε ο χρήστης να µπορεί να αποδίδει στο στιγµιότυπο της την επιθυµητή τιµή διαµέσου της γραφικής διεπαφής CalculatorGui. 12.6.2. Στόχος Στόχος της άσκησης είναι να έρθετε σε µια πρώτη επαφή µε γραφική διεπαφή (Gui) και να δείτε µε ποιο τρόπο µπορείτε να ενσωµατώσετε στην εφαρµογή σας µια κλάση που σας δίνεται σε bytecodes. Χρόνος εκτέλεσης: Κατά την διάρκεια της µελέτης του κεφαλαίου 8 ή µε την ολοκλήρωση του. Οπωσδήποτε µετά την εκτέλεση της άσκησης 5. 12.6.3. Μεθοδολογία εκτέλεσης Η άσκηση δίνεται σαν ένα σύνολο από δραστηριότητες που πρέπει να εκτελέσετε µόνοι σας. Σε κάθε δραστηριότητα σας δίνονται οδηγίες και βοήθεια ώστε να

Άσκηση 12.6 2 ξεπεράσετε τα δύσκολα σηµεία. Στο τέλος της άσκησης σας δίνονται ενδεικτικές απαντήσεις. ραστηριότητα 1 Αναπτύξτε το πιο απλό πρόγραµµα µε όνοµα Calc.java που θα εµφανίζει στην οθόνη τη γραφική διεπαφή CalculatorGui. Εκτελέστε τις παρακάτω ενέργειες: Αποσυµπιέστε το αρχείο CalcGuiV1Exer6.zip και βάλτε τα αρχεία που περιέχει στο ευρετήριο εργασίας σας. Εναλλακτικά χρησιµοποιήστε το αρχείο CalcGuiV1Exer6.jar. Οδηγίες χρήσης αρχείων.jar θα βρείτε στο αρχείο µε όνοµα UsingJARFiles.pdf ηµιουργήστε ένα πρόγραµµα µε όνοµα Calc.java που θα εµφανίζει την γραφική διεπαφή στην οθόνη. Ορίστε την κλάση Operand ώστε να περιέχει µόνο τον δηµιουργό της. ραστηριότητα 2 Εκτελέστε το πρόγραµµα που µόλις αναπτύξατε. Στην οθόνη θα δείτε την γραφική διεπαφή της αριθµοµηχανής. Τι θα συµβεί αν πατήσετε το πλήκτρο 1. Αιτιολογήστε. ραστηριότητα 3 Ενσωµατώστε στο πρόγραµµα σας την µέθοδο void adddigit(char ch); Μεταγλωττίστε και εκτελέστε. Πιέστε το πλήκτρο 1. Πιέστε το πλήκτρο 2. Τι παρατηρείτε; Μπορείτε να χρησιµοποιήσετε την adddigit(char ch)και µε τις δύο εκδόσεις της Operand δηλαδή a) µε int val; και β) µε StringBuffer val; Προσέξτε πως δεν βλέπετε την τρέχουσα τιµή του op στο display της γραφικής διεπαφής. Θα επανέλθουµε σε αυτό αργότερα. Αιτιολογήστε τη νέα συµπεριφορά του προγράµµατος σας. Πιέστε το πλήκτρο BackSpace. Τι παρατηρείτε; Το πλαίσιο «Σενάριο Λειτουργίας» περιγράφει ένα σενάριο αλληλεπίδρασης του χρήστη µε την γραφική διεπαφή και τις αλληλεπιδράσεις µεταξύ των αντικειµένων της αριθµοµηχανής για τον υπολογισµό της τιµής της έκφρασης 13 6 + 8 6 - *

Άσκηση 12.6 3 Σενάριο λειτουργίας Περιγράφουµε στη συνέχεια ένα σενάριο λειτουργίας της αριθµοµηχανής µε την γραφική διεπαφή για τον υπολογισµό της τιµής της έκφρασης 13 6 + 8 6 - * O χρήστης πιέζει το πλήκτρο 1. Αυτό αποστέλλει το µήνυµα adddigit( 1 ) στο O χρήστης πιέζει το πλήκτρο 3. Αυτό αποστέλλει το µήνυµα adddigit( 3 ) στο push στην στοίβα, η οποία αποθηκεύει ένα αντικείµενο µε τιµή 13. O χρήστης πιέζει το πλήκτρο 6. Αυτό αποστέλλει το µήνυµα adddigit( 6 ) στο push στην στοίβα, η οποία αποθηκεύει ένα αντικείµενο µε τιµή 6. O χρήστης πιέζει το πλήκτρο +. Αυτό αποστέλλει το µήνυµα operate στο στιγµιότυπο Adder της Calc. O Adder αποστέλλει ένα µήνυµα pop στην στοίβα για να πάρει τον ένα τελεστέο. Στη συνέχεια αποστέλλει ένα ακόµη µήνυµα pop στην στοίβα για να πάρει τον δεύτερο τελεστέο. Τους προσθέτει και αποστέλλει ένα µήνυµα push στη στοίβα για να βάλει µέσα το 19. O χρήστης πιέζει το πλήκτρο 8. Αυτό αποστέλλει το µήνυµα adddigit( 8 ) στο push στην στοίβα, η οποία αποθηκεύει ένα αντικείµενο µε τιµή 8. O χρήστης πιέζει το πλήκτρο 6. Αυτό αποστέλλει το µήνυµα adddigit( 6 ) στο push στην στοίβα, η οποία αποθηκεύει ένα αντικείµενο µε τιµή 6. O χρήστης πιέζει το πλήκτρο -. Αυτό αποστέλλει το µήνυµα operate στο στιγµιότυπο Subtracter της Calc. O Subtracter αποστέλλει ένα µήνυµα pop στην στοίβα για να πάρει τον ένα τελεστέο. Στη συνέχεια αποστέλλει ένα ακόµη µήνυµα pop στην στοίβα για να πάρει τον δεύτερο τελεστέο. Τους αφαιρεί και αποστέλλει ένα µήνυµα push στη στοίβα για να βάλει µέσα το 2. O χρήστης πιέζει το πλήκτρο *. Αυτό αποστέλλει το µήνυµα operate στο στιγµιότυπο Multiplier της Calc. O Multiplier αποστέλλει ένα µήνυµα pop στην στοίβα για να πάρει τον ένα τελεστέο (2). Στη συνέχεια αποστέλλει ένα ακόµη µήνυµα pop στην στοίβα για να πάρει τον δεύτερο τελεστέο (19). Τους πολλαπλασιάζει και αποστέλλει ένα µήνυµα push στη στοίβα για να βάλει µέσα το 38. O χρήστης πιέζει το πλήκτρο Enter. Αυτό αποστέλλει το µήνυµα operate στο στιγµιότυπο ResultPresenter της Calc. O ResultPresenter αποστέλλει ένα µήνυµα pop στην στοίβα για να πάρει τον ένα τελεστέο (38). Στη συνέχεια αποστέλλει ένα µήνυµα στο στιγµιότυπο Display για να εµφανίσει το αποτέλεσµα.

Άσκηση 12.6 4 ραστηριότητα 4 ώστε την µέθοδο void deletelastdigit(); Ενδεικτικός κώδικας Ο ενδεικτικός κώδικας που σας δίνεται σχολιάζεται στη συνέχεια. public void deletelastdigit(){ String s =new String(buf); buf = new StringBuffer(s.substring(0,s.length()-1)); } Σχόλια ηµιουργούµε ένα στιγµιότυπο String µε το ίδιο περιεχόµενο µε το αυτό του buf. String s =new String(buf); Για να δηµιουργήσουµε ένα στιγµιότυπο χωρίς τον τελευταίο χαρακτήρα του s του αποστέλλουµε το µήνυµα substring s.substring(0,s.length()-1) Το νέο αυτό στιγµιότυπο χρησιµοποιούµε για να δηµιουργήσουµε ένα νέο στιγµιότυπο StringBuffer και να αναθέσουµε στο buf να δείχνει σε αυτό. buf = new StringBuffer(s.substring(0,s.length()-1)); Τι θα απογίνει το στιγµιότυπο που έδειχνε η αναφορά buf; ραστηριότητα 5 Εκτελέστε το πρόγραµµα που µόλις αναπτύξατε. Ε1. Πατήστε το πλήκτρο C. Τι παρατηρείτε; Αιτιολογήστε. Ενσωµατώστε στην Operand και τις παρακάτω µεθόδους void reset(); void set(double val); Μεταγλωττίστε και εκτελέστε. Ε2. Πατήστε το πλήκτρο C. Τι παρατηρείτε; Αιτιολογήστε. Θα επανέλθουµε στο θέµα στην ραστηριότητα 10 όταν θα σας δοθεί ο πηγαίος κώδικας της CalculatorGui. Ε3. Ποιος είναι ο λόγος που ο δηµιουργός της Operand όρισε την µέθοδο set;

Άσκηση 12.6 5 ραστηριότητα 6 Όταν ο χρήστης ολοκληρώσει τον τελεστέο πατάει το πλήκτρο ENTER για να «µπει» το περιεχόµενο του τελεστέου στην στοίβα. Το πάτηµα του πλήκτρου ENTER έχει σαν αποτέλεσµα την κλήση της µεθόδου complete της Operand. Η µέθοδος αυτή θα πρέπει να βάζει τον τελεστέο σε µια στοίβα. Χρησιµοποιήστε κατάλληλα την κλάση Stack της βασικής βιβλιοθήκης της Java για να γράψετε την µέθοδο complete. Ε1. Ενσωµατώστε στην Operand την συµπεριφορά στο µήνυµα που δέχεται από το πλήκτρο ENTER. void complete(); Ε2. Εκτελέστε το παραπάνω πρόγραµµα και ελέγξτε την συµπεριφορά του. Πατήστε διαδοχικά τα πλήκτρα 1, 2, 9, backspace, 3, ENTER. Είστε σίγουρος για την ορθή συµπεριφορά του προγράµµατος σας; Τροποποιήστε τον κώδικα έτσι ώστε να ελέγξετε την συµπεριφορά αυτή. ραστηριότητα 7 Η κλάση CalculatorGui που σας δόθηκε έχει ένα data member µε όνοµα display που ορίζεται όπως παρακάτω public static TextField display; Αναφερθείτε στην κλάση TextField του πακέτου java.awt της βασικής βιβλιοθήκης για να τροποποιήσετε την κλάση Operand που ορίσατε ώστε να βλέπετε στο display της γραφικής διεπαφής την εκάστοτε τιµή του τελεστέου. Εντοπίστε και αξιοποιήστε την µέθοδο settext. Το data member display έχει οριστεί στην κλάση CalculatorGui σαν data member κλάσης. Είναι η καλύτερη επιλογή; Προτείνατε και υλοποιήστε ένα καλύτερο τρόπο αντιµετώπισης. ραστηριότητα 8 Εκτελέστε την εφαρµογή που αναπτύξατε παραπάνω. Πιέστε το πλήκτρο ΕΝΤΕR. Τι παρατηρείτε; Αιτιολογήστε. Τροποποιήστε το πρόγραµµα σας ώστε να βελτιώσετε την συµπεριφορά του. ραστηριότητα 9 (Προαιρετική) ηµιουργήστε ένα package στο BlueJ και εισάγετε τις παραπάνω κλάσεις. Ελέγξτε βήµα- βήµα τη συµπεριφορά των αντικειµένων στα µηνύµατα που αυτά δέχονται στα πλαίσια εκτέλεσης του προγράµµατος.

Άσκηση 12.6 6 ραστηριότητα 10 - επέκταση λειτουργικότητας Σας δίνεται ο πηγαίος κώδικας της γραφικής διεπαφής CalculatorGui που χρησιµοποιήσατε παραπάνω. (αρχείο CalcGuiV1Exer6Source.zip) O κώδικας αυτός δεν αξιοποιεί σωστά το περιβάλλον υλοποίησης. Θα κληθείτε να τον βελτιώσετε στην επόµενη δραστηριότητα. Στην φάση αυτή όµως µελετήστε τον και εκτελέστε την παρακάτω ενέργεια. Προσθέστε τα πλήκτρα για τις βασικές πράξεις. Χρησιµοποιήστε τις παρακάτω συντεταγµένες Πλήκτρο Συντεταγµένες + 245, 80, 50, 30 = 305, 156, 50, 30 ραστηριότητα 11 - βελτίωση πηγαίου κώδικα Προσπαθήστε να δώσετε µια νέα έκδοση για τον πηγαίο κώδικα η οποία αξιοποιεί καλύτερα τα πλεονεκτήµατα του Αντικειµενοστρεφούς προγραµµατισµού. ραστηριότητα 12 Χρήση της κατασκευής του interface Στα πλαίσια της δραστηριότητας 1 και για να αξιοποιήσετε την κλάση της γραφικής διεπαφής είχατε τον περιορισµό να ονοµάσετε το πρόγραµµα σας Calc. O περιορισµός αυτός µπαίνει από το γεγονός ότι ο δηµιουργός της CalcultorGui για να αναφερθεί στο στιγµιότυπο της Stack του προγράµµατος σας χρησιµοποιεί την αναφορά Calc.st. Επίσης ο δηµιουργός της CalculatorGui έχει δηλώσει ένα data member στην CalculatorGui χρησιµοποιώντας την κλάση Operand. Αυτό έχει ως αποτέλεσµα να τίθεται ο περιορισµός στην ονοµασία της κλάσης που αναπαριστά τον τελεστέο αλλά και περιορισµός στις µεθόδους που πρέπει αυτή να περιέχει (δες δραστηριότητες 3-6). Αντίστοιχος περιορισµός προς διαφορετική κατεύθυνση υπάρχει και στην δραστηριότητα 7. Οι περιορισµοί αυτοί µπορεί να αποφευχθούν ή να εκφρασθούν πιο αυστηρά µε κατάλληλη χρήση της κατασκευής του interface. Αξιοποιώντας την κατασκευή του interface αναπτύξαµε και σας δίνουµε µια νέα γραφική διεπαφή την MyCalculatorGui ή οποία κάνει implements το interface CalculatorGui. import java.awt.textfield; public interface CalculatorGui { public static TextField display = new TextField("0",14);;

Άσκηση 12.6 7 } Η κλάση MyCalculatorGui έχει ένα δηµιουργό που δέχεται ένα όρισµα που κάνει implements το interface Operand. Την αναφορά αυτή χρησιµοποιεί το στιγµιότυπο της κλάσης MyCalculatorGui για να επικοινωνήσει µε το συγκεκριµένο στιγµιότυπο της Operand αποστέλλοντας του κατάλληλα µηνύµατα σε απόκριση της δράσης του χρήστη επί της γραφικής διεπαφής. Επιπλέον σας δίνεται το interface Operand το οποίο αξιοποιήθηκε στην ανάπτυξη της κλάσης MyCalculatorGui. Θα πρέπει η κλάση που θα ορίσετε για τον operand να κάνει implements το interface αυτό. public interface Operand { public void adddigit(char ch); public void deletelastdigit(); public void reset(); public void set(double val); public void complete(); public void setcalculatorgui(calculatorgui cg); } Στο αρχείο CalcGuiV1usingInterfacesExer6.zip σας δίνονται οι κλάσεις που απαιτούνται για την ανάπτυξης της αριθµοµηχανής µε την προσέγγιση αυτή. Εναλλακτικά χρησιµοποιήστε το αρχείο CalcGuiV1usingInterfacesExer6.jar. H παραπάνω πρόταση δεν αντιµετωπίζει τον περιορισµό της δραστηριότητας 1 µε το όνοµα του προγράµµατος. ώστε µια εναλλακτική πρόταση χωρίς τον περιορισµό αυτό.