diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Master/Reference Architectures and Patterns/hjp5/examples/SimpleIntList.java | |
| download | Studium-master.tar.gz Studium-master.tar.bz2 | |
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/examples/SimpleIntList.java')
| -rw-r--r-- | Master/Reference Architectures and Patterns/hjp5/examples/SimpleIntList.java | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/Master/Reference Architectures and Patterns/hjp5/examples/SimpleIntList.java b/Master/Reference Architectures and Patterns/hjp5/examples/SimpleIntList.java new file mode 100644 index 0000000..d1b77d7 --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/examples/SimpleIntList.java @@ -0,0 +1,72 @@ +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;
+ }
+}
\ No newline at end of file |
