הלינקייה: מגזין חודשי למפתחים

רוצה לשמוע על כל האירועים, המדריכים, הקורסים והמאמרים שנכתבו החודש ?
הלינקייה הינו מגזין חופשי בעברית שמשאיר אותך בעניינים.
בלי ספאם. בלי שטויות. פעם בחודש אצלך בתיבה.

Inheritance

public class NormalStack {
	private int [] data;
	private int numElements;
 
	public NormalStack(int sz) {
		this.data = new int[sz];
		this.numElements = 0;
	}
 
	public void push(int e) {
		if ( this.numElements >= this.data.length ) {
			expand();
		}
 
		this.data[this.numElements] = e;
		this.numElements++;
	}
 
	public int pop() {
		this.numElements--;
		int e = this.data[this.numElements];
 
		return e;
	}
 
	private void expand() {
		int [] data = new int[this.data.length * 2];
		System.arraycopy(this.data, 0, data, 0, this.numElements);
 
		this.data = data;
	}
}
 
public class CountedStack extends NormalStack {
	private int numPush;
 
	public CountedStack(int sz) {
		super(sz);
 
		this.numPush = 0;
	}
 
	public void push(int e) {
		this.numPush++;
		super.push(e);
	}
 
	public int getNumPush() {
		return this.numPush;
	}
}
import junit.framework.Assert;
import junit.framework.TestCase;
 
 
public class StackTester extends TestCase {
	public void testStack() {
		NormalStack s = new NormalStack(10);
		s.push(10);
		s.push(20);
		s.push(30);
 
		Assert.assertEquals(30, s.pop());
		Assert.assertEquals(20, s.pop());
		Assert.assertEquals(10, s.pop());
 
		for ( int i=0; i < 100; i++ ) {
			s.push(i);
		}
 
		for ( int i=99; i >= 0; i-- ) {
			Assert.assertEquals(i, s.pop());
		}
 
		s.push(10);
		s.push(20);
		s.pop();
		s.push(30);
 
		Assert.assertEquals(30, s.pop());
		Assert.assertEquals(10, s.pop());
	}
 
	public void testCountedStack() {
		CountedStack cs = new CountedStack(10);
		cs.push(1);
		cs.push(2);
		cs.push(3);
		cs.pop();
		cs.pop();
 
		Assert.assertEquals(cs.getNumPush(), 3);
	}
}
course: