Skip to content

Repository files navigation

TRILHA ALURA - JAVA

Este repositório é o meu portfólio de evolução na linguagem Java, documentando minha jornada prática e teórica através da plataforma Alura. Abaixo está o mapeamento dos conceitos estudados e aplicados nos códigos do projeto.


1 - Variáveis e Tipos

  • Tipos Primitivos: Declaração e uso de números inteiros (int), números com casas decimais (double) e valores lógicos (boolean).
  • Tipos de Referência: Introdução ao uso de String para armazenamento e exibição de textos.
  • Entrada de Dados: Configuração e leitura do teclado via terminal utilizando a classe Scanner com os métodos nextInt(), nextDouble() e nextLine().
  • Boas Práticas: Gerenciamento de recursos com o encerramento de conexões de leitura (scanner.close()).

2 - Condicionais IF e ELSE

  • Fluxo de Decisão: Criação de caminhos lógicos no código utilizando estruturas simples (if / else) e encadeadas (else if).
  • Operadores Lógicos: Uso dos operadores && (E) e || (OU) para validar múltiplas regras de negócio na mesma condição (ex: validação de triângulos e dias úteis).
  • Comparação de Textos: Utilização do método .equals() no lugar de == para comparar o conteúdo real de variáveis String.
  • Refatoração com Booleanos: Armazenamento de verificações lógicas dentro de variáveis boolean antes do bloco if para tornar o código mais limpo e profissional.

3 - Laços For e While

  • Laço for Tradicional: Estruturação de repetições com número de voltas conhecido (iniciação, condição e incremento), aplicado em contadores e cálculos de fatorial.
  • Laço for-each: Leitura simplificada para percorrer todos os itens de um Array ou coleção de dados automaticamente, sem uso de índices de posição.
  • Laços while e do-while: Repetições condicionais ideais para menus interativos, loops infinitos controlados (while(true)) e validação de digitação do usuário.
  • Comandos de Salto: Domínio do break para interromper e sair de um laço na hora, e do continue para pular uma rodada específica do loop.
  • Controle de Buffer: Solução para o "Enter Fantasma" (\n) que sobra na memória do Scanner ao misturar leituras de números e textos.
  • Coleções Dinâmicas: Introdução à manipulação de listas que crescem e diminuem de tamanho com ArrayList.

4 - String e Regex

  • Manipulação Básica de Textos: Uso de métodos como .length() (tamanho do texto), .trim() (remoção de espaços extras) e .equalsIgnoreCase() (comparação ignorando maiúsculas/minúsculas).
  • Fatiamento de Textos: Uso do comando .split(" ") para separar uma frase inteira em uma lista de palavras independentes.
  • Expressões Regulares (Regex): Aplicação das classes Pattern e Matcher para busca, substituição e validação avançada de formatos (ex: CPF, códigos de referência, hashtags e regras de senha forte).

5 - Data e Hora

  • API Moderna do Java (java.time): Captura e manipulação de datas e horários do sistema utilizando as classes LocalDate e LocalTime.
  • Formatação Visual: Criação de moldes personalizados (como padrão brasileiro dd-MM-yyyy e horários HH:mm) utilizando o DateTimeFormatter e o método .format().
  • Cálculos e Intervalos: Medição precisa de duração entre dois horários com Duration.between() e manipulação de prazos somando ou subtraindo períodos com .plusDays(), .plusMonths() e .minusDays().
  • Comparação Temporal: Uso de métodos relacionais como .isBefore() e .isAfter() para verificar se eventos já ocorreram na linha do tempo.
  • Fusos Horários (Timezones): Trabalho com horários regionais e conversões internacionais mantendo o mesmo instante temporal através de ZonedDateTime e ZoneId (ex: Tóquio e Sydney).
  • Conversão de Textos (parse): Transformação de Strings digitadas pelo usuário em objetos de tempo reais através do LocalTime.parse(), integrado a um sistema completo de cálculo de saldo de horas e horas extras.

6 - Coleções e Streams

  • Estruturas de Dados (List, Set, Map): Utilização de ArrayList para listas ordenadas, HashSet para remoção automática de elementos duplicados, e HashMap para estruturação de dicionários chave-valor com checagem de segurança (containsKey).
  • Stream API: Processamento funcional de coleções utilizando expressões lambda.
  • Filtros e Transformações: Aplicação de .filter() para seleção condicional de dados e .map() para transformação de elementos em lote.
  • Reduções e Operações Estatísticas: Consolidação de valores com .reduce() (como somas e impostos), além de cálculos de médias, valores máximos e mínimos com tratamento preventivo de listas vazias.

7 - Encapsulamento

  • Ocultação de Dados: Proteção de atributos internos utilizando o modificador private para impedir alterações indevidas vindas de fora da classe.
  • Validação de Regras de Negócio: Implementação de barreiras lógicas dentro dos métodos setters (ex: bloqueio de preços negativos, saques maiores que o saldo e notas escolares inválidas).
  • Métodos Auxiliares Privados: Isolamento de regras complexas de cálculo e alteração de estado (como atualização automática de níveis e pontuações de usuários) dentro da própria classe.
  • Imutabilidade e Segurança: Uso do modificador final e validações de credenciais para garantir a integridade dos dados (como o fluxo de alteração e validação de senhas).

8 - Herança, Interfaces e Polimorfismo

  • Herança (extends): Reutilização eficiente de código entre superclasses e subclasses, herdando atributos e métodos comuns (como dados de pessoas e mídias).
  • Reaproveitamento com super(): Chamada de construtores e métodos da classe mãe para inicializar dados estruturados de forma limpa.
  • Modificador protected: Controle de acesso estratégico para permitir que classes filhas utilizem atributos da superclasse sem expô-los publicamente.
  • Polimorfismo: Sobrescrita de métodos (@Override) permitindo que diferentes classes (como Email, Sms e Push) implementem o mesmo comportamento de formas específicas, respondendo a chamadas genéricas.
  • Interfaces e Contratos (implements): Definição de padrões rígidos de comportamento (como em Controlavel) para padronizar ações em dispositivos e componentes distintos.

Trilha em constante expansão conforme o avanço nos módulos do curso.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages