
Nessa aula vamos aprender como fazer um Hello World em Kotlin sem instalar nad, usando o Playground dentro do site: https://play.kotlinlang.org/
Esse playground é muito interessante quando queremos testar alguma coisa em Kotlin e não queremos criar um projeto, podemos usar o Playground para ficar testando as coisas rapidamente.
Nessa aula vamos aprender como Instalar a IDE IntelliJ Community no Windows e rapidamente vamos testar fazendo um Hello World.
Essa versão do IntelliJ é totalmente grátis, ela é um pouco limitado em relação a versão paga, mas é suficiente para trabalhar na maioria dos casos.
Nessa aula vamos aprender como Instalar a IDE IntelliJ Community no Linux Ubuntu e rapidamente vamos testar fazendo um Hello World.
Essa versão do IntelliJ é totalmente grátis, ela é um pouco limitado em relação a versão paga, mas é suficiente para trabalhar na maioria dos casos.
Nessa aula vamos aprender um dos principais recursos da Orientação a Objetos que é: Classes.
Kotlin não é uma linguagem em que todo o código precisa estar contido em uma classe.
Ela incorpora a programação procedural e funcional e, caso seja necessário, se pode utilizar os objetos nativos, implementando as regras de negócio do projeto com funções.
Porém, quando trabalhamos de forma Orientada a Objetos nessa linguagem devemos nos atentar para os diversos recursos que ela dispõe para a escrita de classes.
Uma classe é um bloco de construção de software fundamental, encontrado na grande maioria das linguagens Orientadas a Objetos e, dessa forma, também presente em Kotlin.
Elas são usadas para criar novos tipos de dados, utilizando uma estrutura composta por métodos e variáveis que podem possuir os seus próprios tipos.
Mais um conceito fundamental dentro da Orientação a Objetos: Properties e Fields.
Junto com Classes forma a base desse Paradigma de Programação tão utilizado.
A idéia básica e mais importante de uma classe é o encapsulamento.
É uma Propriedade para encapsular código e dados, em uma única entidade.
Em Java, os dados são armazenados nos campos e são principalmente privados.
Portanto, métodos de acessador - um getter e um setter são fornecidos para permitir que os clientes da classe especificada acessem os dados.
Para enviar notificações sobre a alteração ou validar o valor passado, uma lógica adicional também está presente no configurador.
Propriedade é a combinação de acessórios e os campos no caso de Java.
No caso do Kotlin, as propriedades devem ser um recurso de idioma de primeira classe.
Esses recursos substituem campos e métodos de acessador.
Uma propriedade em uma classe é declarada igual a declarar uma variável com as palavras-chave val e var.
Uma propriedade declarada como var é mutável e, portanto, pode ser alterada, já uma propriedade declarada com val é Imutável.
Funções são como receitas. Eles podem executar um conjunto de instruções sobre dados ou variáveis e retornar o resultado. A beleza das funções é que elas são recicláveis. Ou seja, a função pode ser usada repetidamente sem precisar escrever o mesmo código novamente.
Na programação, às vezes surge a necessidade de um tipo ter apenas certos valores.
Para isso, foi introduzido o conceito de Enumeração.
Enumeração é uma lista nomeada de constantes.
No Kotlin, como muitas outras linguagens de programação, um enum tem seu próprio tipo especializado, indicando que algo tem vários valores possíveis.
Diferentemente das enumerações Java, as enumerações Kotlin são classes.
Alguns pontos importantes sobre as classes enum no kotlin
As constantes enum não são apenas meras coleções de constantes elas têm propriedades, métodos etc.
Cada uma das constantes enum atua como instâncias separadas da classe e separadas por vírgulas.
Enums aumenta a legibilidade do seu código, atribuindo nomes predefinidos às constantes.
Uma instância da classe enum não pode ser criada usando construtores.
Herança
Herança é um princípio de orientação a objetos, que permite que classes compartilhem atributos e métodos, através de "heranças".
Ela é usada na intenção de reaproveitar código ou comportamento generalizado ou especializar operações ou atributos.
O conceito de herança de várias classes é conhecido como herança múltipla.
Como exemplo pode-se observar as classes 'Aluno' e 'Professor', onde ambas possuem atributos como nome, endereço e telefone.
Nesse caso pode-se criar uma nova classe chamada por exemplo, 'Pessoa', que contenha as semelhanças entre as duas classes, fazendo com que aluno e professor herdem as características de pessoa, desta maneira pode- se dizer que aluno e professor são subclasses de pessoa.
Também podemos dizer que uma classe pode ser abstrata(abstract) ou seja ela não pode ter uma instância, ela apenas "empresta" seus atributos e metódos como molde para novas classes.
Interface
As interfaces no Kotlin podem conter declarações de métodos abstratos, bem como implementações de métodos.
O que os diferencia das classes abstratas é que as interfaces não podem armazenar estado.
Eles podem ter propriedades, mas precisam ser abstratas ou fornecer implementações de acessador.
Referencia:
https://kotlinlang.org/docs/reference/classes.html
https://kotlinlang.org/docs/reference/interfaces.html
https://pt.wikipedia.org/wiki/Heran%C3%A7a_(programa%C3%A7%C3%A3o_orientada_a_objetos)
Continuando com a Parte 2 sobre Herança e Interface
Nessa aula vamos aprender um recurso muito legal do Kotlin chamado: Data Class
Frequentemente, criamos classes cujo principal objetivo é armazenar dados.
Nessa classe, algumas funcionalidades padrão e funções utilitárias geralmente são derivadas mecanicamente dos dados.
No Kotlin, isso é chamado de "Data Class" e é marcado como dados: "data class"
Site Spring Initializr: https://start.spring.io/
Site Bootstrap: https://getbootstrap.com/
Site Thymeleaf: https://www.thymeleaf.org/
Pasta: src/resources/
Arquivo: messages.properties
Properties:
blog.title=Blog e-Programar
blog.subTitle=Course Kotlin Web MVN with Spring Framework
author.about=Sobre o Autor
author.socialNetwork=Redes Sociais
articles.history=Histórico
!!! IMPORTANTE !!!
É muito importante entender que para ver o resultado agora precisamos executar rodando a aplicação pelo IntelliJ.
Aquela maneira estática que estavamos testando apenas clicando no ícone do Google Chrome não vai funcionar.
Isso acontece porque agora precisamos do servidor, precismos que nosso Back-end enteja rodando.
Nessa aula vamos começar entender como funcionam os Controllers dentro do mecanismo de MVC do Spring.
E vamos criar nossa primeira rota para o cadastro de Usuários de nosso Sistema.
Depois de criar nossa primeira rota para o Cadastro de Usuário,
Agora vamos preparar a parte View do Cadastros.
Por fim, depois de criarmos a Rota(Controller) e o Front-end(View)
Agora vamos finalizar o Fluxo MVC com a criação da Classe de Model e Entity do nosso Cadastro de Usuário.
MVC é o acrônimo de Model-View-Controller (em português: Arquitetura Modelo-Visão-Controle - MVC) é um padrão de projeto de software,[1] ou padrão de arquitetura de software formulado na década de 1970,[2] focado no reuso de código e a separação de conceitos em três camadas interconectadas, onde a apresentação dos dados e interação dos usuários (front-end) são separados dos métodos que interagem com o banco de dados (back-end).[2]
Normalmente usado para o desenvolvimento de interfaces de usuário que divide uma aplicação partes (camadas/componentes) interconectadas. Isto é feito para separar representações de informação internas dos modos como a informação é apresentada para e aceita pelo usuário,[3][4] levando ao desenvolvimento paralelo de maneira eficiente.
Com isso além de trabalharmos o Fluxo MVC, também teremos nosso primeiro contato com o ORM/JPA criando o mecanismo que irá gravar nossos Usuário no Banco de Dados.
ORM = Object Relational Mapping.
Mapeamento objeto-relacional
Object Relational Mapping (ORM) informa resumidamente sobre o que é ORM e como ela funciona.
ORM é uma capacidade de programação para converter os dados de tipo de objeto relacional para tipo e vice-versa.
A característica principal do mapeamento ORM é obrigatório ou um objeto para seus dados no Banco de Dados.
Durante o mapeamento, temos de ter em consideração os dados, o tipo de dados, e as suas relações com a entidade ou entidades de qualquer outra tabela.
Recursos avançados
Idiomática persistência: ele permite que você escreva a persistência classes usando orientação a objetos classes.
Alto desempenho: ele tem muitos buscando técnicas e esperançoso o trancamento das técnicas.
Confiável: ele é altamente estável e utilizado por muitos programadores profissionais.
A arquitetura acima explica como objeto os dados são armazenados em banco de dados relacional em três fases.
Fase1
A primeira fase, denominada fase os dados de objeto EM POJO, contém as classes, interfaces de serviço e classes. Trata-se do principal órgão negócios camada, que tem lógica de negócios operações e atributos.
Por exemplo, vamos ter um banco de dados de funcionários no esquema.
Empregado em POJO classe contém atributos como ID, nome, salário e designação. Ele também contém métodos como setter e getter de esses atributos.
Funcionário DAO/classes de serviço contêm métodos de serviço, tais como criar funcionário, encontrar funcionários e excluir funcionário.
Fase 2
A segunda fase, denominada fase mapeamento ou de persistência, contém JPA provider, arquivo de mapeamento (ORM.xml), JPA Loader e grelha do objecto.
JPA Provider: é o fornecedor produto que contém a JPA sabor javax.persistence). Por exemplo Eclipselink, Toplink E Hibernate, etc.
Arquivo de Mapeamento : o arquivo de mapeamento (ORM.xml) contém configuração de mapeamento entre os dados de um POJO EM classe e os dados em um banco de dados relacional.
JPA Loader: o JPA loader funciona como uma memória cache. Ele pode carregar o relacional dados da grade. Ela funciona como uma cópia do banco de dados para interagir com as classes de serviço para dados EM POJO POJO EM (atributos de classe).
Objeto Grid: é um local temporário que pode armazenar uma cópia de dados relacionais, como a memória cache. Todas as consultas ao banco é a primeira realizada sobre os dados no objeto grid. Somente depois que ele é comprometido, ela afeta o banco de dados principal.
Fase 3
A terceira fase é a fase dados relacional. Ele contém os dados relacionais que é logicamente ligado ao componente comercial. Como discutido acima, somente quando a componente empresarial compromete os dados, ele é armazenado na base de dados fisicamente. Até então, os dados modificados é armazenado em uma memória cache como um formato de grade. O processo de obtenção dos dados é idêntico ao de armazenar os dados.
O mecanismo de interação de programático acima de três fases é chamado de mapeamento objeto-relacional.
JPA = Java Persistence API.
Java Persistence API (ou simplesmente JPA) é uma API padrão da linguagem Java que descreve uma interface comum para frameworks de persistência de dados. A JPA define um meio de mapeamento objeto-relacional para objetos Java simples e comuns (POJOs), denominados beans de entidade. Diversos frameworks de mapeamento objeto/relacional como o Hibernate implementam a JPA. Também gerencia o desenvolvimento de entidades do Modelo Relacional usando a plataforma nativa Java SE e Java EE.
Originou-se num projeto comum entre os desenvolvedores para se criar o padrão[1]. Fortemente baseado nas ideias trazidas pelo Hibernate, tanto que o líder da primeira versão dessa especificação é o criador do framework.
Ou seja, é utilizado principalmente para conexão e acesso a banco de dados relacionais.
Nessa aula finalizamos o Cadastro de Usuário utilizando um recurso do Thymeleaf para manter a tela com os dados preenchidos quando acontecer um erro de validação.
Nessa Aula vamos criar o Login para nosso Sistema.
Exemplo do link de uma imagem: https://cdn0.iconfinder.com/data/icons/set-ui-app-android/32/8-512.png
Veja os arquivos disponiveis para download
Agora vamos criar o Formulário de Login para nosso Blog.
E vamos contimuar usando recursos que já aprendemos nas aulas anteriores, como:
Controller
MVC
JPA
Thymeleaf
Bootstrap
E assim vamos praticando para até o final do curso todos esses conceitos e comandos estejam fixos na memória.
Por isso, é muito importante que você reproduza todoas as aulas.
Nessa aula vamos melhorar nossa aplicação controlando o Usuário que está logado em nosso Blog.
Assim podemos criar comportamento para o Blog quando existir um Usuário logado.
Para fazer isso vamos usar um recurso do Protocolo HTTP chamado Session.
O Spring facilita muito essa tarefa.
E finalmente vamos automatizar a criação do nosso Usuário Administrator.
E daqui para frente não vamos precisar ficar cadastrando um Usuário toda vez que queremos testar a aplicação \o/
Nessa aula vamos criar nossa Entidade JPA para Categorias.
Então, criaomos um Auto Create para as Categorias e carregamos dinamicamente em nossa pagina index.
application.properties
spring.datasource.url=jdbc:h2:mem:blog
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
Para acessar o Banco de Dados pelo Navegador acesse: http://localhost:8080/h2-console
Nessa Aula continuamos o Cadastro de Artigos implementando a regra em nosso Controller para salvar um Artigo.
E agora finalizamos o Cadastro de Artigos exibindo os Artigos cadastrado na Tela Principal do Blog
Refatoração (do inglês Refactoring) é o processo de modificar um sistema de software para melhorar a estrutura interna do código sem alterar seu comportamento externo.
O uso desta técnica aprimora a concepção (design) de um software e evita a deterioração tão comum durante o ciclo de vida de um código. Esta deterioração é geralmente causada por mudanças com objetivos de curto prazo ou por alterações realizadas sem a clara compreensão da concepção do sistema.
Outra consequência é a melhora no entendimento do código, o que facilita a manutenção e evita a inclusão de defeitos. Esta melhora no entendimento vem da constante alteração do código com objetivo de facilitar a comunicação de motivações, intenções e objetivos por parte do programador.
É fundamental que o sistema de software possua testes automatizados para realizar refatoração. Desta forma, será possível garantir que o comportamento externo não foi alterado.
O livro mais importante sobre refatoração é Refactoring: Improving the Design of Existing Code (ISBN 0-201-48567-2) de Martin Fowler, onde são explicados os conceitos, motivações e uma série de refatorações descritas passo a passo.
Nessa Aula vamos implementar a paginação dos artigos em nossa pagina principal.
Faremos a parte de Back-end e Front-end.
Agora vamos evoluir nossa Index preenchendo dinamicamente os dados de Sobre o Autor
Finalizando os dados do Autor agora com os dados das redes sociais
Nessa aula começamos criar nossa pagina de Lista de Artigos.
Criamos a Rota e o Template ainda bem simples.
Código fonte dessa aula disponível para Download.
Agora que temos nossa Rota e o Template simples, precisamos fazer algumas correções de alguns problemas que ficaram em nosso Front-End
E nessas aula vamos finalizar nossa Feature de Lista de Artigos
Completando nossa feature de Artigos, agora vamos implementar o Filtro de Artigos pelo Usuário logado e ordenado do mais recente para o mais antigo.
Nessa aula vamos fazer o Filtro de Artigos por Categoria.
Agora ajustamo o Formulário de Cadastro de Artigos para ter Categoria
Nessa aula Implementamos a Alteração de um Artigo, e aplicamos uma regra para o botão de alteração só aparecer para os Artigos do próprio Autor.
Nessa aula completamos nosso CRUD de Artigo implementando o Delete
Nessa aula organizamos a estrutura do nosso Projeto utilizando Camadas através de Packages.
Nessa aula refatoramos nossa aplicação para desacoplar nosso Controller de Artigos delegando as Regras de Negócio para uma Camada de Serviço.
Continuando nossa refatoracao agora terminamos criando a Camada Service para as Outras Entidades
Rondando o Projeto através da classe Principal
Kotlin Web MVC com Spring Framework - Hands on
Aprenda a programar Kotlin na Web através do desenvolvimento de uma aplicação real
Neste curso vamos desenvolver juntos uma aplicação Web com a linguagem Kotlin e o framework Spring.
Vamos utilizar recursos do dia-a-dia mesmo do desenvolvimento de uma aplicação Web, como pro exemplo:
Padrão MVC
Bootstrap
Thymeleaf
Font Awesome
Spring Web
Spring Data
JPA
Banco de Dados
Gradle
O curso é totalmente Hands on, ou seja:
Vamos desenvolver juntos passo-a-passo.
Vamos resolver problemas que acontecem no desenvolvimento real juntos.
E muito mais.
As tecnologias utilizadas no curso são pensadas e escolhidas totalmente baseado nas vagas de emprego, são tecnologias modernas e super utilizadas pela maioria das grandes empresas.
Nesse Curso Você vai aprender a desenvolver uma aplicação Web com Backend e Front totalmente do zero até o deploy em um Cloud. Sem enrolação, mão na massa mesmo e criando código. Tudo o que as empresas esperam de você.
Kotlin é muito conhecida e utilizada para desenvolvimento Mobile, porém, nos últimos anos vem sendo adotada em grandes projetos por ser uma linguagem bem moderna, produtiva e muito segura para desenvolver projetos corporativos.
Empresas que tem usado: Itaú, Banco Cora, Pag Seguro, Creditas e tantas outras.