Java class Stack access control

Question

We would like to add access control to a stack data structure.

A stack stores data using first-in, last-out ordering.

Stacks are controlled through two operations called push and pop.

To add an item on top of the stack, use push. To take an item off the stack, use pop.

The following code shows how to create a class called Stack that implements a stack for up to ten integers:

// This class defines an integer stack that can hold 10 values. 
class Stack {
  int stck[] = new int[10];
  int tos;/*  w  ww.j  a v a 2  s .c  o m*/
  
  // Initialize top-of-stack
  Stack() {
    tos = -1;
  }

  // Push an item onto the stack
  void push(int item) {
    if(tos==9) 
      System.out.println("Stack is full.");
    else 
      stck[++tos] = item;
  }

  // Pop an item from the stack
  int pop() {
    if(tos < 0) {
      System.out.println("Stack underflow.");
      return 0;
    }
    else 
      return stck[tos--];
  }
}

public class Main{
  public static void main(String args[]) {
    Stack mystack1 = new Stack();
    Stack mystack2 = new Stack();

    // push some numbers onto the stack
    for(int i=0; i<10; i++) mystack1.push(i);
    for(int i=10; i<20; i++) mystack2.push(i);

    // pop those numbers off the stack
    System.out.println("Stack in mystack1:");
    for(int i=0; i<10; i++) 
       System.out.println(mystack1.pop());

    System.out.println("Stack in mystack2:");
    for(int i=0; i<10; i++) 
       System.out.println(mystack2.pop());
  }
}

Add access control to Stack class




// defines an integer stack that can hold 10 values. 
class Stack {
  /* both stck and tos are private. */
  private int stck[] = new int[10];
  private int tos;
  
  // Initialize top-of-stack
  public Stack() {
    tos = -1;
  }

  // Push an item onto the stack
  public void push(int item) {
    if(tos==9) 
      System.out.println("Stack is full.");
    else 
      stck[++tos] = item;
  }

  // Pop an item from the stack
  public int pop() {
    if(tos < 0) {
      System.out.println("Stack underflow.");
      return 0;
    }else {
      return stck[tos--];
    }
    
  }
}

public class Main {
  public static void main(String args[]) {
    Stack mystack1 = new Stack();
    Stack mystack2 = new Stack();

    // push some numbers onto the stack
    for(int i=0; i<10; i++) mystack1.push(i);
    for(int i=10; i<20; i++) mystack2.push(i);

    // pop those numbers off the stack
    System.out.println("Stack in mystack1:");
    for(int i=0; i<10; i++) {
       System.out.println(mystack1.pop());
    }

    System.out.println("Stack in mystack2:");
    for(int i=0; i<10; i++) {
       System.out.println(mystack2.pop());
    }
  }
}



PreviousNext

Related