2
respostas

Sugestões do que melhorar - programa bem básico sobre JAVA

Olá pessoal, tudo bem?

Estou começando no mundo da programação orientada a objetos e escrevi um código bem simples para fixar um pouco mais meus conhecimentos do que aprendi até agora (que é bem pouco).

O objetivo foi criar um programa sobre uma lâmpada e criar algumas características e um pouco de interação com o usuário.

Abaixo eu defini meu objeto.

package smartLampada;

import java.util.Scanner;

public class MinhaLampada {
    boolean acenderLampada;
    String definirCor;
    int intensidade = 0;


    public void ligar() {
        acenderLampada = true;
    }

    public void desligar() {
        acenderLampada = false;
    }

    public String escolherCor(String cor) {
        Scanner input = new Scanner(System.in);
        System.out.print("Digite a cor que você deseja: ");
        cor = input.nextLine();
        input.close();
        definirCor = cor;
        return definirCor;
    }

    public void aumentarIntensidade () {
        if (this.intensidade >= 100) {
            System.out.println("A intensidade está no máximo!");
            return;
        }

        intensidade += 10;
    }

    public void diminuirIntensidade () {
        if (this.intensidade <= 1) {
            System.out.println("A intensidade está no mínimo!");
            return;
        }

        intensidade -= 10;
    }
}

E depois eu criei uma classe pra testar esse objeto e aparecer algumas informações para o usuário

package smartLampada;

public class TestarMinhaLampada {

    public static void main (String[] args) {
        MinhaLampada primeiraLampada = new MinhaLampada();
        primeiraLampada.ligar();
        primeiraLampada.escolherCor(null);
        primeiraLampada.aumentarIntensidade();
        primeiraLampada.aumentarIntensidade();
        System.out.println("Sua lâmpada está " + (primeiraLampada.acenderLampada == true? 
                "ligada":"desligada") + ", sua intensidade é igual a " + primeiraLampada.intensidade
                + " e sua cor é " + primeiraLampada.definirCor + ".");

    }
}

Gostaria da opinião de vocês sobre o que eu poderia melhorar ou sobre qualquer outro ponto que vocês acharem pertinente. Tamo junto.

PS: Não entendi o porque de ter que usar "null".

2 respostas

Alguns pontos, respeitar o pilar de encapsulamento as variaveis da classe MinhaLampada tem que serem privados e so podem ser acessadas diretamente dentro da propria classe se for acessar de fora tem que ser atraves de um metodo como por exemplo o get para consultar e o set para alterar.

No metodo escolherCor da classe MinhaLampada vc nao precisar receber essa variavel vc pode declarar ela no metodo e retornar ela como no codigo abaixo.

Voce poderia colocar uma metodo na classe MinhaLampada para realizar o print da main, um metodo por exemplo chamado printDescricao() e tambem utilizar o StringBuilder para montar a mensagem porque e mais perfomatico do que fazer a concatenacao de string do jeito que vc esta fznd.

De resto esta muito bom para um iniciante existe inumeras formas de realizar isso mas acho que vc seguindo as minhas dicas acima ele ja respeita bastante os principios do codigo limpo, continue estudando.

package smartLampada;

import java.util.Scanner;

public class MinhaLampada {
    private boolean acenderLampada;
    private String definirCor;
    private int intensidade;

    public MinhaLampada() {
        intensidade = 0;
    }


    public void ligar() {
        acenderLampada = true;
    }

    public void desligar() {
        acenderLampada = false;
    }

    public String escolherCor() {
        Scanner input = new Scanner(System.in);
        System.out.print("Digite a cor que você deseja: ");
        String cor = input.nextLine();
        input.close();
        definirCor = cor;
        return definirCor;
    }

    public void aumentarIntensidade () {
        if (this.intensidade >= 100) {
            System.out.println("A intensidade está no máximo!");
            return;
        }

        intensidade += 10;
    }

    public void diminuirIntensidade () {
        if (this.intensidade <= 1) {
            System.out.println("A intensidade está no mínimo!");
            return;
        }

        intensidade -= 10;
    }

    private String getDescricao() {
        StringBuilder mensagem = new StringBuilder("Sua lâmpada está ");

        mensagem.append(primeiraLampada.acenderLampada ? "ligada" : "desligada");
        mensagem.append(", sua intensidade é igual a ");
        mensagem.append(primeiraLampada.intensidade);
        mensagem.append(" e sua cor é ");
        mensagem.append(primeiraLampada.definirCor);
        mensagem.append(".");

        return mensagem.toString();
    }

    public String printDescricao() {
        System.out.println(this.getDescricao());
    }
}
package smartLampada;

public class TestarMinhaLampada {

    public static void main (String[] args) {
        MinhaLampada primeiraLampada = new MinhaLampada();
        primeiraLampada.ligar();
        primeiraLampada.escolherCor();
        primeiraLampada.aumentarIntensidade();
        primeiraLampada.aumentarIntensidade();
        primeiraLampada.printDescricao();

    }
}

Muito obrigado pela ajuda, Rodrigo!