mercredi 6 mai 2015
Exception vs. Testklasse (Programm testen)
Posted on 11:11 by verona
Hallo allerseits, ich habe folgendes Problem:
Bei einer Aufgabe wurde verlangt, sobald ein Array die Initialgrösse erreicht hat, soll es eine Exception "Überlauf" anzeigen. ->> Das hat funktioniert.
Gleichzeitig sollte das Array in einer Subklasse in ein Grösseres Array kopiert werden--> Das hat auch funktioniert.
Als ich dies in einem separaten Programm gemacht hatte, konnte ich in der Testklasse "queueTest" Werte ins Array schreiben und wenn es zu gross wurde, generierte es ein neues.
Jetzt das Problem: Ich möchte nun wieder Testen ob es in diesem Programm funktioniert, aber immer wenn ich die Arraygrösse überschreite, zeigt es logischerweise die Exception an.
Weiss jemand was ich machen kann, damit die Exception angezeigt wird, aber das Programm trotzdem nicht unterbricht?
Bei einer Aufgabe wurde verlangt, sobald ein Array die Initialgrösse erreicht hat, soll es eine Exception "Überlauf" anzeigen. ->> Das hat funktioniert.
Gleichzeitig sollte das Array in einer Subklasse in ein Grösseres Array kopiert werden--> Das hat auch funktioniert.
Als ich dies in einem separaten Programm gemacht hatte, konnte ich in der Testklasse "queueTest" Werte ins Array schreiben und wenn es zu gross wurde, generierte es ein neues.
Jetzt das Problem: Ich möchte nun wieder Testen ob es in diesem Programm funktioniert, aber immer wenn ich die Arraygrösse überschreite, zeigt es logischerweise die Exception an.
Weiss jemand was ich machen kann, damit die Exception angezeigt wird, aber das Programm trotzdem nicht unterbricht?
Code:
public
class ArrayQueue implements Queue {
protected Object[] OA = new Object[2];
protectedintpos = 0; // nächste Einfügeposition
public ArrayQueue(intsize) {// Konstruktor bei dem man zusätzlich die Array-Grösse mitgibt
super();
OA = new Object[size];//Array wird mit dieser grösse erstellt
}
publicvoid put(Object obj) {//Daten ins Array einlesen
if (pos==OA.length) thrownew QueueExeption("Überlauf");//Wenn das Array voll ist, Exeption auslösen (Fehlermeldung "Überlauf")
OA[pos] = obj; // obj in OA aufnehmen
pos++; // pos erhöhen
}
public Object get() {//Objekt aus der Queue anzeigen und herausnehmen.
if (pos==0){
thrownew QueueExeption("Leer");
}
Object
o = OA[0];
pos--; //Position wieder um 1 reduzieren
for (inti = 1; i < OA.length; i++) {
Object
object = OA[i];
OA[i-1]=object;
}
returno;
// Nachrücken der restlichen Elemente, Aktualisieren von pos
}
protectedvoid showArraySize() {//Zeigt die Arraygrösse an
System.
out.println("Arraygrösse: " + OA.length);
}
public Object peek() {
returnOA[0]; // noch keine Ausnahmebehandlung
}
protected Object[] getOA() {// Hier wird das Objekt OArry weitergegeben mit protected
returnOA;
}
protectedvoid setOA(Object [] OA) {
this.OA = OA;
}
publicvoid clear() { // noch zu implementieren
pos=0;
for (inti = 0; i < OA.length; i++) { //Alle Stellen im Array durchgehen.
OA[i]= null; //Entsprechende Arrayposition auf 0 setzen
}
}
publicboolean isEmpty() {//Wahr/Falsch-Wert zurückliefern, ob Array leer ist oder nicht.
returnpos == 0;
}
}
Code:
public
class queueTest {
publicstaticvoid main(String[] args) {
ArrayQueue
q = new ArrayQueue(2);
q.put("1hallo");
q.put("2velo");
q.clear();
q.put("3auto");
q.put("4auto");
q.put("5auto");
System.
out.println(q.get());
System.
out.println(q.get());
q.showArraySize();
}
}
Code:
public
class DynArrayQueue extends ArrayQueue {
public DynArrayQueue(intsize) {
super(size);
}
@Override
publicvoid put(Object obj) {
// TODO Auto-generated method stub
super.put(obj);
}
protectedvoid push(Object obj){//Werte in Array eingeben
if (pos == OA.length -1){
//Wenn beim einfügen die Größe nicht ausreicht vergrößern
Object []
newOArray = new Object[OA.length * 2]; // neue größe - hier doppelt so groß
CopyArrayItemsToNewArray(
super.getOA(), newOArray);
super.setOA(newOArray);
}
OA[pos] = obj; // obj in OA aufnehmen
inti = pos++; // pos erhöhen
}
privatevoid CopyArrayItemsToNewArray(Object [] oldObjectArray, Object [] newObjectArray) {
for (inti = 0; i < oldObjectArray.length; i++) {
newObjectArray[i] = oldObjectArray[i];
}
}
}
Code:
public
class QueueExeption extends RuntimeException {
public QueueExeption(String string) {
super(string);
}
}
Code:
Exception in thread "main" QueueExeption: Überlauf
at ArrayQueue.put(
ArrayQueue.java:15)
at queueTest.main(
queueTest.java:12)
Exception vs. Testklasse (Programm testen)
Categories: Exception vs. Testklasse (Programm testen)
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire