Skip to main content

4 posts tagged with "djonathan"

View All Tags

· 3 min read

13/11/2021 - Aula 4 de Backend com Java (Presencial)

Após algumas semanas sem aula por problemas de saude e disponibilidade da sala, a aula voltou hoje, sendo a ultima do ano e da materia.

O Professor Djonathan começa a aula falando sobre padrão de organização de um projeto. Comparando alguns tipos. Ele falou que posteriormente vai passar um material sobre isso.

Essa parte de organização vai ser utilizada para o trabalho, além de uma forma de documentar a nossa API utilizando OpenAPI. O professor foi atualizando o projeto que temos, do qual vamos ter que seguir para entregar o trabalho.

Isso foi o que foi visto pela manha. Após o almoço, começamos a ver sobre APIs REST e os seus verbos HTTP, vimos sobre HATEOAS e sobre o uso de Swagger.

Voltamos as aulas presenciais, pois o decreto que permitia não está mais em vigor. O Professor Djonathan começa a aula fazendo uma revisão da segunda aula.

  • Princípio da Responsbilidade Única
    • Classes e metodos sempre coesos, que ele ~e responsavel por ele mesmo.
  • Princípio Aberto-Fechado
    • Uma forma melhor de escrever, que garante a sustentabilidade do código.
  • Padrões

Depois de revisar, a aula continuou com Spring, utilizando o projeto unipar-2021-aula-2 para implementar alguns recursos do Spring, conforme o professor ia fazendo ele ia explicando a utilização dos componentes.

  • @Component
  • @AutoWired
  • Injeção de dependência por Setter
  • Contrutor

Tudo isso visto até o momento foi o modulo 1, agora vamos começar o modulo 2, que é a utilização de APIs.

Como levar o monte Fuji do Japão para a India? Monte Fuji R: Uma foto já faz você levar para a India.

Livro: How Do You Fight a Horse-Sized Duck?: Secrets to Succeeding at Interview Mind Games and Getting the Job You Want

API

API é um conjunto de definições e protocolos usado no desenvolvimento e na integração de software de aplicações.

REST

O estilo de Transferência de Estado Representacional (REST) é uma abstração dos elementos arquiteturais de um sistema de distribuição de hipermídia.

Estruturas como URIs (Coleções vs Recursos vs Hierarquias)

  • /planos
  • /planos/1
  • /planos/1/dependentes/
  • /planos/1/dependentes/4

Obs: sempre utilizar substantivos e nunca verbos

  • /planos/cancelar (errado)

Padrões para URIs

  • Mantenha tudo em caixa baixa
  • Substitua espaços com hífens ou underscore

Representação

  • Deve ser consistentes (a mesma requisição deve retornar a mesma resposta caso o recurso não tenha sido modificado)
  • O conteúdo pode ser negociado

JSON

https://www.json.org/json-pt.html

Exemplo de JSON

{
"nome": "João da Silva",
"idade": "20",
"cidade": "São Paulo",
"estado": "SP",
"pais": "Brasil"
}

Exemplo 2

{
"cliente": 1,
"data": "2020-10-10",
"itens": [
{
"id": 1,
"nome": "Item 1",
"quantidade": 10,
"valor": 100.00
},
{
"id": 2,
"nome": "Item 2",
"quantidade": 20,
"valor": 200.00
}
]
}

Com isso terminamos a aula pela parte da manhã, vamos para o almoço e depois a aula continuou com a criação de um novo projeto, para ser a nossa API.

Esse projeto é um sistema para aulas online, começamos montando a parte da disciplina, criando os metodos GET para retornas todos os dados, POST, para criar uma nova disciplina, PUT para atualizar os dados da disciplina por inteiro e PATCHE para atualizar somente um dado, e por fim, DELETE para deletar a disciplina.

Verbos HTTP

Além de ver alguns dos verbos HTTPS, foi falado sobre os códigos de status HTTP.

Status HTTP

Com isso foi finalizado a aula.

Trabalho

As informações do trabalho estão na pagina da disciplina.
Link

· 3 min read

09/10/2021 - Aula 3 de Backend com Java (Presencial)

Voltamos as aulas presenciais, pois o decreto que permitia não está mais em vigor. O Professor Djonathan começa a aula fazendo uma revisão da segunda aula.

  • Princípio da Responsbilidade Única
    • Classes e metodos sempre coesos, que ele ~e responsavel por ele mesmo.
  • Princípio Aberto-Fechado
    • Uma forma melhor de escrever, que garante a sustentabilidade do código.
  • Padrões

