Prévia do material em texto
CENTRO FEDERAL DE EDUCAÇÃO TECNOLOGICA DE MINAS GERAIS UNIDADE CURVELO GRADUAÇÃO EM ENGENHARIA CIVIL JÚLIO CÉSAR LOPES DE SÁ LAIANE RABELO BRAGA ORIENTAÇÃO A OBJETOS EM JAVA Trabalho final CURVELO 2023 2 JÚLIO CÉSAR LOPES DE SÁ LAIANE RABELO BRAGA SISTAGRO - SISTEMA DE GESTÃO AGROPECUÁRIA Automatizando a Administração com Java: Controle de Gados, Produtos e Custos na Atividade Agropecuária. Trabalho final desenvolvido nas disciplinas de Programação de computadores 2 e laboratório de programação 2 como requisito parcial para provação nas disciplinas. Professor(a): Dra. Karla De Souza Torres CURVELO 2023 3 SUMÁRIO 1. INTRODUÇÃO .................................................................................. 5 2. DESENVOLVIMENTO ....................................................................... 5 3. ESTRUTURA .................................................................................... 6 3.1 GADO ................................................................................................ 6 3.2 PRODUTO ........................................................................................ 8 3.3 FAZENDA .......................................................................................... 9 3.4 SISAGROCOMPRA ........................................................................ 10 4. INTERAÇÕES ENTRE AS CLASSES ............................................ 11 5. DIAGRAMA UML ............................................................................ 12 6. EXECUÇÃO DO PROGRMA .......................................................... 13 7. ERROS E CONTRATEMPOS ........................................................ 16 8. CONCLUSÕES .............................................................................. 16 9. REFERENCIAS ............................................................................. 18 4 LISTA DE FIGURAS Figura 1:Construtor Gado. .......................................................................... 6 Figura 2: Métodos de cálculo da classe Gado. ........................................... 7 Figura 3 : Métodos Get da Classe Gado. ................................................... 8 Figura 4: Construtor Produto. ..................................................................... 8 Figura 5: Cálculo do custo total. ................................................................. 9 Figura 6: Gets da classe Fazenda. ........................................................... 10 Figura 7:Diagrama UML ........................................................................... 13 Figura 8 : Interface do menu. ................................................................... 14 Figura 9 : Custo da silagem por mês. ....................................................... 15 Figura 10 : Custo dos produtos. ............................................................... 15 Figura 11: Custos totais da fazenda. ........................................................ 15 Figura 12 : Dados armazenados no arquivo txt. ....................................... 15 Figura 13:Erros de compilação da versão 5. ............................................ 16 5 1. INTRODUÇÃO A inspiração para o desenvolvimento do programa neste projeto originou-se na propriedade rural da família de Laiane, que se dedica a atividades pecuárias. Em virtude dessa conexão pessoal, decidimos batizar o programa de SistAgro - Sistema de Gestão Agropecuária. A intenção foi criar uma ferramenta que simplificasse as atividades cotidianas em uma propriedade rural voltado para a pecuária, abrangendo desde o cadastro de animais, produtos e valores até o cálculo dos gastos com produtos, silagem e custos totais da fazenda. A partir dessa ideia, procuramos incorporar os conhecimentos adquiridos na disciplina, visando alcançar uma solução satisfatória para o problema específico abordado. Reconhecemos que ter um controle eficiente sobre esses aspectos é crucial para aqueles que vivem no campo e dependem da pecuária como meio de subsistência. 2. DESENVOLVIMENTO O programa foi desenvolvido e estruturado na linguagem Java, mais especificadamente orientada a objetos, baseado nos conceitos e exemplos apresentados na apostila K19 (2015) que diz “a linguagem de programação Java permite que os conceitos de orientação a objetos sejam utilizados no desenvolvimento de uma aplicação”. Além da apostila o desenvolvimento do programa também se baseia no que foi proposto durante a disciplina de programação 2 e laboratório de programação 2. O programa foi desenvolvido com base nas inúmeras versões do sistema SistCEPETz que foram desenvolvidos durante o andar da disciplina, logo a estrutura do programa desenvolvido para esse trabalho baseia-se na estrutura dos programas desenvolvidos em sala. Buscamos envolver os conceitos abordados na orientação a objetos, conceitos como associação de classes, métodos GET e SET, classes TAD, construtores, empacotamento, encapsulamento e arquivos. No programa temos 4 classes, sendo a classe principal a SisAgro que recebe os valores das outras classes e cria as saídas, temos como classes TAD a classe produtos, classe gado e a classe fazenda. 6 3. ESTRUTURA Como dito anteriormente temos 4 classes que abordaremos nesse tópico, começaremos descrevendo o uso do recurso package ou pacote que agiliza o programa, o package agro traz as classes fazenda, gado e produtos. O uso do recurso package traz agilidade e facilidade, pois reúne as classes que serão utilizadas em um único lugar e já fazendo o acesso as classes. Tendo aqui mostrado as classes que compõem o pacote agro podemos agora explicar os conceito e recursos utilizados nas classes que compões o package. Começaremos descrevendo a Classe TAD Gado, antes disso relembremos o conceito de classe TAD, (DEITEL, 2010) TAD ou tipo Abstrato de Dados é uma representação abstrata de um tipo de dados (dados e operação) desvinculando-o de sua implementação. 3.1 GADO A classe Gado representa um tipo de dado relacionado a informações sobre gados em um Fazenda. Temos o construtor da classe que recebe como parâmetros o nome, tipo e peso do gado e inicializa os atributos com os valores fornecidos. como vemos na figura 1. Todas as variáveis declaradas nessa classe estão com os atributos privados, ou seja, somente a própria classe pode acessar esses valores. Figura 1:Construtor Gado. Além do emprego dos construtores nessa classe temos o método que calcula a quantidade diária de silagem consumida pelo gado. Este método usa a fórmula baseada nos dados da Embrapa para converter o peso do gado em quantidade diária 7 de silagem e retorna à quantidade diária de silagem, como podemos observar na figura 2., além disso temos o método que calcula consumo mensal de silagem, baseada no consumo diário de silagem, que também podemos observar na figura 2. Figura 2: Métodos de cálculo da classe Gado. Na classe Gado também temos os métodos gets que estão aqui presentes para retornar os valores nome, tipo e peso como podemos ver na figura 3. 8 Figura 3 : Métodos Get da Classe Gado. Finalizada a análise de recursos, métodos e elementos que são importantes da classe Gado passamos então a análise da classe Produto. 3.2 PRODUTO Na classe produto temos o método que faz o cálculo do custo do produto cadastrado e utiliza do método Get para buscar os valores de tipo, preço e quantidade. Como na classe Gado, também possui um construtor que recebe como parâmetros o tipo, o preço e a quantidade do produto. Este construtor é utilizado para instanciar objetos da classe, como mostra afigura 4. Figura 4: ConstrutorProduto. 9 3.3 FAZENDA Na classe Fazenda serão realizados os cálculos de silagem consumida através do método calcSilomes, o preço da silagem com base no número de gados com o método precoSiloMes, o custo total com produtos com o método calcularGastoTotalProdutos e o custo total da fazenda a partir do método calcularGastoTotal como podemos ver na figura 5. Esses cálculos são realizados com os atributos das classes produto e gado. Nessa classe também temos o uso do método GET para buscar o número de gados, o vetor produtos e o número de produtos conforme figura 6. Figura 5: Cálculo do custo total. 10 Figura 6: Gets da classe Fazenda. 3.4 SISTAGRO A classe SisAgro é a classe principal. Nessa classe, recebemos as entradas de dados e as chamadas de métodos e processamentos. Um dos métodos presentes é o mostrarMenu, que é um método de retorno vazio. Além disso, temos o método LimpaTela (Figura 7), que foi utilizado e é de autoria de outra pessoa. Adicionalmente, existem os cases que correspondem a cada opção apresentada no menu." A classe SistAgroV8 cria objetos da classe Gado para representar os animais da fazenda. Os dados desses objetos são obtidos através da interação com o usuário no menu (nomeGado, tipoGado, pesoGado). 11 Nessa classe também incrementamos o recurso arquivo a partir desse recurso os dados de Produtos da fazenda são gravados em um arquivo usando os métodos leArquivoProdutos e gravaArquivoProdutos. 4.INTERAÇÕES ENTRE AS CLASSES A classe Fazenda possui um vetor de objetos do tipo Gado. Essa relação indica uma associação entre a Fazenda e o Gado. A fazenda "tem" ou "contém" gados. Isso permite que a Fazenda armazene e gerencie informações sobre os gados associados. Da mesma forma, a classe Fazenda possui um vetor de objetos do tipo Produto. Isso estabelece uma associação entre a Fazenda e o Produto. A fazenda "tem" ou "contém" produtos. Isso permite que a Fazenda armazene e gerencie informações sobre os produtos associados a ela. Há uma associação entre as classes Fazenda e Gado (por meio do vetor de gados) e associação entre as classes Fazenda e Produto (por meio do vetor de produtos), estabelecendo uma relação de composição. A classe SistAgro cria um objeto da classe Fazenda chamado fazendinha. Diversos métodos da classe Fazenda são chamados na classe SistAgro para realizar operações relacionadas aos gados e produtos, como addGado, addProduto, getNGados, getGados, getNProdutos, getProdutos, calcSiloMes, precoSiloMes, calcularGastoTotalProdutos, calcularGastoTotal, leArquivoProdutos e gravaArquivoProdutos. A classe SistAgroV8 cria objetos da classe Gado para representar os animais da fazenda. Os dados desses objetos são obtidos através da interação com o usuário no menu (nomeGado, tipoGado, pesoGado). O método calcularConsumoDiarioSilagem da classe Gado é chamado na classe SistAgroV8 para calcular a quantidade diária de silagem consumida pelo gado, além disso a classe SistAgroV8 cria objetos da classe Produto para representar os produtos da fazenda. Os dados desses objetos são obtidos através da interação com o usuário no menu (tipoProduto, precoProduto, quantidadeProduto) e o método calcularCusto da classe Produto é chamado para calcular o custo total do produto. 12 5.DIAGRAMA UML “A UML é agora o esquema de representação gráfica mais amplamente utilizado para modelar sistemas orientados a objetos. Ela de fato unificou os vários esquemas de notação populares.” (DEITEL, 2010) “Em algumas empresas, o UML é amplamente utilizado. Às vezes, o programador recebe o UML já pronto, completo, e só deve preencher a implementação, devendo seguir à risca o UML.” (CAELUM, 2022). K19, (2015) expõe que podemos representar uma classe pelo meio de um diagrama UML. Esse diagrama UML de uma classe é composta pelo nome dela, e pelos atributos e métodos que ela define. Todos os objetos que serão criados a partir de uma classe, terão os atributos e métodos mostrados no diagrama UML. Os valores dos atributos de uma quantidade determinada de objetos criados a partir da classe, podem ser diferentes. Na Figura 8 é mostrado o diagrama UML que foi utilizado para o desenvolvimento deste programa. A partir do diagrama UMl (figura 7) podemos chegar nas seguintes relações entre as classes: • Associação em entre fazenda e gado; • Associação entre fazenda e produto; • Dependência entre fazenda e SistAgro. 13 Figura 7:Diagrama UML 6.EXECUÇÃO DO PROGRMA O programa se inicia mostrando o menu opções figura 8 com uma frase de boas-vindas, além disso optamos por um menu que fosse muito intuitivo e que o usuário não necessitasse ficar demostrando ao programa que desejava mais cadastros ou não. Gerando um programa final menos repetitivo e mais agradável de se utilizar. 14 Figura 8 : Interface do menu. Na interface menu optamos por deixar todas as opções de escolha e a saída bem intuitiva, com a exceção da opção 0 que sai do sistema. As outras opções pedem dados ou mostram custos e o menu produto ainda permanece na tela para que o usuário possa pensar nas opções que ainda pode realizar. Depois de realizados os cadastros o usuário tem as opções de mostrar os dados cadastrados ou calcular os custos de silagem como na (figura 9), custos de produtos (figura 10) e o custo total da Fazenda (figura 11). 15 Figura 9 : Custo da silagem por mês. Figura 10 : Custo dos produtos. Figura 11: Custos totais da fazenda. Após a utilização do programa ele gera um arquivo de texto em formato txt que armazena os produtos cadastrados conforme figura 12. Figura 12 : Dados armazenados no arquivo txt. 16 7.ERROS E CONTRATEMPOS Durante a concepção inicial do projeto pretendíamos ter herança e polimorfismo mais essa ideia acabou sendo muito complicada e não havíamos compreendido de maneira satisfatória o conceito de polimorfismo e isso gerou erros como o da figura 13 e assim abandonamos as versões 1 a 5 do programa, após conversarmos optamos por termos somente as relações de associação e dependência. Figura 13:Erros de compilação da versão 5. Após mudarmos a dinâmica do programa um dos erros mais comuns que cometemos era fazer o case sem o break isso estava associado a desatenção, porém esse erro demandou tempo de programar. Outra dificuldade que tivemos foi o recurso arquivo e à configuração das saídas. 8.CONCLUSÕES Concluímos que foi muito proveitoso trabalhar neste trabalho final, onde tivemos a oportunidade de aprimorar nossos conhecimentos adquiridos ao longo da disciplina. Demonstramos resiliência na solução de problemas, especialmente na identificação e correção de erros de código. Ao longo do desenvolvimento deste trabalho, destacamos a importância das classes TAD e a utilização de diversos métodos. A interação entre as classes resultou em um programa mais complexo, compreendido como um conjunto de partes que se 17 interagem, evitando códigos extensos e facilitando a compreensão de cada função sem repetições desnecessárias. A implementação de saídas em arquivo contribuiu para resultados mais bem elaborados. Ao finalizar a execução do programa, os resultados são armazenados em um arquivo de texto no computador do usuário. Isso permite que o usuário acesse e utilize os resultados mesmo após fechar o programa. No nosso caso, isso significa que podemos verificar facilmente a quantidade de produto calculada sem a necessidade de reabrir o programa. 18 9.REFERENCIAS Apostila K19 Treinamentos, Lógica de Programação, 2015. 0 Caelum, Java e Orientação a Objetos, Curso FJ-11. Apostila K19 Treinamento, Orientação a Objetos em Java, 2015. DEITEL, P.; DEITEL, H. Java - Como Programar. 8. ed. São Paulo: Pearson Prentice Hall, 2010.