1. Escreva um programa completo para jogar o jogo da velha. Para tanto crie uma classe HashGame:

    1. A classe deve conter como dados privados um array bidimensional 3x3 para representar a grade do jogo
    2. Crie uma enumeração ou uma classe de estados para representar as possibilidades de ocupação de uma casa na grade (vazia, jogador 1 e jogador 2)
    3. O construtor deve inicializar a grade como vazia
    4. Forneça um método para exibir a grade
    5. Permita dois jogadores humanos
    6. Forneça um método para jogar o jogo; todo movimento deve ocorrerem uma casa vazia; depois de cada movimento, determine se houve uma vitória ou um empate.
  2. Crie um aplicativo de lista de tarefas, onde os usuários podem adicionar, marcar como concluídas e excluir tarefas.

    1. Deve-se criar as seguintes classes (no mínimo):
      1. Task (Tarefas)
      2. TaskList (Listas de Tarefas)
      3. TaskApp (Classe com o método principal)
    2. Deve-se usar a interface List para as listas de tarefas
    3. Cada tarefa deve ter título e descrição.
  3. Crie um aplicativo que permita aos usuários gerenciar seus contatos, adicionando, editando e excluindo informações de contato como nome, telefone e e-mail.

    1. Deve-se criar as seguintes classes (no mínimo):
      1. Contact (contato)
      2. Schedule (agenda)
      3. AgendaApp (Classe com o método principal).
    2. Deve-se usar a interface List para as listas de contatos.
  4. Desenvolva um sistema básico de biblioteca, onde os usuários podem cadastrar livros, realizar empréstimos e devoluções.

    1. Deve-se criar as seguintes classes (no mínimo):
      1. Book (livro)
      2. User (usuário)
      3. Library (biblioteca)
      4. LibraryApp (Classe com o método principal)
    2. Deve-se usar a interface List para as listas de livros de um usuário.

<aside> 💡 Estes projetos podem ser feitos usando os conceitos básicos de Orientação a Objetos. Entretanto, esses projetos podem ser expandidos a medida que novos conceitos s ̃ao adquiridos (tanto de OO quanto da linguagem de programação).

Lembre-se de começar com um escopo pequeno e ir incrementando gradualmente ao adquirir novos conhecimentos.

</aside>