This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
java:interface_implementation [2017/03/31 13:11] gthanos [Υλοποίηση του Interface] |
java:interface_implementation [2019/04/05 17:20] (current) gthanos [LinkedStack] |
||
|---|---|---|---|
| Line 57: | Line 57: | ||
| </code> | </code> | ||
| - | ===== LinkedStack ===== | + | ===== ListStack ===== |
| - | <code java LinkedStack.java> | + | <code java ListStack.java> |
| - | class LinkedNode { | + | import java.util.*; |
| - | private Object o; | + | public class ListStack implements Stack { |
| - | private LinkedNode next; | + | private ArrayList list; |
| | | ||
| - | public LinkedNode(LinkedNode nxt, Object e) { | + | public ListStack() { |
| - | next = nxt; | + | list = new ArrayList(); |
| - | o = e; | + | |
| - | } | + | |
| - | + | ||
| - | public LinkedNode(Object e) { | + | |
| - | this(null, e); | + | |
| - | } | + | |
| - | + | ||
| - | public Object getElement() { return o; } | + | |
| - | public LinkedNode getNext() { return next; } | + | |
| - | + | ||
| - | public void setElement(Object e) { o = e; } | + | |
| - | public void setNext(LinkedNode node) { next = node; } | + | |
| - | } | + | |
| - | + | ||
| - | public class LinkedStack implements Stack { | + | |
| - | int size; | + | |
| - | LinkedNode head; | + | |
| - | + | ||
| - | public LinkedStack() { | + | |
| - | size=0; | + | |
| - | head = null; | + | |
| } | } | ||
| | | ||
| public int size() { | public int size() { | ||
| - | return size; | + | return list.size(); |
| } | } | ||
| | | ||
| - | public void push(Object o) { | + | public void push(Object o) { |
| - | // the following is OK even if head == null. | + | list.add(o); |
| - | head = new LinkedNode(head, o); | + | |
| - | size++; | + | |
| } | } | ||
| | | ||
| public Object pop() { | public Object pop() { | ||
| - | LinkedNode pN = head; | + | return list.remove(list.size()-1); |
| - | head = head.getNext(); | + | |
| - | size--; | + | |
| - | return pN.getElement(); | + | |
| } | } | ||
| | | ||
| public Object top() { | public Object top() { | ||
| - | return head; | + | return list.get(list.size()-1); |
| } | } | ||
| | | ||
| public String toString() { | public String toString() { | ||
| String str = "@@@@@@@@ - Stack - @@@@@@@@\n"; | String str = "@@@@@@@@ - Stack - @@@@@@@@\n"; | ||
| - | LinkedNode curr = head; | + | for(Object o : list) |
| - | while(curr != null) | + | str += o.toString()+"\n"; |
| - | str += curr.getElement().toString(); | + | |
| return str + "@@@@@@@@@@@@@@@@@@@@@@@@@@@\n"; | return str + "@@@@@@@@@@@@@@@@@@@@@@@@@@@\n"; | ||
| - | } | + | } |
| } | } | ||
| </code> | </code> | ||
| Line 122: | Line 95: | ||
| Παραπάνω έχουμε υλοποιήσει το συγκεκριμένο //interface// μέσα από δύο διαφορετικές κλάσεις. Αν και η υλοποίηση των κλάσεων διαφέρει σημαντικά, η λειτουργία τους είναι κοινή. Μπορείτε να χρησιμοποιήσετε οποιαδήποτε από της δύο κλάσεις για να εξυπηρετήσετε τη λειτουργικότητα του //interface// **Stack** σε ένα πρόγραμμα. | Παραπάνω έχουμε υλοποιήσει το συγκεκριμένο //interface// μέσα από δύο διαφορετικές κλάσεις. Αν και η υλοποίηση των κλάσεων διαφέρει σημαντικά, η λειτουργία τους είναι κοινή. Μπορείτε να χρησιμοποιήσετε οποιαδήποτε από της δύο κλάσεις για να εξυπηρετήσετε τη λειτουργικότητα του //interface// **Stack** σε ένα πρόγραμμα. | ||
| - | | Προηγούμενο : [[ :java:interface_implementation | Υλοποίηση του interface ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο: [[ :java:interface_as_data_type | Το interface ως τύπος δεδομένων ]] | | + | | Προηγούμενο : [[ :java:interface_definition | Δήλωση του interface ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο: [[ :java:interface_as_data_type | Το interface ως τύπος δεδομένων ]] | |