[1]
Programação Orientada
a Objetos com Java e JUnit 5
Camila Cavalcante
Tech Education Coordinator�DIO
linkedin.com/in/cami-la�github.com/cami-la�instagram.com/camimi_la
[2]
Conheça os principais conceitos do Paradigma de Programação Orientada a Objetos. Nesse contexto, explore a linguagem de programação Java e TypeScript, resolvendo alguns exercícios e entenda como testar as funcionalidades da sua aplicação com JUnit5.
Objetivo Geral
[3]
Pré-Requisitos
[4]
// Programação Orientada a Objetos com Java
Parte 1
Programação Orientada a Objetos com Java
[5]
Modelo de análise, projeto e programação baseado na aproximação entre o mundo real e o mundo virtual, através da criação e interação entre classes, atributos, métodos, objetos, entre outros.
PPOO
[6]
Classe X Objeto
Classe
Objeto
[7]
Conceitos Fundamentais POO
[8]
Habilidade de concentrar-se nos aspectos essenciais de um domínio, ignorando características menos importantes ou acidentais.
Nesse contexto, objetos são abstrações de entidades existentes no domínio em questão.
Abstração
[9]
Permite que objetos sejam referenciados como pai e filhos, em que os objetos filhos herdam todas as características do objeto pai, mas o objeto pai nada herda do filho. Isso reduz a duplicação de código-fonte.
Herança
[10]
Encapsular significa esconder a implementação dos objetos. O encapsulamento favorece principalmente dois aspectos de um sistema: a manutenção e a evolução.
Encapsulamento
[11]
Busca representar as relações que os objetos devem ter, baseando-se nas relações que existem na vida real. Isso faz com que os objetos sejam reaproveitados, evitando duplicidade e mantendo a simplicidade.
Composição
[12]
Com o polimorfismo, podemos transformar objetos diferentes em objetos que conseguem trocar mensagens por meio da generalização de suas características.
Polimorfismo
[13]
Hands On!
[14]
Parte 2
Testes unitários com JUnit 5
// Programação Orientada a Objetos com Java e JUnit 5
[15]
Por que testamos?
[16]
Pirâmide de Testes
[17]
Testes Unitários
[18]
[19]
JUnit Platform + JUnit Jupiter + JUnit Vintage
[20]
[21]
Assertions é uma coleção de métodos utilitários que suportam a afirmação de condições em testes.
Detalhe de alguns métodos:
[22]
Assumptions é uma coleção de métodos utilitários que suportam a execução de testes condicionais com base em suposições.
Detalhe de alguns métodos:
[23]
Os testes parametrizados normalmente consomem argumentos diretamente da fonte configurada seguindo uma correlação de um para um entre o índice da fonte do argumento e o índice do parâmetro do método, precedido do @ParameterizedTest.
Algumas fontes de argumentos:
[24]
[25]
[26]
Hands On!