Autora: Luiza Kuze
Data: 24/10/2023
Projeto de POO
É uma aplicação de um relógio digital, composto por 6 displays de 7 segmentos. Cada display de 7 segmentos é um dispositivo eletrônico acessível que pode representar informações alfanuméricas, ativando ou desativando individualmente seus 7 segmentos. Para ilustrar, se quisermos mostrar o número 2 em um display de 7 segmentos, ativamos os segmentos A, B, G, E e D.
Esse projeto foi desenvolvido na parte inicial das aulas de Programação Orientada a Objetos (POO) na faculdade. Durante esse período, o foco principal foi compreender a divisão de responsabilidades entre as classes envolvidas, a fim de criar uma aplicação funcional e eficiente.
-
Criar um relógio digital em Java que utilize 6 displays de 7 segmentos.
-
Permitir que o usuário defina as coordenadas de posicionamento do relógio.
-
Oferecer a opção de escolher o tamanho do relógio, variando de 1 a 3. Caso seja informado um tamanho inválido, coloca um relógio de tamanho 2 por padrão.
-
Personalizar a cor do relógio digital. Caso sejam cores não implementadas no desenvolvimento, desenha um relógio branco por padrão.
-
Inicializar o relógio com a hora, minutos e segundos especificados pelo usuário. Caso valores inválidos sejam fornecidos, o relógio começará às 00:00:00.
-
Interface gráfica, o programa deve criar uma tela de desenho para visualizar o relógio.
# Clonar o repositório do projeto
git clone https://github.com/luizakuze/Digital-Clock
# Acessar o diretório
cd Digital-Clock
# Compilar e executar o projeto
./gradlew run
# Clonar o repositório do projeto
git clone https://github.com/luizakuze/Digital-Clock
# Acessar o diretório
cd Digital-Clock
# Compilar e executar o projeto
gradle run
Este projeto utiliza o sistema de construção Gradle para gerenciar as dependências e compilar o código-fonte!
O projeto respeita o encapsulamento de dados, responsabilidade única e divisão de responsabilidades!
Diagrama UML feito em mermaid
Funciona por meio da biblioteca Algs4, uma biblioteca que oferece suporte para gráficos em 2D. Um grande suporte para o projeto ao utilizar a sua classe Draw!
Na classe principal, um dos seus atributos é do tipo Draw e ao instanciar um objeto dessa classe principal, criamos uma "tela de desenho" que será passada ao longo das classes e métodos do projeto.
É o seguinte "passo a passo":
- Relógios são criados no método main da classe Principal.
- Esses relógios tem horários definidos pelo usuário, que são responsabilidade da classe Horario.
- Um relógio tem 6 displays, para representar horas, minutos e segundos. Assim, a responsabilidade de conectar o horário com os segmentos que aparecem é da classe Display.
- Um display tem 7 segmentos, podem acender e apagar, além disso também são desenhados na tela para representar um relógio!
Ao chegar na classe Segmento, cada segmento do display é desenhado como um polígono preenchido, utilizando o método filledPolygon da classe Draw. Nessa etapa, é necessário um array de coordenadas x e y para desenhar um polígono.
É feito um cálculo das coordenadas, tendo como referência um ponto de partida definido pelo usuário, especificado por uma coordenada x e y iniciais. Além disso, o cálculo leva em consideração o tamanho do relógio escolhido, que pode variar entre 1, 2 ou 3. A maior dificuldade encontrada para o cálculo foi em manter uma proporção adequada ao desenhar relógios de diferentes tamanhos na tela, garante que a representação gráfica seja consistente, independentemente do tamanho do relógio selecionado.
-
Relógios Coloridos: Adicionar a capacidade de personalizar a cor individual dos displays, permitindo uma ampla variedade de combinações coloridas.
-
Relógio com Data: Implementar uma funcionalidade de data que automaticamente avança para o próximo dia quando o relógio marca meia-noite.
Este projeto é licenciado sob a MIT License