De que se trata o artigo: Trata da solução de problemas que requerem o uso de orientação a objetos, utilizando uma proposta de metodologia básica que destaca principalmente a criação do modelo de domínio e recursos de orientação a objetos suportados por Java.
Em que situação o tema é útil: Apenas conhecer uma ou mais linguagens de programação não é suficiente para resolver os problemas que o
desenvolvedor enfrenta no seu dia a dia. Saber como resolver o problema é fundamental. E para isso, seguir alguns passos básicos pode determinar a eficiência da solução.
Assim, esse artigo é útil para instrumentalizar os desenvolvedores tanto nos recursos da linguagem Java, quanto em uma forma de abordar problemas de programação.
Resumo DevMan: Para resolver um problema de programação com eficiência, devemos conhecer a linguagem de programação e as técnicas necessárias para analisar o seu domínio. Neste artigo voltamos a utilizar uma simples metodologia composta de quatro passos e aplicamos os recursos de Java, estudados até então nas edições anteriores de Easy Java Magazine. Especialmente, tratamos com mais profundidade problemas que envolvem orientação a objetos, tais como herança, interfaces e polimorfismo. As soluções são explicadas em detalhes, desde a modelagem até a codificação, de maneira que o desenvolvedor adquira conhecimento e experiência a serem utilizados em futuras situações que exijam abordagem semelhante.
Na Easy Java Magazine nº. 4 foi publicado o artigo Solucionando Problemas usando Java, onde propusemos uma metodologia mínima que pode ser adotada para resolver problemas de programação. Nessa mesma matéria foram apresentados alguns testes cujas soluções foram abordadas usando essa metodologia. O artigo que ora iniciamos irá apresentar mais alguns problemas e resolvê-los usando essa proposta de método. E para facilitar a leitura e o entendimento vamos rever brevemente a metodologia apresentada naquele artigo, que é composta de quatro passos:
-
Entenda o problema
Este primeiro passo é fundamental, pois não se resolve um problema que não entendemos. Para isso, é primordial entender o domínio do problema – aquelas áreas que são importantes para solução, excluindo o que for irrelevante. Geralmente, o entendimento do domínio passa pela criação de um modelo, expressado pelo diagrama de classes.
Se possível, tente resolver o problema manualmente
Procure dividir o problema em pequenas partes, que possam ser executadas mentalmente usando papel e caneta. É o processo que comumente chamamos de teste de mesa.
-
Defina com precisão o algoritmo
A utilização de pseudocódigo pode ser um caminho para esse passo. O pseudocódigo deve ser mapeado posteriormente para a linguagem de programação escolhida para o desenvolvimento. Geralmente, cria-se pseudocódigo para as pequenas partes nas quais o problema foi dividido no passo anterior.
-
Codifique o programa
O último passo do processo é a codificação. Durante essa etapa procure escrever código mais legível, utilize identação e comentários, de forma a facilitar a depuração e manutenção posterior da aplicação.
Agora, vejamos então alguns problemas que abordam temas de Java e suas respectivas soluções que utilizam a metodologia proposta.
Classes e Objetos
Problema: Escreva uma classe chamada Conta que encapsula uma conta de banco e define três variáveis de instância, o titular (String) da conta, o saldo (double) e o limite (double). Além dos construtores e dos métodos getters e setters, escreva os métodos depositar() e sacar(). O método sacar() deve retornar um boolean. Se houver saldo suficiente para o saque, o método deve retornar true, caso contrário, deve retornar false. Escreva um programa para instanciar essa classe e fazer depósitos e saques para validar a solução.
Análise do problema: Este é um problema relativamente simples. O que deve ser observado na criação da classe é que o campo saldo não deve ser alterado através de um método setter, e sim por meio dos métodos depositar() e sacar(). A implementação desses dois métodos requer maior atenção, devido à presença do limite. O limite é um valor que o titular da conta pode sacar no caso de não possuir saldo suficiente. Vejamos então o que acontece quando fazemos um saque. Se a conta possui limite maior que 0, então o saldo da conta pode ficar negativo com o mesmo valor absoluto do limite. Dessa maneira pode-se escrever o pseudocódigo da Listagem 1, para realizar saques na conta.
funcao sacar(valor: real): lógico; declare resultado: lógico; inicio se (saldo + limite >= valor) então saldo := saldo – valor; resultado := true; senão resultado := false; fim-se; fim
Observe que a condição (saldo + limite >= valor) no pseudocódigo atende também a situação em que a conta possui limite igual a zero, pois nesta situação precisamos saber se apenas o saldo é suficiente para fazer o saque.
Por sua vez, o método depositar() é mais simples de implementar, necessitando apenas somar ao saldo o valor depositado. Assim, pode-se definir o pseudocódigo da ...
Confira outros conteúdos:
Perguntas frequentes
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.