Activity No 5
Gui and Exception Handling
Gui and Exception Handling
Στόχος
Στόχος της δραστηριότητας αυτής είναι η δημιουργία της δικής σας αριθμομηχανής αντιστροφής πολωνικής σημειογραφίας με γραφική διεπαφή, την οποία θα σχεδιάσετε και θα υλοποιήσετε εσείς.
Μέσα από την δράση αυτή στόχος είναι η εξοικείωση σας με:
με τις βασικές έννοιες δημιουργίας γραφικής διεπαφής (e.g., Abstract Window Toolkit),
με τον μηχανισμό διαχείρισης συμβάντων (event handling) στις γραφικές διεπαφές της Java,
την κατασκευή του Interface και των Abstract κλάσεων και μεθόδων, Methods and Classes,
τους μηχανισμούς οργάνωσης του κώδικα, όπως Packages, Access level modifiers, Mutators and accessors, initializers, για την βελτίωση της ποιότητας του,
τον Χειρισμό εξαιρέσεων (Exception Handling),
των nested και anonymous κλάσεων,
την αποφυγή, όπου είναι δυνατό, χρήσης της πρότασης switch ή ακολουθίας προτάσεων if.
Iteration No 1. Αναπτύξτε την δική σας Αριθμομηχανή με γραφική διεπαφή
1.1 Αξιοποιήστε (ως αναφορά μόνο) τον κώδικα που ήδη έχετε από την προηγούμενη δραστηριότητα σας και τις γνώσεις που αποκτήσατε μέχρι σήμερα, για να αναπτύξετε την δική σας αριθμομηχανής με γραφική διεπαφή.
1.2 Αξιοποιήστε το διάγραμμα κλάσεων (class diagram) της UML για να δώσετε την δομή της γραφικής διεπαφής σας.
1.3 Κάντε προσπάθεια να αξιοποιήσετε όσο τον δυνατόν περισσότερες από τις κατασκευές της γλώσσας για να αυξήσετε το reusability και το modularity του κώδικα σας.
Iteration No 2. Προσθήκη Χειρισμού εξαιρέσεων
2.1 Πιέστε το πλήκτρο + χωρίς να έχετε εισάγει τελεστέο. Θα δείτε πως το σύστημα τυπώνει μήνυμα όπως το παρακάτω
Exception in thread "AWT-EventQueue-0" java.util.EmptyStackException
Αυτό συμβαίνει γιατί δεν συλλάβατε εσείς την εξαίρεση EmptyStackException ώστε να την διαχειριστείτε με τον τρόπο που εσείς θέλετε.
Τροποποιήστε τον κώδικα σας ώστε σε περίπτωση έγερσης της εξαίρεσης EmptyStackException να τυπώνεται κατάλληλο μήνυμα, π.χ. Stack Empty, στο display της γραφικής διεπαφής της αριθμομηχανής σας.
2.2. Ελέγξτε τη συμπεριφορά της αριθμομηχανής σας για διαίρεση με το 0.
Τροποποιήστε τον κώδικα ώστε όταν ο χρήστης κάνει προσπάθεια για διαίρεση με 0 να εμφανίζεται στην οθόνη κατάλληλο μήνυμα (π.χ. Attempt to divide by zero).
Iteration No 3. Βελτιώσεις ποιότητας κώδικα
3.1 Αν χρησιμοποιείτε στην εφαρμογή σας γενικές μεταβλητές, κάντε προσπάθεια να τις αποφύγετε. Υπάρχει τρόπος.
3.2 Αν στην εφαρμογή σας χρησιμοποιείτε την πρόταση switch προσπαθήστε να δώσετε κώδικα χωρίς την χρήση της. Υπάρχει τρόπος τις περισσότερες φορές.
3.3 Χρησιμοποιήστε τον μηχανισμό του interface ως ένα ακόμη μηχανισμό αφαιρετικότητας και για να δημιουργήσετε μια πιο χαλαρή σχέση μεταξύ των συστατικών της εφαρμογής σας.