Skip to content
This repository has been archived by the owner on Mar 24, 2024. It is now read-only.

luizakuze/Digital-Clock

Repository files navigation

Relógio Digital ⏰

Autora: Luiza Kuze
Data: 24/10/2023
Projeto de POO

Descrição 📌

É 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.

Alt text

Display 7 segmentos

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.

Demonstração 📷

Relógios iniciando em 12:34:59

Objetivos 🎯

  • 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.

Funcionamento 💻

Opção 1 - Linux 👩🏻‍💻

# 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

Opção 2 - Windows 👨🏻‍💻

# 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

Implementação 📚

Gradle 📘

Este projeto utiliza o sistema de construção Gradle para gerenciar as dependências e compilar o código-fonte!

Diagrama UML 📕

O projeto respeita o encapsulamento de dados, responsabilidade única e divisão de responsabilidades!

Alt text

Diagrama UML feito em mermaid

Representação Gráfica 📗

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":

  1. Relógios são criados no método main da classe Principal.
  2. Esses relógios tem horários definidos pelo usuário, que são responsabilidade da classe Horario.
  3. 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.
  4. 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.

Ideias futuras 🚀

  • 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.

Licença 📜

Este projeto é licenciado sob a MIT License

About

Projeto de POO

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages