input: Write a python function to check if a string of parentheses is balanced using the Stack class.
  assert is_balanced("()") == True
  assert is_balanced("(()") == False
  assert is_balanced("(())") == True
  assert is_balanced(")(") == False
  assert is_balanced("((()))") == True
output: class Stack:
      def __init__(self):
          self.items = []
      
      def is_empty(self):
          return self.items == []
      
      def push(self, item):
          self.items.append(item)
      
      def pop(self):
          return self.items.pop() if not self.is_empty() else None
      
      def peek(self):
          return self.items[-1] if not self.is_empty() else None
      
      def size(self):
          return len(self.items)
  
  def is_balanced(s):
      stack = Stack()
      for char in s:
          if char == '(':
              stack.push(char)
          elif char == ')':
              if stack.is_empty():
                  return False
              stack.pop()
      return stack.is_empty()