Aula 4.1: Trabalhando com classes - POO #LTCode

COMPARTILHAR:

Whatsapp Telegram Twitter Facebook Reddit

Aula 4.1 - Trabalhando com classes em Java, programação orientada a objetos.

Este artigo faz parte do projeto #LTCode

Continuando com nossa série de aulas sobre Programação Orientada a Objeto, clique aqui e confira a lista de aulas já divulgadas, vamos realizar uma atividade para compreender melhor as classes.

Seu objetivo é implementar um relógio digital em Java. Para isso, você deverá criar três classes:

  • Contador;
  • Relogio;
  • TesteRelogio (classe para testar a execução do programa);
Nas classes Contador e Relogio deverão constar os métodos modificadores e métodos de acesso (get's e set's) para os atributos criados. O resultado da sua execução deverá exibir todos os horários possíveis do relógio, exemplo:


Deverá existir uma opção para exibir as horas no formato 12 horas ou 24 horas. Caso seja feita a seleção para exibir no formato de 12 horas, deverá ser exibido a.m. ou p.m. conforme o caso.

Dicas:
  1. Ainda que você possa visualizar um relógio digital que exibe as horas no formato HH:MM, por exemplo: 11:03, como um mostrador de quatro dígitos, para facilitar a implementação em Java, você deverá considerá-lo como dois contadores de dois dígitos (um par para as horas e um par para os minutos). Um par inicia em zero, aumenta a cada hora e volta para zero após alcançar seu limite de 23. O outro faz o mesmo, porém a cada minuto, até alcançar seu limite de 59.
  2. Na classe Contador deverá constar um método para incrementar o valor, respeitando o limite definido, (método incrementar()).
  3. Na classe Relogio deverá constar um método que atualize as horas, caso o contador de minutos seja zerado, (método TicTac()).
  4. Para que um número nunca exceda um determinado valor, você poderá utilizar o resto inteiro da divisão – função mod. Exemplo: para que A + B nunca seja maior que 100, em Java faça o seguinte: (A + B) % 100.
A atividade já abstraiu o objeto que vamos desenvolver, um relógio digital, em classes. Na classe "Contador"  vamos inserir a lógica de mudar a hora ou minutos, o ideal é generalizar ou seja sempre que passarmos um valor para esta classe ela retorna este valor+1, assim poderíamos utilizar a mesma classe em outros tipos de relógios ou programas que precisa da mesma lógica.

Confira na imagem abaixo como ficou nossa classe Contador:


Na linha 5 declaramos uma variável do tipo inteiro, esta variável é inicializada com valor 0 na linha 9 dentro do construtor.. assim sempre que instanciamos um novo objeto, garantimos que a variável inicie com valor zero.

Na linha 13 criamos um método chamado "incrementar", este método contém a nossa lógica de somar mais um à variável "valor". Não passamos nada como parâmetro pois a atividade exigiu a utilização de métodos get's e set's, ou seja, nosso método "incrementar" vai trabalhar com o dado contido na variável "valor" presente na própria classe, podemos alterar o valor da variável "valor" usando o método "setValor" presente na linha 22. *Note na linha 14 que o correto seria "this.valor = (valor+1)%60;" já que nosso relógio volta a 0 ao chegar em 59 minutos ou segundos.

Nossa classe "Contador" está pronta, agora precisamos criar a classe "Relogio"! Portanto vamos por partes, a própria atividade deu algumas dicas para sabermos por onde começar.

A primeira dica informa que vamos usar duas variáveis, uma para a hora e outra para os minutos. Essas duas variáveis vão ser tipos objetos, pois compartilham atributos e comportamentos presente na classe "Contador". Pense comigo, o horário 05:10 possui valor 5 (hora) e valor 10 (minutos). Sendo assim podemos declarar ambas variáveis como:

    private Contador hora;
    private Contador minuto;

Não podemos esquecer do fato que o usuário poderá escolher entre exibir o horário no formato 12 e 24 horas, sendo assim declaramos uma variável para trabalhar com essa escolha: private int limite;

Toda classe possui um construtor, mesmo que você não crie um, a própria IDE criará para você quando compilar o código. Como precisamos obter do usuário qual tipo de formato exibir do relógio, criaremos um construtor que inicialize com o formato escolhido pelo usuário jogando o valor em nossa variável "limite", aproveitando terminaremos de instanciar a classe "Contador" para as variáveis hora e minuto:

    public Relogio(int lim){ //construtor, recebe inteiro em 'lim'
        this.hora = new Contador(); //cria objeto
        this.minuto = new Contador(); //cria objeto
        this.limite = lim; //limite recebe a escolha do usuário, 12 ou 24 horas
    }

Na dica 3, é informado para criar um método que atualize as horas, ou seja quando os minutos valer 59, nós chamamos o método incrementar() da classe "Contador" usando a variável de instancia que criamos para a hora, e depois precisamos zerar os minutos para que ele comece a incrementar a partir do zero novamente.

    public void Tictac() {
        this.hora.incrementar();
        this.minuto.setValor(0);
    }

Note que o código acima é genérico, a lógica de chamar o método Tictac() quando os minutos valer 59 será feita em outro método. Primeiramente vamos criar um método para ser nosso ponto de partida.. ou seja mostrar, imprimir, o relógio na tela... o código deste método já é auto explicativo se você já conhece alguma linguagem de programação:

    public void mostrarRelogio(){
        String modo;
        if(this.limite==12){
            modo="a.m.";
            relogio12(modo);
            modo="p.m.";
            this.hora.setValor(0);
            relogio12(modo);
        }
        else{
            relogio24();            
        }
    }

Ainda vamos criar os métodos "relogio12()" e "relogio24()", mas já deu para entender que se o usuário escolher 12 vai chamar o método "relogio12()"... caso contrário será chamado o método para mostrar o relógio no modo 24 horas.

Por enquanto nosso código está desta forma:



Ignore as linha 2 e 9 por enquanto. Agora vamos criar o método relogio24(), clique sobre a imagem para ampliar se necessário:








A lógica do método é a seguinte, enquanto "j" for menor que o limite.. no caso 24, incrementamos "j". Dentro do primeiro "for" temos outro "for" para ser os minutos, enquanto "i" for menor que 60, incrementamos "i" e imprimimos na tela o valor presente no objeto "hora" e o valor presente no objeto "minuto", note que realizamos uma impressão formatada, ou seja será impresso a hora e minutos com 2 casas decimais, por isso na linha 2 importamos a classe "DecimalFormat" e na linha 9 instanciamos usando a variável "formato".

Na linha 41 chamamos o método incrementar para o objeto "minuto" ser alterado. Depois que a variável "i" chegar em 59, saímos do segundo "for" e chamamos na linha 43 o método "Tictac()" que incrementa a hora e zera os minutos.

Abaixo você confere o método relogio12(), a lógica continua sendo a mesma.. só que com uma condição para imprimir no modo "am" ou "pm" . Clique sobre a imagem para ampliar se necessário.










Para finalizar nossa classe "Relogio", adicionamos métodos get's e set's.



Agora que nossa classe "Relogio" e "Contador" estão prontas, vamos criar uma classe para testar nosso programinha. Essa classe vai se chamar "TesteRelogio", nela conterá o método main(), vamos ler do teclado a opção de hora que o usuário quer exibir e instanciar a classe "Relogio" passando 12 ou 24 como parâmetro para o construtor, para depois chamarmos o método "mostrarRelogio()", presente nessa classe já que a partir dela o programa vai fluir naturalmente. Confira como ficou a classe na imagem abaixo:




A saída da execução do programa é a seguinte:

run:
24 Horas ou 12 Horas?
Indique o modo do relógio: 12
00:00 a.m.
00:01 a.m.
00:02 a.m.
00:03 a.m.
00:04 a.m.
...
11:56 a.m.
11:57 a.m.
11:58 a.m.
11:59 a.m.
12:00 p.m.
12:01 p.m.
12:02 p.m.
12:03 p.m.
...
12:56 p.m.
12:57 p.m.
12:58 p.m.
12:59 p.m.
01:00 p.m.
01:01 p.m.
01:02 p.m.
01:03 p.m.
...
11:54 p.m.
11:55 p.m.
11:56 p.m.
11:57 p.m.
11:58 p.m.
11:59 p.m.

CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos)

run:
24 Horas ou 12 Horas?
Indique o modo do relógio: 24
00:00
00:01
00:02
00:03
00:04
00:05
...
23:55
23:56
23:57
23:58
23:59
CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos)

*Claro que o programa vai mostrar todas as horas, coloquei reticencias para encurtar aqui no site.

Espero que tenha compreendido, qualquer dúvida deixe um comentário. 

>> Próxima aula, em breve.

COMENTÁRIOS

Nome

#ann,25,#HK,30,#LTCode,126,Artigo - Diversos,156,Artigo - Games,200,Artigo - Tecnologia,597,autor-thomaz,7,Coluna - Alternative World,24,Coluna - Fail,12,Coluna - Tec Line,14,Criptomoeda,71,Curiosidades - Diversos,49,Curiosidades - Tecnologia,50,en,2,estudo,8,HN,12,logica,14,Pentest,23,Programar C,29,Programar POO,6,Programar Python,6,Programar Shell,21,Programar verilog,12,Raspberry Pi,15,Redes,3,root,100,Shorty Awards,1,Smartphones - Reviews,33,Teoria,10,Top Nostalgia,2,VPN,18,WhatsApp,46,
ltr
item
Limon Tec: Aula 4.1: Trabalhando com classes - POO #LTCode
Aula 4.1: Trabalhando com classes - POO #LTCode
Aula 4.1 - Trabalhando com classes em Java, programação orientada a objetos.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmI65og5X32bSLCmBz3uJnZlmDvzOFWZWoZzyvUhh2rtp8Hr_kolKy02pOjxpkThrz8uHaTu3skUdeDJlkFEKkC2a9EabpwPzbwJ-hm-po0QIaNeNvYm5CJw3k4SbN03V-d2h1dxrW2tz4/s640/ltcode.jpg
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmI65og5X32bSLCmBz3uJnZlmDvzOFWZWoZzyvUhh2rtp8Hr_kolKy02pOjxpkThrz8uHaTu3skUdeDJlkFEKkC2a9EabpwPzbwJ-hm-po0QIaNeNvYm5CJw3k4SbN03V-d2h1dxrW2tz4/s72-c/ltcode.jpg
Limon Tec
https://www.limontec.com/2019/02/aula-4-1-poo-java-ltcode.html
https://www.limontec.com/
https://www.limontec.com/
https://www.limontec.com/2019/02/aula-4-1-poo-java-ltcode.html
false
2157924926610706248
UTF-8
Carregar todos posts Não encontramos nenhum post VER TUDO Ler mais Responder Cancelar resposta Deletar Por Home PÁGINAS POSTS Ver tudo RECOMENDADO PARA VOCÊ LABEL ARQUIVO SEARCH TODOS POSTS Não encontramos nenhum post relacionado a sua requisição VOLTAR PÁGINA INICIAL Domingo Segunda Terça Quarta Quinta Sexta Sábado Dom Seg Ter Qua Qui Sex Sab Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro Jan Fev Mar Abr Maio Jun Jul Ago Set Out Nov Dez apenas agora 1 minuto atrás $$1$$ minutes ago 1 hora atrás $$1$$ hours ago Ontem $$1$$ days ago $$1$$ weeks ago mais de 5 semanas atrás Seguidores Seguir ESTE CONTEÚDO ESTÁ BLOQUEADO PASSO 1: Compartilhe com seus amigos PASSO 2: Clique no link compartilhado Copiar Todo Código Selecionar Todo Código Todos códigos foram copiados para seu clipboard Não é possível copiar códigos / textos, por favor aperte [CTRL]+[C] (ou CMD+C no Mac) para copiar Tabela de conteúdo