Computação 2  —   Linguagem Java   —  2021/1

Página principal

Informações


Conteúdo das aulas

12/07


Introdução ao curso.
Semelhanças com a sintaxe de C. Declaração de variáveis e funções (métodos public static), loops, condicionais.

Saída para o terminal via System.out.println() e System.out.printf().
Entrada (leitura do teclado) chamando o nextLine() de um Scanner(System.in).

Primeiro programa: o nefasto Hello World.
Segundo programa: o problema dos armários.

Aula gravada no Google Meet.  
 

14/07


Arrays. Políticas de crescimento aritmético vs geométrico. ArrayList.
O Garbage Collector do Java.
Atribuição de objetos (cópia de referências). Código feito em sala de aula no GitHub.

Aula gravada no Google Meet.  
 

16/07


Noções de complexidade de algoritmos.
Comparando execuções de algoritmos O(n^2), O(n log n), O(n), O(n^0.5) e O(1) para um mesmo problema, o problema dos armários da aula passada.

Código feito em sala de aula no GitHub.

LAB 1.

Aula gravada no Google Meet.  
 

19/07


Primeiras conversas sobre Orientação a Objeto. Classes. Objetos. Atributos e métodos. O método construtor. Modificadores de acesso public e private. Encapsulamento. Getters. Cuidados ao se expor (via getter) um objeto que é atributo privado de uma classe: seu conteúdo pode vir a ser modificado externamente!

Código feito em sala de aula no GitHub.
Aula gravada no Google Meet.  
 

21/07


Resolução do LAB 1.

Comparando objetos com == e com o método equals().

Código feito em sala de aula no GitHub.
Aula gravada no Google Meet.  
 

23/07


Testes unitários (unit tests) com o JUnit.

LAB 2.

Aula gravada no Google Meet.  
 

26/07


Pensando uma classe via Test-Driven Development (TDD).
Sobrecarga (overload) de métodos.

Código feito em sala de aula no GitHub.
Aula gravada no Google Meet.  
 

28/07


Resolução do LAB 2. Prosseguindo no projeto Fracao via TDD.
Lazy vs eager instantiation.
Override de métodos definidos em classes ancestrais. A anotação @Override. Customizando o método equals().

Código feito em sala de aula no GitHub.
Aula gravada no Google Meet.  
 

30/07


Fazendo override no toString() de uma classe nossa (no caso, a classe Fracao).

LAB 3.

Aula gravada no Google Meet.  
 

02/08


Métodos auxiliares privados em classes de teste.

Herança. Declarando que uma classe extends uma outra.

Código feito em sala de aula no GitHub.
Aula gravada no Google Meet.  
 

04/08


Modificadores private, package private (que é o default = sem modificador algum), protected, public.
A questão dos construtores default injetados automaticamente pelo compilador quando não se provê explicitamente um construtor.
A chamada ao construtor da superclasse (classe mãe) via super(...), que é injetada automaticamente na primeira linha do construtor se nós não a escrevemos explicitamente (com a devida passagem de parâmetros, de acordo com o que pede o construtor da superclasse).
Fazendo override em métodos de classes ancestrais, e chamando, se desejado, aquele mesmo método na superclasse via super.nomeDoMetodo(...).

Código feito em sala de aula no GitHub.
Aula gravada no Google Meet.  
 

06/08


Resolução do LAB 3.
LAB 4.

Aula gravada no Google Meet.  
 

09/08


Polimorfismo. Métodos e classes abstract. Os diferentes "pontos de vista".

Código feito em sala de aula no GitHub.
Aula gravada no Google Meet.  
 

11/08


Resolução do LAB 4.

Packages.
Código feito em sala de aula no GitHub.

Aula gravada no Google Meet.  
 

13/08


LAB 5.
Aula gravada no Google Meet.  
 

16/08


Noções preliminares de hashing. HashMap. HashSet.

Código feito em sala de aula no GitHub.
Aula gravada no Google Meet.  
 

18/08


Resolução do LAB 5.

Aula gravada no Google Meet.  
 

20/08


LAB 6.
Código feito em sala de aula no GitHub.
Aula gravada no Google Meet.  
 

23/08


Lançando exceções com o throw e declarando-as na assinatura do método com o throws. Criando exceções customizadas.
Capturando exceções com o try...catch. Relançando exceções.
Testando exceções no JUnit.

Código feito em sala de aula no GitHub.
Aula gravada no Google Meet.  
 

25/08


Aula gravada no Google Meet.  
 

27/08


Aula gravada no Google Meet.  
 

30/08


Aula gravada no Google Meet.  
 

01/09


Aula gravada no Google Meet.  
 

03/09


Resolução do LAB 7.

Ordenação. Interfaces Comparable e Comparator.

LAB 8.

Código feito em sala de aula no GitHub.
Aula gravada no Google Meet.  
 

08/09


Resolução do LAB 8.

Classes que implementam a interface Comparable. Ordenação "natural".

Exercícios: somando frações, fatorando um número, obtendo MMC...

Código feito em sala de aula no aqui e aqui.
Aula gravada no Google Meet.  
 

10/09


LAB 9.

Aula gravada no Google Meet.  
 

13/09


Aula gravada no Google Meet.  
 

15/09


Aula gravada no Google Meet.  
 

17/09


LAB 10.

Aula gravada no Google Meet.  
 

20/09


Enums: tipos enumeráveis.

Aula gravada no Google Meet.  
 

22/09


Aula gravada no Google Meet.  
 

24/09


LAB 11.

Aula gravada no Google Meet.  
 

29/09


Resolução do LAB 11.

Lendo/escrevendo de/para arquivos.

Aula gravada no Google Meet.  
 

01/10


LAB 12.

Aula gravada no Google Meet.  
 

04/10


Recursão. Memoização.

Aula gravada no Google Meet.  
 

06/10


Resolução do LAB 12.

Revisão para a prova.

Aula gravada no Google Meet.  
 

08/10


Prova.

Voltar ao topo