Stack programmieren -> Unklarheiten

abcman

Mitglied
Hallo allerseits

Ich komme bei einer Aufgabe nicht weiter, wo es darum geht einen Stack zu programmieren.
Die eigentliche Frage findet ihr ganz unten. Aber ich muss etwas ausholen um die Ausgangslage zu erklären.
Am besten zeige ich euch kurz die vorherige Aufgabe. Hier war mir noch alles klar:

Java:
public class stack {
    private Object[] oA = new Object[5];
    private int pos = 0; // nächste Einfügeposition

    public void push(Object obj) {

        if (pos == oA.length) {
            Object[] oATemp = new Object[2 * oA.length]; // 1) neues Array
            for (int i = 0; i < oA.length; i++) { // 2) alte Referenzen Sichern
                oATemp[i] = oA[i];
                oA = oATemp; // 3) in Klasse neuen Array verwenden
                System.out.println("Länge des neuen Array; " + oA.length);

            }
        }

        oA[pos] = obj; // obj in oA aufnehmen
        pos++; // pos erhöhen

    }

    public Object pop() {
        Object o = oA[pos - 1]; // 3-Zeiler ist als ...
        pos--; // 1-Zeiler formulierbar
        return o;
    }

    public Object peek() {
        return oA[pos - 1]; // noch keine Ausnahmebehandlung
    }

    public void clear() { // noch zu implementieren
    }

    public boolean isEmpty() {
        return pos == 0;
    }
}

public class stackTest {

    public static void main(String[] args) {
        stack s = new stack();
        s.push("1Hallo");
        s.push("2Huhu");
        s.push("3sfdf");
        s.push("4aslfjl");
        s.push("5sdfsd");
        s.push("6sdfsd");
        
    
        System.out.println(s.peek());

        System.out.println( s.isEmpty());
        //Test der anderen Methoden ...

    }

}


Bei der jetzigen Aufgabe muss ich aber mit weiteren Klassen, Expections und Interfaces arbeiten, was mich etwas verwirrt. Ich habe euch die Aufgabe etwas zusammengefasst:


1. Methoden im Interface Stack zusammenfassen und dieses Interface durch die Klasse ArrayStack implementieren.
2. Beim Stack-Überlauf soll eine StackException ausgelöst werden, ebenso, wenn mittels pop() oder peek() auf einen leeren Stack zugegriffen wird.
3.Neben dem parameterlosen Konstruktor auch einen zur Verfügung, mit dem die initiale Grösse des Arrays angegeben werden kann.
4. Eine weitere Implementierung ArrayDynStack erstellen, in der der interne Array neu angelegt wird, falls die ursprünglich gewählte Grösse nicht
ausreicht.
5. um nicht alle Methoden neu implementieren zu müssen, das Prinzip der vererbung einsetzen (ArrayDynStack ist Subklasse von ArrayStack,
um von abgeleiteten Klassen Zugriff auf Attribute zu ermöglichen, werden diese als protected spezifiziert).

Tipp: Die einzig kritische Stelle bei der nicht-dynamischen Implementierung besteht in der Methode push(), so dass lediglich diese Methode zu
überschreiben ist. Falls der Array vollständig belegt ist, legen Sie einen neuen (z.b. um 10 grösseren) an, kopieren die ‚alten’ Werte und stellen die interne
Referenzvariable auf den neu angelegten Array um.
Testen Sie die erstellten Klassen intensiv innerhalb einer Klasse StackTest.



Und hier ist mein aktueller Code:

ArrayStack
Java:
class ArrayStack implements Stack{
    private Object[] arr = new Object[1]; //Array-Objekt erstellen
    private int pos = 0; //Einfügeposition für push()

    public void clear(){ //Array leeren
        pos = 0;
    }
    public boolean isEmpty(){ //Überprüfen ob Array leer ist, falls ja "true" zurückgeben
        return pos==0;
    }
    public void push( Object o ){
        if( pos==arr.length){ //Wenn Arraygrösse erreicht...
            if( pos==arr.length ) throw new StackException("Überlauf"); //Erwartung "Überlauf" an StackException weiterleiten
        }
        arr[pos++] = o; //Arrayposition um 1 erhöhen
    }
    public Object pop(){ //Obersten Eintrag anzeigen und wegnehmen
        pos--;
        return arr[pos];
    }
    public Object peek(){
        return arr[pos-1]; //Obersten Eintrag anzeigen
    }
    
}

DynArrayStack


Java:
public class DynArrayStack extends ArrayStack implements Stack {
    
public DynArrayStack(){ }

public DynArrayStack( int size ){ super(size); }
public void push(Object obj) { //einzige zu überschreibende Methode
    Object[] neu = new Object[ arr.length*2 ];   //1
    for( int i=0; i<arr.length; i++ )             //2
      neu[i] = arr[i];                          //2
   arr = neu;                                   //3
}
}


Stack (interface)
Java:
interface Stack {

    public void clear();