Depois de revisar, a aula continuou com Spring, utilizando o projeto unipar-2021-aula-2 para implementar alguns recursos do Spring, conforme o professor ia fazendo ele ia explicando a utilização dos componentes.

  • @Component
  • @AutoWired
  • Injeção de dependência por Setter
  • Contrutor

Tudo isso visto até o momento foi o modulo 1, agora vamos começar o modulo 2, que é a utilização de APIs.

Como levar o monte Fuji do Japão para a India? Monte Fuji R: Uma foto já faz você levar para a India.

Livro: How Do You Fight a Horse-Sized Duck?: Secrets to Succeeding at Interview Mind Games and Getting the Job You Want

API

API é um conjunto de definições e protocolos usado no desenvolvimento e na integração de software de aplicações.

REST

O estilo de Transferência de Estado Representacional (REST) é uma abstração dos elementos arquiteturais de um sistema de distribuição de hipermídia.

Estruturas como URIs (Coleções vs Recursos vs Hierarquias)

  • /planos
  • /planos/1
  • /planos/1/dependentes/
  • /planos/1/dependentes/4

Obs: sempre utilizar substantivos e nunca verbos

  • /planos/cancelar (errado)

Padrões para URIs

  • Mantenha tudo em caixa baixa
  • Substitua espaços com hífens ou underscore

Representação

  • Deve ser consistentes (a mesma requisição deve retornar a mesma resposta caso o recurso não tenha sido modificado)
  • O conteúdo pode ser negociado

JSON

https://www.json.org/json-pt.html

Exemplo de JSON

{
"nome": "João da Silva",
"idade": "20",
"cidade": "São Paulo",
"estado": "SP",
"pais": "Brasil"
}

Exemplo 2

{
"cliente": 1,
"data": "2020-10-10",
"itens": [
{
"id": 1,
"nome": "Item 1",
"quantidade": 10,
"valor": 100.00
},
{
"id": 2,
"nome": "Item 2",
"quantidade": 20,
"valor": 200.00
}
]
}

Com isso terminamos a aula pela parte da manhã, vamos para o almoço e depois a aula continuou com a criação de um novo projeto, para ser a nossa API.

Esse projeto é um sistema para aulas online, começamos montando a parte da disciplina, criando os metodos GET para retornas todos os dados, POST, para criar uma nova disciplina, PUT para atualizar os dados da disciplina por inteiro e PATCHE para atualizar somente um dado, e por fim, DELETE para deletar a disciplina.

Verbos HTTP

Além de ver alguns dos verbos HTTPS, foi falado sobre os códigos de status HTTP.

Status HTTP

· 2 min read

25/09/2021 - Aula 2 de Backend com Java (Remoto)

A aula hoje é remota, e atrasou um pouco por causa de alguns problema tecnicos, nada que atrapalhou a aula.

Durante a semana, o professor Djonathan passou um material complementar sobre a primeira aula. esse material está disponivel aqui. Além disso, apresentou um repositorio que vai ser utilizado para o trabalho em grupo que vai ser feito no decorrer das aulas, onde cada equipe vai implementar um item.

Seguimos com a criação de um projeto novo Spring, do qual vai ser o esqueleto do trabalho que vamos fazer. Esse projeto está no GitHub.

Professor continuou mostrando como trabalhar com o GitHub, exemplificando a utilização de Pull Request para poder enviar as alterações.

Após essa parte introdutoria, começamos com o conteudo, seguindo o material da ultima aula, que está disponivel aqui

Coesão Refere-se a ligação ou harmonia entre elementos textuais.

Acoplamento que está acoplado (ligado, conectado)

  • SOLID

Acrônimo para os Cinco Princípios de um bom Design Orientado a Objeto, cunhado por Bob Martin em [MARTIN, 2000].

  • S - Princípio da Responsabilidade Única
    Todo objeto do seu sistema deveria ter uma única responsabilidade, e todos os erviços desse objeto deveriam focar em realizar essa responsabilidade única.

  • O - Princípio do Aberto-Fechado
    Classes deveriam estar abertas para extensão e fechadas para modificação.

  • L - Princípio da Substituição de Liskov
    Subtipos devem ser substituíveis por seus tipos base.

  • I - Princípio da Segregação de Interfaces
    Muitas interfaces especializadas são melhores que uma interface de propósito geral.

  • D - Princípio da Inversão de Dependências
    Dependa de abstrações ao invés de classes concretas.

Com isso, começamos a utilizar o conceito do SOLID, e montamos um exemplo de sistemas de simulador de emprestimo. Fomos gerando as classes, e fluxos, e melhorando com o decorrer da aula. Essa atividade pode ser vista em GitHub

