Desenvolvimento Java com Cloud AWS - endobrasil/EstudoJava GitHub Wiki
Fundamentos da Programação Orientada a Objetos com Java Introdução Conceito de POO Classes Pacotes Visibilidade dos recursos Getter e Setters Construtores Enums UML
Pilares da Programação Orientada a Objetos em Java Pilares do POO Encapsulamento Herança Abstração Polimorfismo Interface
Conhecendo Collections Java caraca ela organizou a aula no git, que perfeição #!S2! https://github.com/cami-la/collections-java-api-2023 Introdução e Pré-Requisitos conhecer sintaxe básica java OO IDE Conhecendo a Hierarquia do Collection Framework API Java Agrupa muintos elementos dentro de uma mesma estrutura, parece com o array. Um famework. Não aceita tipos primitivos, somente classes. Entendendo o Generics Type Conhecendo as interfaces Comparable e Comparator
list List Interface Hands On: Iniciando o projeto e enviando para o GitHub Operações Básicas List 1. Lista de Tarefas Crie uma classe chamada "ListaTarefas" que possui uma lista de tarefas como atributo. Cada tarefa é representada por uma classe chamada "Tarefa" que possui um atributo de descrição. Implemente os seguintes métodos:
* adicionarTarefa(String descricao): Adiciona uma nova tarefa à lista com a descrição fornecida.
* removerTarefa(String descricao): Remove uma tarefa da lista com base em sua descrição.
* obterNumeroTotalTarefas(): Retorna o número total de tarefas na lista.
* obterDescricoesTarefas(): Retorna uma lista contendo a descrição de todas as tarefas na lista.
2. Carrinho de Compras:
Crie uma classe chamada "CarrinhoDeCompras" que representa um carrinho de compras online. O carrinho deve ser implementado como uma lista de itens. Cada item é representado por uma classe chamada "Item" que possui atributos como nome, preço e quantidade. Implemente os seguintes métodos:
* adicionarItem(String nome, double preco, int quantidade): Adiciona um item ao carrinho com o nome, preço e quantidade especificados.
* removerItem(String nome): Remove um item do carrinho com base no seu nome.
* calcularValorTotal(): Calcula e retorna o valor total do carrinho, levando em consideração o preço e a quantidade de cada item.
* exibirItens(): Exibe todos os itens presentes no carrinho, mostrando seus nomes, preços e quantidades.
Operações Básicas List: testando os métodos
Pesquisa List
1. Catálogo de Livros
Crie uma classe chamada "CatalogoLivros" que possui uma lista de objetos do tipo "Livro" como atributo. Cada livro possui atributos como título, autor e ano de publicação. Implemente os seguintes métodos:
* adicionarLivro(String titulo, String autor, int anoPublicacao): Adiciona um livro ao catálogo.
* pesquisarPorAutor(String autor): Pesquisa livros por autor e retorna uma lista com os livros encontrados.
* pesquisarPorIntervaloAnos(int anoInicial, int anoFinal): Pesquisa livros publicados em um determinado intervalo de anos e retorna uma lista com os livros encontrados.
* pesquisarPorTitulo(String titulo): Pesquisa livros por título e retorna o primeiro livro encontrado.
#fazer
2. Soma de Números
Crie uma classe chamada "SomaNumeros" que possui uma lista de números inteiros como atributo. Implemente os seguintes métodos:
* adicionarNumero(int numero): Adiciona um número à lista de números.
* calcularSoma(): Calcula a soma de todos os números na lista e retorna o resultado.
* encontrarMaiorNumero(): Encontra o maior número na lista e retorna o valor.
* encontrarMenorNumero(): Encontra o menor número na lista e retorna o valor.
* exibirNumeros(): Retorna uma lista contendo todos os números presentes na lista.
Pesquisa List: testando os métodos
# Menino um exercício muito grande de abastração,
# consegui fazer, mas consegui entender muito bem não...
Ordenação List
1. Ordenação de Pessoas
Crie uma classe chamada "OrdenacaoPessoas" que possui uma lista de objetos do tipo "Pessoa" como atributo. Cada pessoa possui atributos como nome, idade e altura. Implemente os seguintes métodos:
* adicionarPessoa(String nome, int idade, double altura): Adiciona uma pessoa à lista.
* ordenarPorIdade(): Ordena as pessoas da lista por idade usando a interface Comparable.
* ordenarPorAltura(): Ordena as pessoas da lista por altura usando um Comparator personalizado.
#fazer
2. Ordenação de Números
Crie uma classe chamada "OrdenacaoNumeros" que possui uma lista de números inteiros como atributo. Implemente os seguintes métodos:
* adicionarNumero(int numero): Adiciona um número à lista.
* ordenarAscendente(): Ordena os números da lista em ordem ascendente usando a interface Comparable e a class Collections.
* ordenarDescendente(): Ordena os números da lista em ordem descendente usando um Comparable e a class Collections.
Ordenação List: testando os métodos
Set Interface dentro de um set NÃO pode ter elementos repetidos.
1. Conjunto de Convidados
Crie uma classe chamada "ConjuntoConvidados" que possui um conjunto de objetos do tipo "Convidado" como atributo. Cada convidado possui atributos como nome e código do convite. Implemente os seguintes métodos:
adicionarConvidado(String nome, int codigoConvite): Adiciona um convidado ao conjunto.
removerConvidadoPorCodigoConvite(String codigoConvite): Remove um convidado do conjunto com base no código do convite.
contarConvidados(): Conta o número total de convidados no Set.
exibirConvidados(): Exibe todos os convidados do conjunto.
2. Conjunto de Palavras Únicas
Crie uma classe chamada "ConjuntoPalavrasUnicas" que possui um conjunto de palavras únicas como atributo. Implemente os seguintes métodos:
adicionarPalavra(String palavra): Adiciona uma palavra ao conjunto.
removerPalavra(String palavra): Remove uma palavra do conjunto.
verificarPalavra(String palavra): Verifica se uma palavra está presente no conjunto.
exibirPalavrasUnicas(): Exibe todas as palavras únicas do conjunto.
Pesquisa em Set Ordenação em Set
1. Cadastro de Produtos
Crie uma classe chamada "CadastroProdutos" que possui um conjunto de objetos do tipo "Produto" como atributo. Cada produto possui atributos como nome, cod, preço e quantidade. Implemente os seguintes métodos:
adicionarProduto(long cod, String nome, double preco, int quantidade): Adiciona um produto ao cadastro.
exibirProdutosPorNome(): Exibe todos os produtos do cadastro em ordem alfabética pelo nome.
exibirProdutosPorPreco(): Exibe todos os produtos do cadastro em ordem crescente de preço.
#fazer
2. Lista de Alunos
Crie uma classe chamada "GerenciadorAlunos" que irá lidar com uma lista de alunos. Cada aluno terá atributos como nome, matrícula e nota. Implementaremos os seguintes métodos:
adicionarAluno(String nome, Long matricula, double media): Adiciona um aluno ao conjunto.
removerAluno(long matricula): Remove um aluno ao conjunto a partir da matricula, se estiver presente.
exibirAlunosPorNome(): Exibe todos os alunos do conjunto em ordem alfabética pelo nome.
exibirAlunosPorNota(): Exibe todos os alunos do conjunto em ordem crescente de nota.
exibirAlunos(): Exibe todos os alunos do conjunto.
Operações Básicas Set
Operações Básicas Set: testando os métodos
Pesquisa Set
1. Agenda de Contatos
Crie uma classe chamada "AgendaContatos" que utilize um Map para armazenar os contatos. Cada contato possui um nome como chave e um número de telefone como valor. Implemente os seguintes métodos:
adicionarContato(String nome, Integer telefone): Adiciona um contato à agenda, associando o nome do contato ao número de telefone correspondente.
removerContato(String nome): Remove um contato da agenda, dado o nome do contato.
exibirContatos(): Exibe todos os contatos da agenda, mostrando o nome e o número de telefone de cada contato.
pesquisarPorNome(String nome): Pesquisa um contato pelo nome e retorna o número de telefone correspondente.
#fazer
2. Dicionário
Crie uma classe chamada "Dicionario" que utilize um Map para armazenar palavras e suas respectivas definições. Implemente os seguintes métodos:
adicionarPalavra(String palavra, String definicao): Adiciona uma palavra e sua definição ao dicionário, associando a palavra à sua definição correspondente.
removerPalavra(String palavra): Remove uma palavra do dicionário, dado o termo a ser removido.
exibirPalavras(): Exibe todas as palavras e suas definições do dicionário, mostrando cada palavra seguida de sua respectiva definição.
pesquisarPorPalavra(String palavra): Pesquisa uma palavra no dicionário e retorna sua definição correspondente.
Pesquisa Set: testando os métodos
Ordenação Set
#fez este mas todo diferente...
1. Estoque de Produtos com Preço
Crie uma classe chamada "EstoqueProdutos" que utilize um Map para armazenar os produtos, suas quantidades em estoque e seus respectivos preços. Cada produto possui um código como chave e um objeto Produto como valor, contendo nome, quantidade e preço. Implemente os seguintes métodos:
adicionarProduto(long cod, String nome, int quantidade, double preco): Adiciona um produto ao estoque, juntamente com a quantidade disponível e o preço.
exibirProdutos(): Exibe todos os produtos, suas quantidades em estoque e preços.
calcularValorTotalEstoque(): Calcula e retorna o valor total do estoque, considerando a quantidade e o preço de cada produto.
obterProdutoMaisCaro(): Retorna o produto mais caro do estoque, ou seja, aquele com o maior preço.
obterProdutoMaisBarato(): Retorna o produto mais barato do estoque, ou seja, aquele com o menor preço.
obterProdutoMaiorQuantidadeValorTotalNoEstoque(): Retorna o produto que está em maior quantidade no estoque, considerando o valor total de cada produto (quantidade * preço).
Ordenação Set: testando os métodos
Map Interface
2. Contagem de Palavras
Crie uma classe chamada "ContagemPalavras" que utilize um Map para armazenar as palavras e a quantidade de vezes que cada palavra aparece em um texto. Implemente os seguintes métodos:
adicionarPalavra(String palavra, Integer contagem): Adiciona uma palavra à contagem.
removerPalavra(String palavra): Remove uma palavra da contagem, se estiver presente.
exibirContagemPalavras(): Exibe todas as palavras e suas respectivas contagens.
encontrarPalavraMaisFrequente(): Encontra a palavra mais frequente no texto e retorna a palavra e sua contagem.
1. Agenda de Eventos
Crie uma classe chamada "AgendaEventos" que utilize um `Map` para armazenar as datas e seus respectivos Eventos. Cada evento é representado por um objeto da classe "Evento", que possui atributos como nome do evento e o nome da atração. Implemente os seguintes métodos:
adicionarEvento(LocalDate data, String nome, String atracao): Adiciona um evento à agenda.
exibirAgenda(): Exibe a agenda de eventos em ordem crescente de data.
obterProximoEvento(): Retorna o próximo evento que ocorrerá.
2. Livraria Online
Crie uma classe chamada "LivrariaOnline" que representa uma livraria online. Essa classe utiliza um Map para armazenar os livros disponíveis na livraria, utilizando o link da obra na Amazon Marketplace como chave e um objeto da classe "Livro" como valor. A classe "Livro" possui atributos como título, autor e preço. Através da classe "LivrariaOnline", implemente os seguintes métodos:
adicionarLivro(String link, String titulo, String autor, private double preco): Adiciona um livro à livraria, utilizando o ISBN como chave no Map.
removerLivro(String titulo): Remove um livro da livraria, dado o titulo do livro.
exibirLivrosOrdenadosPorPreco(): Exibe os livros da livraria em ordem crescente de preço.
pesquisarLivrosPorAutor(String autor): Retorna uma lista de todos os livros escritos por um determinado autor.
obterLivroMaisCaro(): Retorna o livro mais caro disponível na livraria.
exibirLivroMaisBarato(): Retorna o livro mais barato disponível na livraria.
#vi as aulas não cansei aqui :P
Operações Básicas Map
Operações Básicas Map: testando os métodos
Pesquisa Map
Pesquisa Map - testando os métodos
Ordenação Map
Ordenação Map - testando os métodos
Pesquisa Ordenação - testando os métodos
Ganhando Produtividade com Stream API https://github.com/digitalinnovationone/ganhando_produtividade_com_Stream_API_Java Introdução Programação imperativa X Programação Declarativa Lambda Expressions Method Reference
#Gostei muinto não, ela pwgou um código não sei de onde e foi apresentando comentando... perfiro quando o cṕodigo é construido no decorrer da aula... Stream API na Prática Functional Interface (@FuncionalInterface) Functional Interface - Consumer Functional Interface - Supplier Functional Interface - Function<T,R> Functional Interface - Predicate Functional Interface - BinaryOperator
#fazer esse povo :D, organizar meu tempo...
Desafio! Conheça as operações do Stream API
Para todos os desafios, utilizem a lista de números inteiros fornecida:
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);
* Desafio 1 - Mostre a lista na ordem numérica:
Crie um programa que utilize a Stream API para ordenar a lista de números em ordem crescente e a exiba no console.
*Desafio 2 - Imprima a soma dos números pares da lista:
Utilizando a Stream API, realize a soma dos números pares da lista e exiba o resultado no console.
* Desafio 3 - Verifique se todos os números da lista são positivos:
Com a ajuda da Stream API, verifique se todos os números da lista são positivos e exiba o resultado no console.
* Desafio 4 - Remova todos os valores ímpares:
Utilize a Stream API para remover os valores ímpares da lista e imprima a lista resultante no console.
* Desafio 5 - Calcule a média dos números maiores que 5:
Com a Stream API, calcule a média dos números maiores que 5 e exiba o resultado no console.
* Desafio 6 - Verificar se a lista contém algum número maior que 10:
Utilize a Stream API para verificar se a lista contém algum número maior que 10 e exiba o resultado no console.
* Desafio 7 - Encontrar o segundo número maior da lista:
Com a ajuda da Stream API, encontre o segundo número maior da lista e exiba o resultado no console.
* Desafio 8 - Somar os dígitos de todos os números da lista:
Utilizando a Stream API, realize a soma dos dígitos de todos os números da lista e exiba o resultado no console.
* Desafio 9 - Verificar se todos os números da lista são distintos (não se repetem):
Com a Stream API, verifique se todos os números da lista são distintos (não se repetem) e exiba o resultado no console.
* Desafio 10 - Agrupe os valores ímpares múltiplos de 3 ou de 5:
Utilize a Stream API para agrupar os valores ímpares múltiplos de 3 ou de 5 e exiba o resultado no console.
* Desafio 11 - Encontre a soma dos quadrados de todos os números da lista:
Utilizando a Stream API, encontre a soma dos quadrados de todos os números da lista e exiba o resultado no console.
* Desafio 12 - Encontre o produto de todos os números da lista:
Com a ajuda da Stream API, encontre o produto de todos os números da lista e exiba o resultado no console.
* Desafio 13 - Filtrar os números que estão dentro de um intervalo:
Utilize a Stream API para filtrar os números que estão dentro de um intervalo específico (por exemplo, entre 5 e 10) e exiba o resultado no console.
* Desafio 14 - Encontre o maior número primo da lista:
Com a Stream API, encontre o maior número primo da lista e exiba o resultado no console.
* Desafio 15 - Verifique se a lista contém pelo menos um número negativo:
Utilizando a Stream API, verifique se a lista contém pelo menos um número negativo e exiba o resultado no console.
* Desafio 16 - Agrupe os números em pares e ímpares:
Utilize a Stream API para agrupar os números em duas listas separadas, uma contendo os números pares e outra contendo os números ímpares da lista original, e exiba os resultados no console.
* Desafio 17 - Filtrar os números primos da lista:
Com a ajuda da Stream API, filtre os números primos da lista e exiba o resultado no console.
* Desafio 18 - Verifique se todos os números da lista são iguais:
Utilizando a Stream API, verifique se todos os números da lista são iguais e exiba o resultado no console.
* Desafio 19 - Encontre a soma dos números divisíveis por 3 e 5:
Com a Stream API, encontre a soma dos números da lista que são divisíveis tanto por 3 quanto por 5 e exiba o resultado no console.
Instruções:
Cada desafio deverá ser implementado em classes separadas neste mesmo pacote.
Os desafios podem ser executados individualmente a partir dos métodos main de cada classe.
Utilize a Stream API para implementar as operações solicitadas em cada desafio.
Extra: Conhecendo a Class Optional<T>
Extra: Utilizando a Class Optional<T> em um projeto real
https://github.com/cami-la/url-shortener-preview
Desafio: https://github.com/digitalinnovationone/trilha-java-basico/blob/main/desafios/poo/README.md Descrição do Desafio Chegou a hora de colocarmos em prática toda a concepção de análise de negócios, requisitos, conceitos da programação orientada a objetos e modelagem UML. Com base no vídeo de lançamento do iPhone conforme link abaixo, elabore em uma ferramenta de UML de sua preferência. A diagramação das classes e interfaces com a proposta de representar os papéis do iPhone de: Reprodutor Musical, Aparelho Telefônico e Navegador na Internet. Em seguida crie as classes e interfaces no formato de arquivos .java
Lançamento iPhone 2017
Agora é a sua vez de ser o protagonista! Implemente o desafio sugerido pela expert criando um repositório próprio e, com isso, aumentando ainda mais seu portfólio de projetos no GitHub!
Pré-requisitos:
Lógica de programação e POO;
Conhecimentos básicos(Java);
Computador com SO de sua preferência(Windows, Linux, Mac OS);
IDE (Visual Studio Code, Eclipse, etc);
Slides e GitHub A apresentação completa utilizada durante o curso está disponível AQUI
Com isso, você terá acesso ao projeto do Github e links explorados durante as aulas.
Repodutor Musicial: tocar, pausar, selecionarMusica Aparelho Telefônico: ligar, atender, iniciarCorrerioVoz Navegador na Internet: exibirPagina, adicionarNovaAba, atualizarPagina
Desafios de Código: Aperfeiçoe Sua Lógica e Pensamento Computacional Apresentação PBL, Lógica e Pensamento Computacional Aprendizado baseado em problemas A Linguagem é Só Um Detalhe... Como Resolver Desafios de Código
Gerenciamento de Dependências e Build em Java com Maven Introdução, definição e instalação Maven: ferramenta de gerenciar build e dependências de um projeto. Primeiros projeto e conceitos no terminal... mvn archetype:generate -DgroupId=dio.AWS -DartifactId=quick-start-maven -Darchetype=maven-archtype-quickstart -DinteractiveMode=false Criou um projeto, padronizado da internet, montou a estrutura e já da a base para se começar a tarbalhar # não func... * ai no projeto copilar: compile testar: test Empacotar: package Limpar: clear ?maven archetype list POM, dependências e repositórios unidade fundamental apache maven xml, detalha o projeto e como contruir-lo, "buldar, empacotar" super pom -> o que não for sobre escrito ele vai pegar daki... repositórios locais/remotos de plugins Gerenciando dependências ... direta e transitiva: direva vc declarou, transitiva são as dependências das dependências escopo: limina as dependecias transitivas para cada local, teste, runtime, default, provided, system, import, optional, exclusions; Para que o pacote não fique muinto grande com várias dependências de dependências, Maven Buld Lifecucle ciclo de vida de construção fases -> phases objetivos -> goals default -> deploy local validate compile test-compile test integration-test package install deploy clean ´pre-site site post-site site-deploy Projetos multi-módulos plugin
#Foi bem mal feito esta daqui, praso é pra amanhã e desafio não quiz pensar criativamente sobre... Desmistificando Microsserviços, BFF e DDD
Testes Unitários Com JUnit after e before assumptions e teste condicionais ordenaçãod e testes
Imersão no Spring Framework com Spring Boot Beans versus Components Scopes - Singleton ou Prototype Properties Value Configuration Properties Conceito de ORM e JPA Spring Data JPA Conexão com Postgres JPA Repository
Criando uma API REST Documentada com Spring Web e Swagger
Adicionando Segurança a uma API REST com Spring Security
Desafio Explorando padrões de projetos java * singleton: uma instancia criada de forma única, e esta reutilizada https://stackoverflow.com/questions/15019306/regarding-static-holder-singleton-pattern/24018148#24018148 * strategy bolar estrategias a situações, robo * facade uma interface mais simples https://start.spring.io/ H2 -> banco de dados em memória
https://github.com/digitalinnovationone/lab-padroes-projeto-java https://github.com/digitalinnovationone/lab-padroes-projeto-spring
Introdução a Banco de Dados Relacionais (SQL) https://github.com/pamelaborges/dio-bd-relacional Apresentação Pessoal Apresentação do Curso Conceitos Básicos e Estrutura do Banco de Dados Relacional @ACID Introdução e Conceitos Básicos de SQL MER e DER: Modelagem de Bancos de Dados -> app.creately.com Configuração do Ambiente -> clients.cloudclusters.io Modelagem de dados relacionais Tabelas, Colunas e Registros Operações CRUD: Insert e SELECT Operações CRUD: Update e Delete Alterando e Excluindo Tabelas Chaves Primárias e Estrangeiras Normalização de Dados
Introdução a Banco de Dados NoSQL https://github.com/pamelaborges/dio-db-nosql Conceitos básicos dos bancos de dados não relacionais não seguem modelo de tabelas e talacionamentos não relacionais alto volume de dados alt flexibilidade na estrutura de dados onde a consistência imediata dos dados não é critiva Visão geral dos tipos de NoSQL Introdução ao mongoDB https://www.mongodb.com/ Instalação e configuração do mongoDB Atlas #pulou :P Modelagem de dados usando documentos Estratégias de modelagem de dados eficientes e escaláveis Operações no MongoDB Consultas simples Introdução ao Redis try.redis.io consulta apenas pelas chaves, não pelo valor