    public boolean isEmpty();

    public void push(Object o);

    public Object pop();

    public Object peek();

}

StackException
Java:
public class StackException extends RuntimeException {
public StackException( String s ) { super( s ); }


public StackException(){}
}

StackTest
Java:
public class StackTest {
    public static void main(String[] args) {
        Stack s = new ArrayStack();
        s.push("1.Hallo");
        s.push("2.Test");
        s.push("3.Berlin");
        s.push("4.Helikopter");
        System.out.println( s.peek() );
        System.out.println( s.pop() );
        System.out.println( s.peek() );
        System.out.println( s.isEmpty() );
        System.out.println( s.pop() );        
        System.out.println( s.isEmpty() );
    }

}


Zur Zeit stecke ich beim Punk 2 fest.
Auf einer Turorialseite habe ich gesehen, dass die Exceptions für Erwartete Fehler gedacht sind. Also wäre für mich logisch, wenn man in der Array Stack bei der methode "push" die StackException ankicken würde.Dies mit der Anweisung "throw new StackException("Überlauf")"

In der StackExeption wäre dann definiert wie der Überlauf funktioniert und, dann müsste man das per Catch in die Array Stack zurückholen.
Sehe ich das richtig? Hatt mir jemand einen Tipp?
 
Zuletzt bearbeitet von einem Moderator:

Gucky

Top Contributor
Eine Exception ist nur eine Meldung dass da etwas schief gelaufen ist. Diese Information ist für den Aufrufer gedacht und der hat damit fertig zu werden. Nicht der Stack selber.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Stack programmieren Java Basics - Anfänger-Themen 6
B eine kleine leichte aufgabe mit einem stack programmieren Java Basics - Anfänger-Themen 2
A stack Java Basics - Anfänger-Themen 14
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
V Ist Off-Heap-Speicher dasselbe wie Stack-Speicher? Java Basics - Anfänger-Themen 2
izoards Stack... Java Basics - Anfänger-Themen 17
Csircc Rekursive Methode Stack Overflow Java Basics - Anfänger-Themen 10
B Zahlenfolge von Queue in Stack Java Basics - Anfänger-Themen 29
L Stack bilden, push und pop Java Basics - Anfänger-Themen 16
KogoroMori21 Stack und Heap Speicher Java Basics - Anfänger-Themen 1
G Stack und Queue Arbeitsblatt Java Basics - Anfänger-Themen 3
Z Datentypen Stack based calculator Java Basics - Anfänger-Themen 8
F speicherort stack oder heap Java Basics - Anfänger-Themen 1
S Rekursiven Stack Java Basics - Anfänger-Themen 6
Curtis_MC Collections Zufälliges Element aus Stack Java Basics - Anfänger-Themen 2
D Queue vs. Stack Java Basics - Anfänger-Themen 6
P Stack, Heap Java Basics - Anfänger-Themen 13
D Erste Schritte Stack im Rollenspiel Java Basics - Anfänger-Themen 76
J Stack mit Benutzereingabe Java Basics - Anfänger-Themen 17
J Liste,Queue,Stack sortieren Java Basics - Anfänger-Themen 2
C Stack und Queue in Aktion (Bitte Hilfe für die Klausur) Java Basics - Anfänger-Themen 7
S Sequenz von Zahlen bei einem Stack möglich oder nicht möglich? Java Basics - Anfänger-Themen 5
E Stack vs Queue - Gemeinsamkeiten / Unterschiede Java Basics - Anfänger-Themen 7
C Laufzeit von Stack Operation Java Basics - Anfänger-Themen 5
4 Stack over flow bei rekursiver Tiefensuche Java Basics - Anfänger-Themen 5
J Quicksort mit Stack Java Basics - Anfänger-Themen 4
A Anzahl der Elemente in einem Stack wiedergeben Java Basics - Anfänger-Themen 3
T Stack Overflow - Rekursive Fibonacci Java Basics - Anfänger-Themen 10
K Tiefen- und Breitensuche beim Baum durch Stack und Warteschlange Java Basics - Anfänger-Themen 1
L Liste mittels Stack implementieren Java Basics - Anfänger-Themen 0
C Stack - listenbasierte Implementierung Java Basics - Anfänger-Themen 4
L Mit rekursiven Aufrufen einen Stack emulieren Java Basics - Anfänger-Themen 1
T Frage zu Java Stack Java Basics - Anfänger-Themen 5
D Stack-Objekt - LIFO - wait(); notify(); Java Basics - Anfänger-Themen 0
J Array von Objekten, wie schauts im Heap / Stack aus ? Java Basics - Anfänger-Themen 7
M Frage zu Stack und Heap Java Basics - Anfänger-Themen 1
Farbenfroh Suche Übungsaufgaben: BinaryTree, Stack Java Basics - Anfänger-Themen 0
D Aufgabe: Stack mit Iterator Java Basics - Anfänger-Themen 8
X Stack mit Oberklasse, wieso funktioniert es nicht? Java Basics - Anfänger-Themen 8
B Stack/Heap Frage Java Basics - Anfänger-Themen 36
K Probleme mit stack Java Basics - Anfänger-Themen 7
K Wofür wird heute noch die Stack Klasse in Java genutzt Java Basics - Anfänger-Themen 4
F Rekursion Tiefensuch-Problem - Stack Overflow Java Basics - Anfänger-Themen 9
P LinkedList - Stack ... grundlegende Frage Java Basics - Anfänger-Themen 5
B Stack in eine verkettete Liste pushen Java Basics - Anfänger-Themen 4
J OOP Warum braucht man den Stack Java Basics - Anfänger-Themen 3
B Queue mit Daten aus einem Stack füllen Java Basics - Anfänger-Themen 21
G Stack invertieren Java Basics - Anfänger-Themen 3
H Pseudo-Stack (char[] stackArray) mit Zeichen aus einer .txt-Datei befüllen Java Basics - Anfänger-Themen 5
S Stack Problem mit Objekt Java Basics - Anfänger-Themen 2
X String mit String von Objekt im Stack vergleichen? Java Basics - Anfänger-Themen 14
D Stack auslesen mit pop Java Basics - Anfänger-Themen 2
S Stack als verkettete liste/ toString methode Java Basics - Anfänger-Themen 3
S Exceptions bei push/pop in Stack Java Basics - Anfänger-Themen 8
S Eigene Stack Klasse Java Basics - Anfänger-Themen 26
S Stack: Klasseninvariante Java Basics - Anfänger-Themen 4
L OOP Wrapper Klassen - Stack-Aufgabe Java Basics - Anfänger-Themen 2
M Frage zu Stack Java Basics - Anfänger-Themen 3
D Problem mit Set, Stack und Random Java Basics - Anfänger-Themen 2
O Stack Implementierung als verkettete Liste Java Basics - Anfänger-Themen 8
T Probleme bei einen Stack der über drei Dateien funktionieren soll Java Basics - Anfänger-Themen 5
V java.util.Stack Java Basics - Anfänger-Themen 9
K Stack und immer gleiches Objekt Java Basics - Anfänger-Themen 11
kulturfenster Stack / Queue Implementationen Java Basics - Anfänger-Themen 11
S Stack einlesen. Java Basics - Anfänger-Themen 2
E Stack kann nicht implimentiert werden Java Basics - Anfänger-Themen 11
E Eigene Stack Klasse schreiben Java Basics - Anfänger-Themen 12
J Stack Java Basics - Anfänger-Themen 3
K min-int-Wert in'nem Stack Java Basics - Anfänger-Themen 8
L Stack UpnRechner Java Basics - Anfänger-Themen 4
B Stack mit Bildern füllen Java Basics - Anfänger-Themen 2
B Stack mit Strings in zufälliger Reihenfolge füllen Java Basics - Anfänger-Themen 4
J Stack, der Integer-Zahlen enthält Java Basics - Anfänger-Themen 3
K Array Stack Java Basics - Anfänger-Themen 6
O Stack-Klasse Java Basics - Anfänger-Themen 7
S Stack mit Arrays Java Basics - Anfänger-Themen 3
T generischer stack Java Basics - Anfänger-Themen 3
Z Keller/Stack Problem Java Basics - Anfänger-Themen 11
H Stack und Queue Java Basics - Anfänger-Themen 6
M Stack SetValTop Java Basics - Anfänger-Themen 6
G Die Klasse Stack selber schreiben. Java Basics - Anfänger-Themen 2
F Klammertest mit Stack implementieren Java Basics - Anfänger-Themen 5
X Stack Java Basics - Anfänger-Themen 14
J Morgen Java-Klausur. Stack, Heap, Method-Area Java Basics - Anfänger-Themen 2
H Unterschied zwischen Stack und Array Java Basics - Anfänger-Themen 3
F MergeSort iterativ mit Hilfe von Stack Java Basics - Anfänger-Themen 5
S stack Java Basics - Anfänger-Themen 3
S Stack invertieren Java Basics - Anfänger-Themen 14
S Stack-Operationen Java Basics - Anfänger-Themen 59
S Stack.pop() wie genau funktioniert das? Java Basics - Anfänger-Themen 3
A Stack, Frage zur Methode push Java Basics - Anfänger-Themen 4
C Anzahl der Elemente auf einem Stack Java Basics - Anfänger-Themen 4
D Stack chaos Java Basics - Anfänger-Themen 2
megachucky kleines problem mit nem STACK Java Basics - Anfänger-Themen 8
I Stack ist auf einmal empty Java Basics - Anfänger-Themen 3
R Beispiele für Stack & Visualisierung Java Basics - Anfänger-Themen 2
R Stack: Wieso funktioiert das? Java Basics - Anfänger-Themen 2
N Stack-Probleme Java Basics - Anfänger-Themen 2
K Stack Overflow Java Basics - Anfänger-Themen 2
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben