java:interface_as_data_type

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
java:interface_as_data_type [2021/04/17 05:15]
java:interface_as_data_type [2021/04/17 06:15]
gthanos
Line 1: Line 1:
 +====== Το interface ως τύπος δεδομένων ======
  
 +Ας υποθέσουμε τώρα ότι θέλουμε να χρησιμοποιήσουμε μία στοίβα για να αντιμεταθέσουμε τα στοιχεία ενός πίνακα χαρακτήρων. Ο πίνακας αρχικά περιέχει την αγγλική αλφαβήτα (26 χαρακτήρες) και θέλουμε να αντιστρέψουμε την σειρά με την οποία αποθηκεύονται οι χαρακτήρες στον πίνακα. Η μέθοδος invertArray παρακάτω αντιμεταθέτει τα στοιχεία του πίνακα array με χρήση της στοίβας stk.
 +
 +<code java ArrayReverse.java>
 +public class ArrayReverse {
 +  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'};
 +    printCharacterArray(alphabet);
 +    System.out.println("-----------");
 +    
 +    Stack stack = new ArrayStack();
 +    invertArray(alphabet, stack);
 +    
 +    printCharacterArray(alphabet);
 +  }
 +  
 +  public static void invertArray(Object []array, Stack stk) {
 +    for(int i=0; i<array.length; i++)
 +      stk.push(array[i]);
 +    for(int i=0; i<array.length; i++)
 +      array[i] = stk.pop();
 +  }
 +  
 +  public static void printCharacterArray(Character []array) {
 +    for(Character c : array)
 +      System.out.print(c+"   ");
 +    System.out.println("");
 +  }
 +}
 +</code>
 +
 +<WRAP important 80% center round>
 +Παρατηρήστε ότι η μέθοδος //invertArray// παίρνει ως 2ο όρισμα όχι το αντικείμενο μίας κλάσης αλλά ένα αντικείμενο τύπου interface //Stack//! Στην πραγματικότητα αυτό που δηλώνει η συγκεκριμένη μέθοδος είναι ότι ως 2ο όρισμα παίρνει ένα αντικείμενο του οποίου η κλάση υλοποιεί το interface //Stack//. Επίσης, δηλώνει ότι από όλες τις διαθέσιμες μεθόδους της κλάσης μπορούν να χρησιμοποιηθούν μόνο οι μέθοδοι που δηλώνονται στο interface.
 +</WRAP>
 +
 +<WRAP todo 80% center round>
 +Στο παραπάνω πρόγραμμα, αλλάξτε την γραμμή
 +<code java>
 +Stack stack = new ArrayStack();
 +</code>
 +σε
 +<code java>
 +Stack stack = new LinkedStack();
 +</code>
 +
 +Παρατηρήστε αν σας βγάζει κάποιο μήνυμα ο //compiler// και εάν εκτελώντας το πρόγραμμα παράγεται το ίδιο τελικό αποτέλεσμα. Τι συμπέρασμα βγάζετε για τη χρήση της στοίβας από την μέθοδο //invertArray()//;
 +</WRAP>
 +
 +| Προηγούμενο : [[ :java:interface_implementation | Υλοποίηση του interface  ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο: [[ :java:abstract_classes_vs_interfaces | Συγκρίνοντας Abstract Κλάσεις και Interfaces  ]]  |
java/interface_as_data_type.txt · Last modified: 2021/04/17 05:15 (external edit)