suas finanças na pauma da sua mão.
Aplicativo desenvolvido como proposta de projeto de conclusão de disciplina, programação orientada a objetos, disponibilizada no Instituto Federal do Piauí, ministrada pelo professor Rogério Silva.
Pocket Coin é um aplicativo android que destina-se a auxiliar pessoas no controle de gastos. Desenvolvido utilizando como ambiente de desenvolvimento a IDEA Android Studio, Java como linguagem de programação. Entre as principais funcionalidades que o aplicativo disponibiliza, o registro dos gastos separados por mês é a principal a ser destacada, a listagem dos dados do mês atual (incluindo todas as movimentações) é a principal forma de entender e perceber o quanto de dinheiro foi gasto no mês e onde o dinheiro foi gasto, a listagem dos dados acontece por meio de gráficos e mensagens. Caso seja de interesse do usuário, os dados das movimentações de meses anteriores também ficam registrados no banco de dados, sendo assim basta que o usuário acesse a tela de registros para selecionar o mês para a listagem dos dados.
Para que o Pocket Coin funcione de forma estável é preciso que a versão minima do android seja a 22 (Android 5.1).
A persistencia escolhida para este projeto foi o ObjectBox, por ser simples, rápido, e com uma curva de aprendizagem bastante consideravel.
Para que houvesse a listagem dos gráficos no aplicativo, uma lib foi implementada ao app, a lib implementada pertence ao repositório listado abaixo.
Endereço: repositório de onde o gráfico foi utilizado
Para que o cadastro das movimentações fosse realizada de forma fácil, um botão flutuante foi adicionado a tela principal do aplicativo, a principal caracteristica desse botão flutuante é que ele serve para listar outros botões flutuantes que serão utilizados para realizar movimentações. Observe a imagem abaixo para entender a utilização do botão. Endereço: repositório de onde o FloatActionButton Speed Dialog foi utilizado
São sete as classes nas quais o aplicativo funciona, são elas: Usuario, Movimentacao, Carteira, Categoria, Tag, Configuracao, NaturezaDaAcao.
A relação entre as classes esta listada no diagrama abaixo.
O aplicativo possui 10 (dez) atividades, que por sua vez serve para conectar o usuário as funcionalidade do aplicativo e para listar dados do aplicativo ao usuário, como exemplo cadastrar usuario, movimentacao, realizar login e listagem de dados. abaixo será listado o mapa do aplicativo e a descrição de cada atividade.
Serve para que o usuário cadastrado entre no painel de controle particular.
Serve para que um usuário possa se cadastrar fornecendo como dados necessários nome, login, senha e a senha repetida. Caso o login digitado já esteja cadastrado ou se as senhas digitadas forem diferentes o cadastro não acontecerá.
A unica funcionalidade da Main é a listagem do menu lateral, e a exibição de Fragments.
Home é onde os principais dados do usuário será listado, total de receita e despesa no mês, informar onde o dinheiro gasto em maior quantidade, informar também se a receita é maior do que a despesa ou vice-versa, por meio de porcentagem ou valores líquidos.
Todas as movimentações cadastradas no aplicativo será listada na tela de registros, todas as movimentaçẽos são separadas por mês de cadastro, e fica disponivel ao usuário selecionar as movimentações de qual mês.
Tela onde as principais configurações do app será listada, onde a sessão pode ser encerrada.
Tela para cadastrar e listar carteiras, um gráfico faz parte desta tela para mostrar de forma visual onde o dinheiro está investido.
Tela para cadastrar e listar categorias.
Tela para cadastrar e listar tags.
A principal fonte de entrada de dados no aplicativo, funciona para receita ou despesa.
Receita
Despesa
Transfere dinheiro de uma carteira para outra.
Primeiramente, antes de iniciar a codificação do aplicativo, passei um tempo definindo como seria a camada de modelo. Levando em consideração alguns requisitos solicitados pelo professor, tais como persistência de dados e cadastro de usuário, o inicio da modelagem aconteceu a partir da classe usuário, para que logo em seguida a classe Movimentação fosse criada, o resultado final da modelagem pode ser encontrada na sessão Diagrama de classe na parte superior desta página.
A princípio o aplicativo seria desenvolvido utilizando o modelo MVVM, porém a medida que o aplicativo aumentava a quantidade de funções aumentava, e para solucionar este problema de forma que o código fonte do aplicativo fosse legível uma nova camada fi adicionada, a camada de controle (controller), para facilitar a leitura do código fonte e futuramente a manutenção. Mais de uma camada de controle foi adicionada ao projeto pois cada controller possui um alvo, como é o caso do controller Carteira, que possui apenas métodos que serão necessaŕios para manipular o objeto carteira.
A camada View contém todos os arquivos que são Activity.java e Fragment.java
A camada Adapter controla os RecycleViews dispostos no projeto, controlando ainda a interação do usuário com algum determinado item listado.
A camada Dal controla a persistência dos dados, mais especificamente o ObjectBox e o SharedPreferences.
A camada Exceptions, desenvolvida apenas para tornar o código fonte mais legível, através da criação de exceptions personalizados.
A camada Testes contém um arquivo (Main.java), que é responsável por realizar testes na camada de modelo através do terminal.