java:interface_implementation

Υλοποίηση του Interface

Μία κλάση υλοποιεί ένα interface μόνο εάν υλοποιεί ΟΛΕΣ τις μεθόδους του interface. Έάν έστω και μία μέθοδος δεν υλοποιείται τότε η κλάση δεν υλοποιεί το interface.

Σε συνέχεια του προηγούμενου παραδείγματος θα επιχειρήσουμε να δημιουργήσουμε δύο διαφορετικές κλάσεις που υλοποιούν το συγκεκριμένο interface. Οι κλάσεις αυτές είναι SimpleTimer και StartStopTimer. Και οι δύο κλάσεις παρέχουν την ίδια λειτουργικότητα.

ArrayStack

ArrayStack.java
public class ArrayStack implements Stack {
  public int capacity;
  public Object []array;
  public int size;
 
  public ArrayStack() {
    this(256);
  }
 
  public ArrayStack(int capacity) {
    array = new Object[capacity];
    this.capacity = capacity;
    size = 0;
  }
 
  public int size() {
    return size;
  }
 
  public void push(Object o) {
 
    if( size >= capacity-1 ) {
      capacity *= 2;
      Object []newArray = new Object[capacity];
      for(int i=0; i<array.length; i++)
        newArray[i] = array[i];
      array = newArray;
      newArray = null;
    }
    array[size++] = o;
  }
 
  public Object pop() {
    return array[--size];
  }
 
  public Object top() {
    return array[size-1];
  }
 
  public String toString() {
    String str = "@@@@@@@@ - Stack - @@@@@@@@\n";
    for(int i=size-1; i>=0; i--)
      str += array[i].toString()+"\n";
    return str + "@@@@@@@@@@@@@@@@@@@@@@@@@@@\n";
  }  
}

ListStack

ListStack.java
import java.util.*;
public class ListStack implements Stack {
  private ArrayList list;  
 
  public ListStack() {
    list = new ArrayList();
  }
 
  public int size() {
    return list.size();
  }
 
  public void push(Object o) {  
    list.add(o);
  }
 
  public Object pop() {
    return list.remove(list.size()-1);
  }
 
  public Object top() {
    return list.get(list.size()-1);
  }
 
  public String toString() {
    String str = "@@@@@@@@ - Stack - @@@@@@@@\n";
    for(Object o : list)
      str += o.toString()+"\n";
    return str + "@@@@@@@@@@@@@@@@@@@@@@@@@@@\n";
  }  
}

Παραπάνω έχουμε υλοποιήσει το συγκεκριμένο interface μέσα από δύο διαφορετικές κλάσεις. Αν και η υλοποίηση των κλάσεων διαφέρει σημαντικά, η λειτουργία τους είναι κοινή. Μπορείτε να χρησιμοποιήσετε οποιαδήποτε από της δύο κλάσεις για να εξυπηρετήσετε τη λειτουργικότητα του interface Stack σε ένα πρόγραμμα.

java/interface_implementation.txt · Last modified: 2019/04/05 17:20 by gthanos