public class SimpleIntList { private int[] data; private int len; public SimpleIntList(int size) { this.data = new int[size]; this.len = 0; } public void add(int value) { //Precondition als RuntimeException if (full()) { throw new RuntimeException("Liste voll"); } //Implementierung data[len++] = value; //Postcondition assert !empty(); } public void bubblesort() { if (!empty()) { int cnt = 0; while (true) { //Schleifeninvariante assert cnt++ < len: "Zu viele Iterationen"; //Implementierung... boolean sorted = true; for (int i = 1; i < len; ++i) { if (sortTwoElements(i - 1, i)) { sorted = false; } } if (sorted) { break; } } } } public boolean empty() { return len <= 0; } public boolean full() { return len >= data.length; } private boolean sortTwoElements(int pos1, int pos2) { //Private Preconditions assert (pos1 >= 0 && pos1 < len); assert (pos2 >= 0 && pos2 < len); //Implementierung... boolean ret = false; if (data[pos1] > data[pos2]) { int tmp = data[pos1]; data[pos1] = data[pos2]; data[pos2] = tmp; ret = true; } //Postcondition assert data[pos1] <= data[pos2] : "Sortierfehler"; return ret; } }