{"id":20976134,"url":"https://github.com/igoraugust0/projetofinalpoo1","last_synced_at":"2025-10-08T18:56:27.638Z","repository":{"id":150403336,"uuid":"593398943","full_name":"IgorAugust0/ProjetoFinalPOO1","owner":"IgorAugust0","description":null,"archived":false,"fork":false,"pushed_at":"2023-02-02T00:04:17.000Z","size":7587,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-13T09:19:14.375Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IgorAugust0.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-25T22:38:40.000Z","updated_at":"2023-03-17T23:42:17.000Z","dependencies_parsed_at":"2023-04-25T16:20:10.045Z","dependency_job_id":null,"html_url":"https://github.com/IgorAugust0/ProjetoFinalPOO1","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/IgorAugust0/ProjetoFinalPOO1","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IgorAugust0%2FProjetoFinalPOO1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IgorAugust0%2FProjetoFinalPOO1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IgorAugust0%2FProjetoFinalPOO1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IgorAugust0%2FProjetoFinalPOO1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IgorAugust0","download_url":"https://codeload.github.com/IgorAugust0/ProjetoFinalPOO1/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IgorAugust0%2FProjetoFinalPOO1/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265080256,"owners_count":23708121,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T04:50:29.446Z","updated_at":"2025-10-08T18:56:22.587Z","avatar_url":"https://github.com/IgorAugust0.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ProjetoFinalPOO1\n\n# Trabalho Final: Instituição Financeira\n\n\u003e Perguntas:\n\u003e \n\u003e \n\u003e 1- Implementar usando a linguagem Java o sistema descrito a partir do conjunto de requisitos a seguir.\n\u003e \n\u003e Situação problema: Sistema para uma Instituição Financeira\n\u003e \n- [x]  Para a instituição financeira é muito importante manter um cadastro de todas as contas que foram criadas na instituição. No momento de criação da conta é importante associar uma senha a ela. Essa senha será solicitada antes da execução de qualquer transação.\n- [x]  Para cada conta criada é importante saber se a conta está ativa ou já foi desativada (ou seja, o cliente encerrou a conta). Isso ajudará a filtrar as pesquisas. Ainda que um cliente encerre uma conta no banco, é importante manter o registro da conta na base de dados, mas com um indicativo de que ela não está ativa.\n- [x]  As contas da instituição podem pertencer às seguintes categorias: corrente, poupança e salário.\n- [x]  Para as contas da categoria corrente, as seguintes informações devem ser armazenadas: nro da conta, saldo atual, data de abertura, data da última movimentação, limite do cheque especial e valor da taxa administrativa.\n- [x]  Para as contas da categoria poupança as seguintes informações devem ser armazenadas: nro da conta, saldo atual, data de abertura, data da última movimentação, rendimento do mês atual.\n- [x]  Para as contas da categoria salário as seguintes informações devem ser armazenadas: nro da conta, saldo atual, data de abertura, data da última movimentação, limite para saque e limite para transferência.\n- [x]  Os clientes da instituição devem ser registrados com as seguintes informações: CPF, nome, endereço completo, estado civil, escolaridade, data de nascimento.\n- [x]  É importante também saber em qual agência o cliente foi cadastrado.\n- [x]  As agências bancárias devem ser previamente cadastras, sendo que cada agência possui um número, um nome fictício e um endereço, sendo que os campos cidade, estado e bairro são campos frequentemente usados para se realizar buscas por agências.\n- [x]  Cada agência possui um gerente, que é um funcionário nomeado para tal tarefa. Cada gerente pode gerenciar apenas uma agência.\n- [x]  Os gerentes são funcionários da empresa que precisam ter armazenados alguns atributos específicos: data de ingresso na carreira de gerente, agência que ele gerencia e se possui curso de formação básico em gerência.\n- [x]  Para os funcionários da agência é preciso armazenar as seguintes informações: CPF, nome completo, nro da carteira de trabalho, RG, data de nascimento, endereço, sexo, estado civil, cargo na empresa (existem diferentes cargos além do gerente) , salário e ano de ingresso.\n- [x]  Toda conta bancária deve ter no mínimo um cliente associado. No entanto, uma conta pode ser conjunta. Nesse caso, é possível ter dois clientes associados à mesma conta. Um mesmo cliente pode ter diferentes contas bancárias.\n- [x]  Toda conta bancária está ligada a uma agência bancária, ou seja, a agência na qual ela foi criada.\n- [x]  Uma vez que um cliente tenha uma conta bancária ele pode efetuar diferentes movimentações financeiras, conhecidas como transações bancárias. Cada transação bancária está relacionada a uma conta bancária. Além disso, é importante armazenar a data em que a transação foi realizada, o valor da transação e o canal onde foi feito a transação (internet banking, caixa eletrônico ou caixa físico). A realização de uma transação pode impactar no saldo da conta.\n- [x]  Cada transação possui um tipo. Os tipos de transação atualmente disponíveis são: saque, depósito, consultar saldo e efetuar pagamento. Em cada uma dessas transações é importante armazenar apenas o valor da transação. Com o objetivo de simplificar o trabalho não vamos armazenar os atributos específicos de cada tipo de transação, embora esse seja um requisito interessante em problemas reais.\n- [x]  Implemente em Java, usando técnicas de encapsulamento em **todo** o **Sistema de Instituição Financeira** (gets and sets)\n    - [x]  Para validação de cpf, implemente o algoritmo real de validação de cpf (que é encontrado facilmente na Internet, implementado nas mais diversas linguagens).\n- [x]  Considerando o uso de construtores:\n    - [x]  Crie um construtor para a classe cliente que receba como parâmetro o seu nome e o seu CPF.\n    - [x]  Crie um construtor default (sem parâmetros) explicitamente para a classe cliente.\n    - [x]  Crie um construtor para a classe Transação de forma que este receba como parâmetro a conta e a data. Desta forma, obriga-se a associação da transação com a conta corrente, que já foi previamente criada no sistema.\n    - [x]  Crie construtores para cada uma das classes do problema de forma a atribuir valor aos atributos da classe com os parâmetros recebidos. Toda classe deve ter pelo menos um construtor criado por você.\n- [x]  Considerando os casos de herança, implemente todas as situações de herança descritas nos requisitos\n    - [x]  Lembre-se que existe um relacionamento de herança entre a classe conta (superclasse) e as subclasses que indicam cada tipo de conta bancária.\n    - [x]  Lembre-se também de implementar a herança entre o funcionário e o gerente\n    - [x]  Uma herança possível de ser implementada é a que representa as pessoas do sistema e tem como subclasses cliente e funcionários. Implemente também essa herança.\n    - [x]  Implemente um atributo estático para armazenar a comissão recebida por um gerente para gerenciar uma agência.\n- [x]  Como este atributo estático é encapsulado (*private*), crie os métodos get e set para manipulá-lo. Os métodos devem ser estáticos.\n- [x]  Implemente um método calcular Salario específico para funcionários, calculado por meio do seu salário base mais um adicional de 10% caso ele tenha mais que 15 anos de empresa.\n- [x]  Implemente um método calcular Salario específico para gerentes, calculado pela soma do salário de um funcionário comum acrescido pela comissão recebida por gerenciar uma agência bancária\n    - [x]  **5-** Implemente a realização de uma transação, como uma das possibilidades: sacar um valor, depositar um valor, consultar saldo e efetuar pagamento. Lembre-se, só é possível sacar e efetuar pagamento se existir saldo suficiente em conta. O depósito deve receber um valor maior que zero.\n- [x]  Classes Abstratas\n    - [x]  Implemente a classe Pessoa como abstrata.\n- [x]  b. Invente um requisito no problema que justifique a criação de uma classe ou um método abstrato e sua implementação nas subclasses. Não esqueça de descrever o requisito\n- [x]  Exceptions \u0026 Interfaces\n    - [x]  Implemente pelo menos uma nova exceção e utilize em seu código.\n    - [x]  Crie uma interface e use em pelo menos duas classes não relacionadas\n\n![autoUML2](https://user-images.githubusercontent.com/79866605/216089538-9525402a-d906-4a14-ab67-f233e2a217eb.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figoraugust0%2Fprojetofinalpoo1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figoraugust0%2Fprojetofinalpoo1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figoraugust0%2Fprojetofinalpoo1/lists"}