WYŻSZA SZKOŁA INFORMATYKI
I ZARZĄDZANIA
Z SIEDZIBĄ W RZESZOWIE
Inżynieria oprogramowania
Sprawozdanie
z laboratorium [3]
Prowadzący: Wykonawca:
dr inż. Arkadiusz Lewicki Mateusz Marcinek - w30451
Rzeszów, 2010 r.
Zadanie [3]
Napisz implementację klasy zawierającej implementację następujących metod oraz wykonaj dla niej odpowiednie testy jednostkowe:
public interface StackExercise {
/**
* Usuwa i zwraca element znajdujący się
* na szczycie stosu.
* Generuje wyjątek StackEmptyException
* gdy stos jest pusty.
*/
public String pop() throws StackEmptyException;
/**
* Umieszcza element na szczycie stosu.
*/
public void push(String item);
/** Inżynieria oprogramowania - A. Lewicki
* Zwraca element znajdujący się na szczycie
* stosu, ale nie usuwa go stamtąd.
* Generuje wyjątek StackEmptyException
* gdy stos jest pusty.
*/
public String top() throws StackEmptyException;
/**
* Zwraca true gdy stos jest pusty.
*/
public boolean isEmpty();
}
Rozwiązanie:
Kod klasy testowanej:
package stack;
import java.util.EmptyStackException;
public interface StackExercise {
/**
* Usuwa i zwraca element znajdujący się
* na szczycie stosu.
* Generuje wyjątek StackEmptyException
* gdy stos jest pusty.
*/
public String pop() throws EmptyStackException;
/**
* Umieszcza element na szczycie stosu.
*/
public void push(String item);
/**
Inżynieria oprogramowania - A. Lewicki
* Zwraca element znajdujący się na szczycie
* stosu, ale nie usuwa go stamtąd.
* Generuje wyjątek StackEmptyException
* gdy stos jest pusty.
*/
public String top() throws EmptyStackException;
/**
* Zwraca true gdy stos jest pusty.
*/
public boolean isEmpty();
}
package stack;
import java.util.EmptyStackException;
public class Stack implements StackExercise {
public int size;
public int location;
public String stack[];
public Stack(int size)
{
if(size<0) {
System.out.println("Nie można utworzyć stosu z ujemną liczba komórek!!");
}else
{
stack=new String[size];
this.size=size;
System.out.println("Utworzono stos z " + size + "komorkami. ");
}
}
public void push(String item)
{
if(location>=this.size)
{
System.out.println("Stos jest pełny! Nie możemy dodać kolejnej porcji danych!");
}else
{
stack[location]=item;
System.out.println("Dodano na szczyt stosu LOCATION ["+this.location+"]="+this.stack[location]);
location++;
}
}
public boolean isEmpty()
{
if(this.stack[0]=="")
return true;
else return false;
}
public String top() throws EmptyStackException
{
if(isEmpty())
{
throw new EmptyStackException();
}else
{
if(location==0)
return stack[location];
else
return stack[location-1];
}
}
public String pop() throws EmptyStackException
{
if(isEmpty())
{
throw new EmptyStackException();
}else
{
System.out.println("Wierzcholek "+ this.stack[--location] +" zostal usuniety");
stack[location]="";
if(location>0){
}
}
System.out.println("Aktyualny wierzcholek to: "+stack[location]);
return stack[location];
}
}
Kod klasy testowej:
package stack;
import junit.framework.TestCase;
public class StackExerciseTest extends TestCase {
Stack stos;
protected void setUp() throws Exception {
super.setUp();
stos=new Stack(10);
assertEquals(10,stos.size);
// sprawdza czy rozmiar tablicy się zgadza
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testPop() {
stos.push("ZERO");
stos.push("FIRST");
stos.push("SECOND");
stos.push("THIRD");
stos.push("FOURTH");
assertEquals("FOURTH", stos.top());
assertEquals("THIRD", stos.pop());
assertEquals("FOURTH", stos.top());
assertEquals("SECOND", stos.pop());
assertEquals("FIRST", stos.top());
// assertEquals("FIRST", stos.pop());
//stos.push("YYY");
//assertEquals("SECOND", stos.pop());
}
public void testPush() {
}
public void testTop() {
stos.push("XXX");
assertEquals("XXX", stos.top());
stos.push("YYY");
assertEquals("YYY", stos.top());
}
public void testIsEmpty() {
assertFalse(stos.isEmpty());
// stos.pop();
// assertTrue(stos.isEmpty());
}
}