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.
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.
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.
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.
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.
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.
OOP (Herança)
Refere-se diretamente a Generalização de Implementação, onde classes compartilham sua implementação além da interface.
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.