Professor apresentou varios padrões, ele vai depois disponibilizar um material complementar, quando estiver disponivel, coloco o link aqui.

Com isso terminamos a aula, conversamos um pouco sobre o trabalho, como vai funcionar.

No final da aula, aproveitei para conversar e compartilhar uma forma de rodar os teste utilizando GitHub Actions, e ele pediu para fazer o pull request para incluir no projeto.

E isso foi tudo na aula 2.

info

· 4 min read

11/09/2021 - Aula 1 de Backend com Java (Presencial) , Professor Geferson fez a apresentação do professor Djonathan, visto que é a primeira aula que temos com ele, sendo assim, ele tambem perguntou algo sobre nós, uma pequena apresentação para saber o nível de conhecimento do pessoal.

A aula começou utilizando o material .pdf, com a parte de Design e Orientado a Objetos.

Uma linguagem suporta um Estilo de Programação se ela provê funcionalidades que tornam conveniente (razoavelmente fácil, seguro e eficiente) utilizar esse estilo. Uma linguagem não suporta uma técnica se é necessário um esforço excepcional ou habilidade para escrever os determinados programas; nesse caso, a linguagem simplesmente habilita os programadores a utilizar a técnica.

Conceitos Chave

  • Estilo procedural
    • Decida quais procedimentos você deseja, utilize o melhor algoritmo que você possa encontrar.
  • Ocultação de Dados
    • Decida quais procedimentos você deseja, particionar o programa de forma que os dados fiquem ocultos em módulos.
  • Abstração de Dados
    • Decida quais tipos você deseja, forneça um conjunto de operações para cada tipo.

Orientação a Objetos (Conceito)

Decida quais classes você deseja; forneça um conjunto de operações para cada classe; torne as semelhanças explícitas utilizando herança.

OOP (Objetos)

Coisas (pessoas, animais, objetos), características (cor, sabor), eventos (confirmação, cancelamento), estado (pendente, confirmado), basicamente tudo que possamos chamar com um substantivo / nome próprio, incluindo objetos abstratos.

Imagem OOP

OOP (Classes)

Grupos de objetos com características muito similares, do ponto de vista técnico compõem o conjunto de tipos de uma linguagem na categoria de Tipo de Dados Abstratos. Objetos de determinada classe são denominados como instâncias.

Imagem OOP

OOP (Atributos)

Descrevem as características de um objeto, fazendo parte do arquétipo da classe. Cada instância da classe armazena os valores de seus atributos, porém atributos estáticos são compartilhados entre as instâncias.

Imagem OOP

OOP (Mensagens/Métodos)

Objetos se comunicam através de mensagens, a unidade de abstração dessas mensagens é chamada de método. Métodos abstraem uma determinada lógica ue será aplicada a uma referida instância sempre que receber uma mensagem específica. Métodos podem conter parâmetros e retornar valores ao final e sua execução.

Imagem OOP

OOP (Encapsulamento)

Ninguém deve se preocupar com a forma em que um objeto está organizado ou o quê ele sabe. Quanto menos comprometido uma classe tiver com o mundo exterior menor é a superfície de mudança que pode impactar a manutenabilidade do sistema.

Imagem OOP

Após explicar esses conceitos, começamos a mexer em um projeto, vendo os conceitos iniciais de Kotlin. Criamos uma classe e vimos como implementar algumas funções.

Com isso terminamos o que foi visto pela manha, e a aula volta as 13:30, vamos continuar o material no slides e fazer na pratica o código.

OOP (Generalização)

Refere-se a habilidade de organizar os objetos em estruturas hierárquicas.

Classes podem implementar dois tipos de Generalização:

  • Tipo: Classes diferentes compartilham a mesma interface.
  • Implementação: Onde além da interface, a implementação também é compartilhada.

OOP (Interfaces)

O conceito de Interface tem duas aplicações:

  • O conjunto de operações que compõem o contrato de uma classe com os consumidores.
  • Herança de Tipos, onde diversas classes podem compartilhar a mesma interface.

Imagem OOP

OOP (Herança)

Refere-se diretamente a Generalização de Implementação, onde classes compartilham sua implementação além da interface.

Imagem OOP

Boas Práticas de Design

  • DRY
    • Don’t Repeat Yourself! (Não se repita!)
  • YAGNI
    • You Ain’t gonna need it! (Você não vai precisar disso!)
  • KISS
    • Keep it simple, stupid. (Mantenha isso simples, idiota.)

Professor discutiu todos esses pontos durante a aula de hoje, no PDF, fomos até a pagina 19. O resto vai ficar para as proximas aulas.

info

Material complementar Máterial de apoio em PDF aula 01