·

Cursos Gerais ·

Engenharia de Software

Send your question to AI and receive an answer instantly

Ask Question

Preview text

FUNDAMENTOS DA INTELIGÊNCIA ARTIFICIAL Roteiro Aula Prática 2 ROTEIRO DE AULA PRÁTICA NOME DA DISCIPLINA FUNDAMENTOS DA INTELIGÊNCIA ARTIFICIAL Unidade U3 LÓGICA NEBULOSA Aula A4 LÓGICA NEBULOSA EM SISTEMAS ESPECIALISTA Tempo previsto de execução de aula prática 3h CAMPO OBRIGATÓRIO NÃO APARECER EM NENHUM RAP OBJETIVOS campo obrigatório exibição para todos Definição dos objetivos da aula prática Introduzir o uso do Octave na resolução de problemas práticos de Lógica Nebulosa Comparar um programa não baseado em Lógica Nebulosa com um programa baseado nessa técnica apontando as vantagens do segundo tipo em uma classe de problemas propícia para seu uso Resolver um problema simples usando Lógica Nebulosa INFRAESTRUTURA OBRIGATÓRIO SE HOUVER EXIBIÇÃO DOCENTETUTOR Instalações Materiais de consumo Equipamentos NOME DO LABORATÓRIO Laboratório de Informática Equipamentos Computador 1 unid 1 aluno SOLUÇÃO DIGITAL OBRIGATÓRIO SE HOUVER APARECER PARA TODOS Ocatve Simulador GNU Octave é uma linguagem computacional desenvolvida para computação matemática Possui uma interface em linha de comando para a solução de problemas numéricos lineares e nãolineares também é usada em experimentos numéricos Faz parte do projeto GNU é um software livre sob os termos da licença GPL httpsoctaveorg 3 EQUIPAMENTO DE PROTEÇÃO INDIVIDUAL EPI CAMPO OBRIGATÓRIO APARECER PARA TODOS Não se aplica PROCEDIMENTOS PRÁTICOS OBRIGATÓRIO TODOS ProcedimentoAtividade nº 1 Atividade proposta Implantar a solução para um problema simples de cálculo de gorjeta com base em dois parâmetros SEM USAR A LÓGICA NEBULOSA PARA FINS DE COMPARAÇÃO A qualidade da comida servida A Qualidade do serviço provido pelo restaurante Como o julgamento de bom e ruim é difuso a Lógica Nebulosa é uma ferramenta adequada para atacar o problema do cálculo assumindo que podemos atribuir menos de 10 quando estamos insatisfeitos e mais de 10 quando formos positivamente surpreendidos pela comida eou pelo serviço Em seguida o mesmo problema com os mesmos parâmetros deverá ser resolvido usando a Lógica Nebulosa Imaginese em um restaurante onde a gorjeta deve ser especificada pelo cliente que inclusive discrimina o valor a ser cobrado no cartão como está cada vez mais comum em restaurantes nos dias de hoje nas capitais e nas grandes cidades Para gerarmos o valor da gorjeta devemos fazer um pequeno cálculo mental em função da qualidade da comida e também do serviço prestado pelo estabelecimento Imaginemos que Se a comida foi de qualidade ruim ou fomos mal atendidos vamos deixar uma gorjeta pequena mais próxima de 5 Se o serviço for bom vamos deixar uma gorjeta mediana mais próxima de 10 Se a comida ou o serviço nos surpreenderam positivamente vamos deixar uma gorjeta generosa mais próxima de 15 Vamos ainda graduar a comida e o serviço em uma escala de 0 a 10 Com esses parâmetros em mente poderíamos criar um gráfico com a gorjeta a ser deixada conforme a Figura 1 a seguir 4 Figura 1 Gráfico de Definição da Gorjeta com base na qualidade da comida e do serviço Fonte autor Nesta primeira fase do exercício vamos implementar a solução do problema proposto usando os comandos procedurais do Octave sem utilizar as ferramentas de Lógica Nebulosa para fins de comparação Agora usando a mesma definição de grupos utilizada nos passos anteriores você deverá criar o mesmo resultado por meio da Lógica Nebulosa Alguns passos serão seguidos para que esse resultado seja obtido a saber 1 Definir as entradas e saídas do procedimento 2 Criar Funções que determinam o quanto um elemento pertence a um conjunto 3 Criar regras para combinar os dados 4 Simular o sistema de Lógica Nebulosa resultante Checklist Octave está funcionando corretamente Criar as variáveis necessárias Inserir as regras corretamente Gerar valores para a gorjeta com base em diferentes qualidades de serviço e comida Registrar seus resultados em um relatório 5 RESULTADOS obrigatório aparecer para todos Resultados de Aprendizagem Resolução de um problema usando Lógica Nebulosa ESTUDANTE VOCÊ DEVERÁ ENTREGAR não obrigatório aparecer para todos Descrição orientativa sobre a entregada da comprovação da aula prática Entrega do relatório com os resultados obtidos e do código desenvolvido REFERÊNCIAS BIBLIOGRÁFICAS não obrigatório aparecer para todos Descrição em abnt das referências utilizadas FUNDAMENTOS DA INTELIGÊNCIA ARTIFIAL Roteiro Aula Prática 2 ROTEIRO DE AULA PRÁTICA NOME DA DISCIPLINA FUNDAMENTOS DA INTELIGÊNCIA ARTIFICIAL Unidade U4 REDES NEURAIS ARTIFICIAIS Aula A4 ALGORITMOS DE REDES NEURAIS Tempo previsto de execução de aula prática 3h CAMPO OBRIGATÓRIO NÃO APARECER EM NENHUM RAP OBJETIVOS campo obrigatório exibição para todos Definição dos objetivos da aula prática Compreensão e desenvolvimento de um rede neural utilizando a linguagem Python INFRAESTRUTURA OBRIGATÓRIO SE HOUVER EXIBIÇÃO DOCENTETUTOR Instalações Materiais de consumo Equipamentos NOME DO LABORATÓRIO Laboratório de Informática Equipamentos Computador 1 unid 1 aluno SOLUÇÃO DIGITAL OBRIGATÓRIO SE HOUVER APARECER PARA TODOS Infraestrutura mínima necessária para execução Jdoodle O JDoodle Python é uma plataforma online que oferece um ambiente de desenvolvimento integrado IDE para programação em Python diretamente no navegador Ideal para iniciantes e programadores experientes o JDoodle Python permite escrever executar e compartilhar código Python de maneira simples e eficiente Com recursos como realce de sintaxe sugestões de código e feedback imediato os usuários podem testar e depurar seus programas com facilidade Além disso o JDoodle Python suporta uma variedade de bibliotecas e módulos Python facilitando o desenvolvimento de projetos complexos e a exploração de novas funcionalidades da linguagem httpswwwjdoodlecompython3programmingonline 3 EQUIPAMENTO DE PROTEÇÃO INDIVIDUAL EPI CAMPO OBRIGATÓRIO APARECER PARA TODOS Não se Aplica PROCEDIMENTOS PRÁTICOS OBRIGATÓRIO TODOS ProcedimentoAtividade nº 1 Atividade proposta Implemente uma rede neural de uma camada utilizando a função de ativação sigmoide O objetivo é treinar a rede para realizar a classificação binária Você receberá uma matriz de entrada e uma matriz de saída desejada e deverá ajustar os pesos da rede sinapse através do processo de aprendizado supervisionado Passos do Exercício Importação das Bibliotecas Necessárias Utilize a biblioteca NumPy para realizar operações matemáticas e manipulações de arrays Definição da Função Sigmoide Implemente a função de ativação sigmoide que será utilizada tanto para a ativação quanto para a derivada no cálculo do gradiente Definição das Entradas e Saídas Crie a matriz de entrada X e a matriz de saída y Inicialização dos Pesos Inicialize os pesos da sinapse com valores aleatórios Treinamento da Rede Neural Implemente o loop de treinamento que ajustará os pesos da sinapse O treinamento deve ser executado por 10000 iterações No loop de treinamento execute os seguintes passos Realize a propagação para frente calculando as saídas Calcule o erro Calcule o delta ajuste dos pesos utilizando a derivada da função sigmoide Atualize os pesos da sinapse Exibição dos Resultados Após o treinamento imprima a saída da rede 4 Checklist Entender o conceito de redes neurais artificiais Implementar através do Python uma RNA simples Realizar e entender os resultados da quantidade de treinamentos RESULTADOS obrigatório aparecer para todos Resultados de Aprendizagem Compreenda a implementação de uma RNA e o conceito de treinamento ESTUDANTE VOCÊ DEVERÁ ENTREGAR não obrigatório aparecer para todos Descrição orientativa sobre a entregada da comprovação da aula prática Código desenvolvido REFERÊNCIAS BIBLIOGRÁFICAS não obrigatório aparecer para todos Descrição em abnt das referências utilizadas LINGUAGEM ORIENTADA A OBJETOS Roteiro Aula Prática 2 ROTEIRO DE AULA PRÁTICA NOME DA DISCIPLINA Linguagem Orientada a Objetos OBJETIVOS Definição dos objetivos da aula prática Fixar os conceitos de programação orientada a objetos Empregar práticas de instanciação de classes Java Utilizar métodos e atributos em Java Utilizar pacotes da linguagem java para implementação de software com paradigma de orientação a objetos INFRAESTRUTURA Instalações Computador Software IDE NetBeans com Java JDK instalado e configurado Materiais de consumo Descrição Quantidade de materiais por procedimentoatividade Software Sim X Não Em caso afirmativo qual Pago Não Pago X Tipo de Licença Freeware Descrição do software NetBeans é uma IDE de desenvolvimento gratuita e de código aberto Útil no desenvolvimento de softwares utilizando as linguagens Javascript HTML5 PHP CC e Java Ferramenta multiplataforma podendo ser instalada no Linux macOS e Windows Equipamento de Proteção Individual EPI NSA PROCEDIMENTOS PRÁTICOS Será necessário ter previamente instalado e configurado o ambiente de desenvolvimento com IDE NetBeans para a construção de um projeto novo Sugerese utilizar o nome gerenciaBanco para a aplicação Para iniciar é necessário criar um novo projeto A criação do novo projeto bem como todas as configurações para seu perfeito funcionamento estão descritas na seção Procedimentos para realização da atividade que segue logo abaixo 3 Atividade proposta Utilizando os principais conceitos do paradigma de Orientação a Objetos crie uma pequena aplicação de gerenciamento bancário que possibilite ao usuário informar seu nome sobrenome e CPF Além disso a aplicação deverá possibilitar ao usuário consultar saldo realizar depositos e saques Esses procedimentos devem se repetir até que o usuário escolha encerrar o uso da aplicação Procedimentos para a realização da atividade 1 Vá ao menu File e em seguida clique sobre New Project Na sequência devese escolher a categoria Java with Maven Java Application Veja Fonte Elaborado peloa Autor 2 Em seguida devese avançar e na tela seguinte dar o nome ao projeto Como já mencionado sugere utilizar o nome gerenciaBanco Veja 4 Fonte Elaborado peloa Autor 3 Construa a aplicação em um único arquivo do tipo java main Class Isso porque o método principal que é chamado pela maquina virtual deve estar nesse mesmo arquivo 4 No seu código você deverá construir basicamente a a classe principal b classe para para dados pessoais e operações bancárias c método para exibição do menu 5 Para a exibição do menu será necessário utilizar uma estrutura de decisão para tratamento das escolhas do usuário Sugerese utilizar a estrutura dowhile e switchcase Checklist Instalação do NetBeans Ambiente de desenvolvimento NetBeans e JDK devidamente configurado e funcionando Criação de um projeto do tipo Java Application em Java with Maven Escrita do código em Java utilizandose de conceitos da programação orientada a objetos RESULTADOS Resultados da aula prática Criação configuração e implementação de projeto java application configurado Aplicação de gerencia de banco com procedimentos básicos como informação de usuário nome sobrenome e CPF e procedimentos bancários como consulta de saldo depósito e retirada e interrupção da execução do código contendo uma mensagem de despedida Programação e Desenvolvimento de Banco de Dados Roteiro Aula Prática 2 ROTEIRO DE AULA PRÁTICA NOME DA DISCIPLINA Programação e Desenvolvimento de Banco de Dados OBJETIVOS Definição dos objetivos da aula prática Criar um banco de dados utilizando a linguagem SQL e realizar operações de manipulação e acesso aos dados INFRAESTRUTURA Instalações MySQL Community Server MySQL Workbench Materiais de consumo Descrição Quantidade de materiais por procedimentoatividade Computador 1 por aluno Software Sim X Não Em caso afirmativo qual MySQL Community Server MySQL Workbench Pago Não Pago X Tipo de Licença Freeware Descrição do software O MySQL Workbench é uma ferramenta visual de design de banco de dados que integra desenvolvimento administração design criação e manutenção de SQL em um único ambiente de desenvolvimento integrado para o sistema de banco de dados MySQL Este software faz parte do pacote de instalação do MySQL Community Server Equipamento de Proteção Individual EPI NSA PROCEDIMENTOS PRÁTICOS Criação de banco de dados utilizando o programa o MySQL Workbench MySQL Community Server Atividade proposta Criação da estrutura de um banco de dados tabelas com a linguagem SQL por meio de um diagrama entidade relacionamento prédefinido Inserir dados no banco de dados criado Consultar os dados armazenados por meio da criação de uma visão View 3 Criar um relatório no final da atividade Procedimentos para a realização da atividade Etapa 1 Crie uma base de dados chamada Loja com o MySQL Server por meio do software MySQL Workbench Adicione as estruturas de dados neste banco utilizando os comandos de definição de dados DDL da linguagem SQL e respeitando o modelo definido no DER da Figura a seguir Legenda Na criação do banco de dados da figura respeite as seguintes regras As chaves primárias devem ser colocadas todas como autoincremento Respeite os relacionamentos tipos precisões e restrições de não nulo O campo Situação da tabela ContaReceber deve ser do tipo ENUM e possuir apenas os valores 1 2 ou 3 sendo 1 Conta registrada 2 Conta cancelada 3 Conta paga Etapa 2 Crie um script chamado inserirsql contento os comandos de manipulação DML com o objetivo de popular todas as tabelas existentes na base de dados ou seja inserir dados nas tabelas Insira ao menos três registros por tabela 4 Etapa 3 Por meio dos comandos de consulta DQL da linguagem SQL elabore um script chamado consultasql que irá conter uma visão VIEW que retornará todas as contas que ainda não foram pagas Situação 1 devendo conter as seguintes informações ID da conta a receber Nome e CPF do Cliente associado à conta Data de vencimento da conta Valor da conta Checklist Instalar o sistema MySQL Community Server e MySQL Workbench Elaborar o modelo físico implementação da estrutura do banco de dados proposto pelo DER no software MySQL Workbench Criar o script inserirsql para inserir dados em todas as tabelas criadas Elaborar o script consultasql que irá conter uma visão que retornará todas as contas que ainda não foram pagas RESULTADOS Resultados da aula prática Elaborar um relatório que deverá conter introdução métodos resultados e conclusão sobre o assunto desenvolvido em aula prática para compreender como foram desenvolvidas todas as etapas da atividade Inserir no relatório todos os scripts utilizados na resolução desta atividade prática Relatório de Aula Prática Fundamentos da Inteligência Artificial Denilson 30 de outubro de 2024 Sumário 1 Introdução 2 2 Objetivo 2 3 Metodologia 2 31 Configuração do Ambiente 2 32 Solução do Problema com Lógica Nebulosa 2 33 Implementação de Rede Neural em Python 3 4 Resultados 4 5 Conclusão 4 6 Referências 6 1 1 Introdução Este relatório documenta o desenvolvimento de uma atividade prática na disciplina de Fundamentos da Inteligência Artificial cujo objetivo foi aplicar conceitos de lógica nebulosa e redes neurais artificiais utilizando as linguagens GNU Octave e Python A atividade abordou a resolução de problemas com lógica nebulosa e a implementação de uma rede neural para classificação binária 2 Objetivo O objetivo da prática foi introduzir a aplicação de lógica nebulosa em proble mas com julgamentos difusos além de implementar uma rede neural simples em Python para realizar uma tarefa de classificação binária A atividade buscou evidenciar as diferenças entre métodos baseados em lógica nebulosa e métodos tradicionais bem como o conceito de redes neurais artificiais 3 Metodologia Para esta prática foram utilizadas as ferramentas GNU Octave e Python A lógica nebulosa foi aplicada a um problema de cálculo de gorjetas baseado na qualidade do serviço e da comida Em seguida uma rede neural de camada única foi implementada em Python utilizando a função de ativação sigmoide e aprendizado supervisionado 31 Configuração do Ambiente As ferramentas configuradas para a realização da atividade foram GNU Octave para experimentos numéricos e lógica nebulosa Python com biblioteca NumPy para a implementação de redes neurais 32 Solução do Problema com Lógica Nebulosa A primeira parte da atividade propôs a resolução de um problema simples de cálculo de gorjeta com e sem uso de lógica nebulosa Os parâmetros para o cálculo incluíam a qualidade da comida e do serviço ambos avaliados em uma escala de 0 a 10 Gorjeta de 5 para serviço eou comida insatisfatórios 2 Gorjeta de 10 para serviço eou comida de qualidade média Gorjeta de 15 para serviço eou comida que superou as expectativas A lógica nebulosa foi utilizada para definir regras de inferência baseadas nesses parâmetros e gerar uma saída mais gradativa para a gorjeta Listing 1 Implementação da Lógica Nebulosa em GNU Octave Definicao das v a r i a v e i s qualidadecomida 7 Qualidade da comida escala de 0 a 10 qualidadeservico 8 Qualidade do servico escala de 0 a 10 Regras simples para calculo da gorjeta i f qualidadecomida 5 qualidadeservico 5 gorjeta 5 e l s e i f qualidadecomida 5 qualidadecomida 8 qualidadeservico 5 qualidadeservico 8 gorjeta 10 else gorjeta 15 endif fprintf Gorjeta sugerida d gorjeta 33 Implementação de Rede Neural em Python A segunda parte da prática consistiu na implementação de uma rede neural de camada única para realizar classificação binária A rede neural foi treinada com um conjunto de dados para ajustar os pesos da sinapse utilizando a função de ativação sigmoide Listing 2 Implementação da Rede Neural em Python import numpy as np Definicao da funcao sigmoide def sigmoid x return 1 1 np expx Funcao derivada da sigmoide def sigmoidderivative x return x 1 x 3 Entradas e saidas da rede entradas np array 0 0 0 1 1 0 1 1 saidas np array 0 1 1 0 I n i c i a l i z a c a o dos pesos com valores a l e a t o r i o s pesos 2 np random random 2 1 1 Treinamento da rede neural for epoca in range 10000 camadaentrada entradas camadasaida sigmoid np dot camadaentrada pesos erro saidas camadasaida ajustes erro sigmoidderivative camadasaida pesos np dot camadaentrada T ajustes print Saidaapos treinamento print camadasaida 4 Resultados Após a execução das atividades práticas observouse que O uso de lógica nebulosa no GNU Octave possibilitou a definição de regras de inferência para o cálculo de gorjeta de maneira difusa propor cionando uma tomada de decisão mais próxima do julgamento humano A implementação da rede neural em Python demonstrou a capacidade de classificação binária com base no aprendizado supervisionado ajus tando os pesos da sinapse através de iterações A lógica nebulosa e a rede neural foram testadas com diferentes entradas e forneceram os resultados esperados 5 Conclusão A prática possibilitou a aplicação de conceitos fundamentais de inteligên cia artificial como lógica nebulosa e redes neurais artificiais A abordagem prática demonstrou como as redes neurais podem ser utilizadas em tarefas de classificação e como a lógica nebulosa permite uma tomada de decisão 4 mais flexível baseada em graus de pertencimento Ambas as técnicas são essenciais para aplicações onde a interpretação e adaptação dos resultados são necessárias 5 6 Referências RUSSELL S NORVIG P Inteligência Artificial Pearson 2016 HAYKIN S Redes Neurais Princípios e Prática Bookman 2001 6 Relatório de Aula Prática Programação e Desenvolvimento de Banco de Dados Denilson 30 de outubro de 2024 Sumário 1 Introdução 2 2 Objetivo 2 3 Metodologia 2 31 Configuração do Ambiente 2 32 Estrutura do Código SQL 2 321 Criação da Estrutura do Banco de Dados 3 322 Inserção de Dados 3 323 Criação de uma Visão para Consulta 4 4 Resultados 4 5 Conclusão 4 6 Referências 5 1 1 Introdução Este relatório apresenta o desenvolvimento de uma atividade prática na dis ciplina de Programação e Desenvolvimento de Banco de Dados cujo objetivo principal foi consolidar os conhecimentos em criação e manipulação de bancos de dados relacionais utilizando SQL A prática incluiu a criação de um banco de dados definição de tabelas com restrições inserção de dados e criação de uma visão para consulta específica 2 Objetivo O objetivo da atividade foi aplicar os conceitos de SQL para definir a es trutura e manipular dados em um banco de dados relacional A atividade envolveu a criação de tabelas seguindo um modelo entidaderelacionamento ER inserção de dados nas tabelas e a elaboração de uma visão para con sulta de informações específicas 3 Metodologia Para realizar a atividade foi utilizada a ferramenta MySQL Workbench integrada ao MySQL Community Server As etapas principais envolveram a criação de um banco de dados definição das tabelas com chaves primárias e restrições de integridade inserção de dados nas tabelas e criação de uma visão com filtros específicos 31 Configuração do Ambiente Para a realização da prática foram seguidas as seguintes configurações Instalação do MySQL Community Server e do MySQL Work bench Criação de uma base de dados chamada Loja Configuração de tabelas seguindo o modelo ER fornecido 32 Estrutura do Código SQL Os comandos SQL utilizados para criação do banco de dados inserção de dados e criação da visão foram divididos em três scripts 2 321 Criação da Estrutura do Banco de Dados No script de criação foram definidos os comandos de DDL para estrutura do banco de dados Loja incluindo tabelas e chaves primárias Listing 1 Script de Criação do Banco de Dados CREATE DATABASE Loja USE Loja CREATE TABLE Cliente ID INT AUTOINCREMENT PRIMARY KEY Nome VARCHAR50 NOT NULL CPF CHAR11 NOT NULL CREATE TABLE ContaReceber ID INT AUTOINCREMENT PRIMARY KEY ClienteID INT Valor DECIMAL10 2 DataVencimento DATE Situacao ENUM 1 2 3 DEFAULT 1 FOREIGN KEY ClienteID REFERENCES Cliente ID 322 Inserção de Dados No script de inserção foram utilizados comandos DML para popular as tabelas com dados de exemplo Listing 2 Script de Inserção de Dados INSERT INTO Cliente Nome CPF VALUES Joao Silva 12345678901 MariaSouza 98765432100 Carlos Pereira 11122233344 INSERT INTO ContaReceber ClienteID Valor DataVencimento Situacao VALUES 1 50000 20241101 1 2 120050 20241110 1 3 30075 20241115 2 3 323 Criação de uma Visão para Consulta A visão foi criada para exibir contas a receber que ainda não foram pagas Situação 1 utilizando um comando DQL Listing 3 Script de Criação da Visão CREATE VIEW ContasNaoPagas AS SELECT ContaReceber ID Cliente Nome Cliente CPF ContaReceber DataVencimento ContaReceber Valor FROM ContaReceber JOIN Cliente ON ContaReceber ClienteID Cliente ID WHERE ContaReceber Situacao 1 4 Resultados A aplicação dos scripts resultou na criação de um banco de dados funcional que atende aos requisitos da atividade As tabelas foram estruturadas cor retamente e os dados foram inseridos conforme planejado A visão criada para listar contas não pagas foi testada e retornou as informações esperadas permitindo a consulta fácil de contas pendentes no banco de dados 5 Conclusão A atividade prática possibilitou a aplicação dos conceitos fundamentais de SQL para criação e manipulação de um banco de dados relacional Através desta prática foi possível reforçar os conhecimentos de definição e manipula ção de dados em SQL além de exercitar o uso de ferramentas como o MySQL Workbench para desenvolvimento e administração de bancos de dados 4 6 Referências ELMASRI R NAVATHE S B Sistemas de Banco de Dados Pear son 2011 DATE C J Introdução a Sistemas de Bancos de Dados Campus 2004 5 Relatório de Aula Prática Linguagem Orientada a Objetos Denilson 30 de outubro de 2024 Sumário 1 Introdução 2 2 Objetivo 2 3 Metodologia 2 31 Configuração do Ambiente 2 32 Estrutura do Código 3 321 Classe Principal Main 3 322 Classe Banco 4 323 Classe Cliente 6 4 Resultados 7 5 Conclusão 7 6 Referências 8 1 1 Introdução Este relatório descreve o desenvolvimento de uma aplicação bancária simples com o objetivo de aplicar conceitos de orientação a objetos OO em Java abordados na disciplina de Linguagem Orientada a Objetos O sistema per mite gerenciar clientes e realizar operações bancárias básicas como consulta de saldo depósitos e saques em uma interface de linha de comando 2 Objetivo O objetivo desta atividade prática foi consolidar conhecimentos de OO em Java especificamente os conceitos de encapsulamento modularização he rança e polimorfismo A aplicação desenvolvida simula um sistema bancário permitindo ao usuário interagir com as funcionalidades de um banco digital através de operações programadas 3 Metodologia Para o desenvolvimento do sistema bancário utilizouse a IDE NetBeans com o JDK Java instalado O projeto foi estruturado em três classes principais Main Classe principal que controla o fluxo da aplicação e apresenta o menu de opções Banco Classe que gerencia os dados e operações bancárias como cadastro de clientes e busca de dados Cliente Classe que representa os dados do cliente e contém métodos para depósito e saque Para cada uma das classes foram elaborados métodos que implementam as funcionalidades exigidas O código foi projetado para atender ao para digma de orientação a objetos incluindo o uso de métodos específicos para manipulação de dados e operações bancárias 31 Configuração do Ambiente Primeiramente configurouse o ambiente de desenvolvimento Instalação do Java JDK e da IDE NetBeans 2 Criação de um novo projeto Java no NetBeans do tipo Java Appli cation Configuração do projeto para conter as classes descritas a seguir 32 Estrutura do Código A estrutura do código foi organizada para promover a reutilização e encap sulamento de acordo com os princípios da OO 321 Classe Principal Main A classe Main contém o método principal que exibe o menu de opções para interação do usuário com o sistema Listing 1 Classe Main import java u t i l Scanner public class Main public static void main String args Scanner scanner new Scanner System in Banco banco new Banco int opcao do System out println Sistema Bancario System out println 1 Cadastrar Cliente System out println 2 Consultar Saldo System out println 3 Depositar System out println 4 Sacar System out println 5 Sair System out print Escolha umaopcao opcao scanner nextInt switch opcao case 1 banco cadastrarCliente case 2 banco consultarSaldo case 3 banco depositar case 4 banco sacar case 5 System out println Encerrandoo sistema default System out println 3 Opcao invalida Tentenovamente while opcao 5 scanner c l o s e 322 Classe Banco A classe Banco gerencia os dados dos clientes e contém os métodos que exe cutam operações bancárias Listing 2 Classe Banco import java u t i l ArrayList import java u t i l Scanner public class Banco private final ArrayListCliente c l i e n t e s new ArrayList private final Scanner scanner new Scanner System in public void cadastrarCliente System out print Nome String nome scanner nextLine System out print Sobrenome String sobrenome scanner nextLine System out print CPF String cpf scanner nextLine Cliente c l i e n t e new Cliente nome sobrenome cpf c l i e n t e s add c l i e n t e System out println Cliente cadastrado com sucesso public void consultarSaldo Cliente c l i e n t e buscarCliente i f c l i e n t e null System out p r i n t f Saldo atual R2 fn c l i e n t e getSaldo 4 public void depositar Cliente c l i e n t e buscarCliente i f c l i e n t e null System out print Valordo deposito double valor scanner nextDouble c l i e n t e depositar valor System out println Deposito realizado com sucesso public void sacar Cliente c l i e n t e buscarCliente i f c l i e n t e null System out print Valordosaque double valor scanner nextDouble i f c l i e n t e sacar valor System out println Saque realizado com sucesso else System out println Saldo i n s u f i c i e n t e private Cliente buscarCliente System out print Digite oCPFdo c l i e n t e String cpf scanner next for Cliente c l i e n t e c l i e n t e s i f c l i e n t e getCpf equals cpf return c l i e n t e System out println Cliente nao encontrado return null 5 323 Classe Cliente A classe Cliente armazena as informações do cliente e inclui métodos para depósito e saque Listing 3 Classe Cliente public class Cliente private String nome private String sobrenome private String cpf private double saldo public Cliente String nome String sobrenome String cpf this nome nome this sobrenome sobrenome this cpf cpf this saldo 0 0 public String getCpf return cpf public double getSaldo return saldo public void depositar double valor i f valor 0 saldo valor else System out println Valorde deposito invalido public boolean sacar double valor i f valor 0 saldo valor saldo valor return true return false 6 4 Resultados Após a implementação das classes e execução do código foi possível testar todas as funcionalidades da aplicação com sucesso As operações de cadastro de clientes consulta de saldo depósitos e saques foram verificadas e o sistema respondeu conforme esperado para entradas válidas e inválidas 5 Conclusão A implementação do sistema bancário em Java possibilitou a aplicação prá tica dos conceitos de programação orientada a objetos incluindo encapsula mento modularização e uso de classes e métodos O sistema desenvolvido é funcional e proporciona uma interface básica para o gerenciamento de contas bancárias demonstrando o uso de técnicas de desenvolvimento orientado a objetos para organização e reuso de código 7 6 Referências DEITEL H M DEITEL P J Java como programar Pearson Pren tice Hall 2016 HORSTMANN C S CORNELL G Core Java Volume IFundamentals Pearson 2015 8