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
Next revision
Previous revision
java:interface_as_data_type [2017/02/03 10:20]
gthanos
java:interface_as_data_type [2021/04/17 05:15]
Line 1: Line 1:
-====== Το interface ως τύπος δεδομένων ====== 
  
-Ας υποθέσουμε τώρα ότι θέλουμε να χρησιμοποιήσουμε μία στοίβα για να αντιμεταθέσουμε τα στοιχεία ενός πίνακα χαρακτήρων. Ο πίνακας αρχικά περιέχει την αγγλική αλφαβήτα (26 χαρακτήρες) και θέλουμε να αντιστρέψουμε την σειρά με την οποία αποθηκεύονται οι χαρακτήρες στον πίνακα. Η μέθοδος invertArray παρακάτω αντιμεταθέτει τα στοιχεία του πίνακα array με χρήση της στοίβας stk. 
- 
-<code java ArrayManipulator.java> 
-public class ArrayManipulator { 
-  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:interface_modification | Μεταβολή υφιστάμενου interface  ]  | 
java/interface_as_data_type.txt · Last modified: 2021/04/17 05:15 (external edit)