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] 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 ως τύπος δεδομένων ]] | |