I'm just learning OOP, and I have an assignment to create a Stack. I came up with the following. Is it "beauty" enough, or to "schooly". Where can I evolve?
This is the class:
class Stack
{
private int _length;
private List<int> _members = new List<int>();
public Stack()
{
_length = 10;
}
public Stack(int length)
{
_length = length;
}
public List<int> Members
{
get { return _members; }
}
public int Length
{
get { return _members.Count; }
}
public bool IsEmpty
{
get { return (_members.Count == 0); }
}
public void Push(int member)
{
if (_members.Count < _length) _members.Add(member);
else throw new Exception("The Stack is full.");
}
public int Pop()
{
if (!IsEmpty)
{
int last_one = _members[_members.Count - 1];
_members.RemoveAt(_members.Count - 1);
return last_one;
}
else throw new Exception("The Stack is empty.");
}
}
And this is my Form:
public partial class Form1 : Form
{
Stack verem = new Stack(20);
Random rnd = new Random();
public Form1()
{
InitializeComponent();
}
private void refreshStack()
{
lbStack.Items.Clear();
foreach (int member in verem.Members)
{
lbStack.Items.Insert(0, member);
}
}
private void btnIsEmpty_Click(object sender, EventArgs e)
{
MessageBox.Show(verem.IsEmpty.ToString());
}
private void btnLength_Click(object sender, EventArgs e)
{
MessageBox.Show(verem.Length.ToString());
}
private void btnPush_Click(object sender, EventArgs e)
{
verem.Push((int)rnd.Next());
refreshStack();
}
private void btnPop_Click(object sender, EventArgs e)
{
verem.Pop();
refreshStack();
}
}