Skip to main content

2 posts tagged with "09/2021"

View All Tags

· 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