O Desafio
O desafio na criação desse projeto começa em compreender como funciona o paradigma da orientação a objeto, que séria nada mais de que programação de software baseado na abstração digital do mundo real, através da composição e interação entre diversas unidades chamadas de 'objetos' e as classes (representando objetos reais contendo identidade, propriedades e, métodos); baseado em quatro principais componentes da programação: abstração digital, encapsulamento, herança e, polimorfismo.
Além disso, também temos a parte de codificação que foi um desafio, por em prática o conhecimento de orientação a objeto separando cada parte do sistema em classes diferentes, assim como suas heranças, encapsulamentos e seus polimorfismo, para poder seguir a boa pratica na programação orientada a objeto
Estruturando o Código
Para a estruturação do código separamos o sistema em 3 objetos, apostas, clientes e partidas, os clientes possuem alguns atributos, como: id, nome, saldo, se ele é VIP ou não, e as apostas que ele fez, além também das funções para auxílio, como, por exemplo, adicionar créditos e realizar apostas. As partidas seguem a mesma estrutura, possuem um id, o nome dos times que estão jogando, e o placar do jogo, ela também possui funções auxiliares como, por exemplo, para definir o resultado da partida.
Já para a parte da aposta, ela possui um objeto pai, que possui as funções gerais e sua definição, que possui: o objeto do cliente e da partida, o total apostado e sua situação, ela também possui algumas funções para auxílio do sistema como, por exemplo, a função para fazer pagamento da aposta. E para as classes filhas, elas herdam as funções e acabam fazendo alterações para cada tipo de aposta, assim como no seu construtor.