java:interface_as_data_type

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Last revision Both sides next revision
java:interface_as_data_type [2017/02/16 14:30]
gthanos created
java:interface_as_data_type [2017/03/31 13:31]
gthanos
Line 1: Line 1:
 ====== Το interface ως τύπος δεδομένων ====== ====== Το interface ως τύπος δεδομένων ======
  
-Ας υποθέσουμε τώρα ότι θέλουμε να χρησιμοποιήσουμε ​μία στοίβα για ​να αντιμεταθέσουμε τα στοιχεία ενός πίνακα χαρακτήρων. Ο πίνακας αρχικά περιέχει την αγγλική αλφαβήτα (26 χαρακτήρες) και θέλουμε να αντιστρέψουμε ​την σειρά με την οποία αποθηκεύονται οι χαρακτήρες στον πίνακα. Η μέθοδος invertArray ​παρακάτω αντιμεταθέτει τα στοιχεία του πίνακα array με χρήση της στοίβας stk.+Ας υποθέσουμε τώρα ότι θέλουμε να αρχικοποιήσουμε ​ένα αντικείμενο τύπου //​Timer// ​και περιοδικά να ελέγχουμε εάν ο //timer// έχει λήξει ή όχι. Δείτε το παρακάτω ​πρόγραμμα το οποίο ελέγχει εάν ο Timer έχει λήξει ή όχι.
  
-<code java ArrayManipulator.java> +<code java SleepOnTimer.java> 
-public ​class ArrayManipulator ​{+class SleepOnTimer ​{
   public static void main(String []args) {   public static void main(String []args) {
-    ​Character alphabet[] ​{'​A','​B','​C','​D','​E','​F','​G','​H','​I','​J','​K','​L','​M','​N','​O','​P','​Q','​R','​S','​T','​U','​V','​W','​X','​Y','​Z'​};​ +    ​Timer timer new SimpleTimer(); 
-    printCharacterArray(alphabet); +    System.out.println(new ​Date()); 
-    System.out.println("​-----------"​);​ +    ​sleepOnTimer(timer5); 
-     +    ​System.out.println(new Date());
-    Stack stack = new ArrayStack(); +
-    ​invertArray(alphabetstack); +
-    ​ +
-    printCharacterArray(alphabet);+
   }   }
-  ​ +  public static void sleepOnTimer(Timer tint sleepSeconds) { 
-  ​public static void invertArray(Object []arrayStack stk) { +    ​try {       
-    ​for(int i=0i<​array.length;​ i++) +      t.setTimer(sleepSeconds)      
-      ​stk.push(array[i]); +      ​t.startTimer();       
-    for(int i=0; i<array.length; i+++      while(!t.hasExpired()) {        ​ 
-      ​array[i] = stk.pop(); +        ​Thread.sleep(sleepSeconds * 1000 / 10);         
-  +      
-   +    } 
-  ​public static void printCharacterArray(Character []array) { +    catch(Exception ex) { 
-    for(Character c : array) +      ​ex.printStackTrace(); 
-      ​System.out.print(c+" ​  "​); +    ​}
-    ​System.out.println(""​);​+
   }   }
 } }
Line 32: Line 27:
  
 <WRAP important 80% center round> <WRAP important 80% center round>
-Παρατηρήστε ότι η μέθοδος //invertArray// παίρνει ως 2ο όρισμα όχι το αντικείμενο μίας κλάσης αλλά ένα αντικείμενο τύπου interface //Stack//! Στην πραγματικότητα αυτό που δηλώνει η συγκεκριμένη μέθοδος είναι ότι ως 2ο όρισμα παίρνει ένα αντικείμενο του οποίου η κλάση υλοποιεί το interface //Stack//. Επίσης,​ δηλώνει ότι από όλες τις διαθέσιμες μεθόδους της κλάσης μπορούν να χρησιμοποιηθούν μόνο οι μέθοδοι που δηλώνονται στο interface.+Παρατηρήστε ότι η μέθοδος //sleepOnTimer// παίρνει ως 2ο όρισμα όχι το αντικείμενο μίας κλάσης αλλά ένα αντικείμενο τύπου interface //Timer//! Στην πραγματικότητα αυτό που δηλώνει η συγκεκριμένη μέθοδος είναι ότι ως 2ο όρισμα παίρνει ένα αντικείμενο του οποίου η κλάση υλοποιεί το interface //Timer//. Επίσης,​ δηλώνει ότι από όλες τις διαθέσιμες μεθόδους της κλάσης μπορούν να χρησιμοποιηθούν μόνο οι μέθοδοι που δηλώνονται στο interface ​Timer.
 </​WRAP>​ </​WRAP>​
  
Line 38: Line 33:
 Στο παραπάνω πρόγραμμα,​ αλλάξτε την γραμμή Στο παραπάνω πρόγραμμα,​ αλλάξτε την γραμμή
 <code java> <code java>
-Stack stack = new ArrayStack();+Timer timer = new SimpleTimer();
 </​code>​ </​code>​
 σε σε
 <code java> <code java>
-Stack stack = new LinkedStack();+Timer timer = new StartStopTimer();
 </​code>​ </​code>​
  
-Παρατηρήστε ​αν σας βγάζει κάποιο μήνυμα ο //​compiler//​ και ​εάν εκτελώντας το πρόγραμμα ​παράγεται το ίδιο τελικό αποτέλεσμα. Τι συμπέρασμα βγάζετε για τη χρήση της ​στοίβας από την μέθοδο //​invertArray()//;+Παρατηρήστε εάν εκτελώντας το πρόγραμμα αυτό τερματίζει στον ίδιο χρόνο (5 sec);
 </​WRAP>​ </​WRAP>​
  
-| Προηγούμενο : [[ :​java:​interface_implementation | Υλοποίηση του interface ​ ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο:​ [[ :java:interface_modification ​Μεταβολή υφιστάμενου interface ​ ​]] ​ |+| Προηγούμενο : [[ :​java:​interface_implementation | Υλοποίηση του interface ​ ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο:​ [[ :java:abstract_classes_vs_interfaces ​Συγκρίνοντας Abstract Κλάσεις και Interfaces ​ ​]] ​ |
java/interface_as_data_type.txt · Last modified: 2017/03/31 14:32 by gthanos