diff --git a/_config.yml b/_config.yml
index 3710522..379d102 100644
--- a/_config.yml
+++ b/_config.yml
@@ -28,6 +28,7 @@ github_username: andrelanna
# Build settings
markdown: kramdown
+#markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true)
theme: jekyll-theme-minimal
gems:
- jekyll-feed
diff --git a/_layouts/default.html b/_layouts/default.html
index 98c9945..3bc2154 100644
--- a/_layouts/default.html
+++ b/_layouts/default.html
@@ -10,6 +10,9 @@
+
diff --git a/lectures/das/Caderno_de_Formulas_Selic.pdf b/lectures/das/Caderno_de_Formulas_Selic.pdf
new file mode 100644
index 0000000..693c0e6
Binary files /dev/null and b/lectures/das/Caderno_de_Formulas_Selic.pdf differ
diff --git a/lectures/das/Catalogo_Refatoracao_Organizando_Dados.pdf b/lectures/das/Catalogo_Refatoracao_Organizando_Dados.pdf
new file mode 100644
index 0000000..c368486
Binary files /dev/null and b/lectures/das/Catalogo_Refatoracao_Organizando_Dados.pdf differ
diff --git a/lectures/das/Catalogo_Refatoracao_Simplificando_Expressoes_Condicionais.pdf b/lectures/das/Catalogo_Refatoracao_Simplificando_Expressoes_Condicionais.pdf
new file mode 100644
index 0000000..08ca486
Binary files /dev/null and b/lectures/das/Catalogo_Refatoracao_Simplificando_Expressoes_Condicionais.pdf differ
diff --git a/lectures/das/Catalogo_Refatoracao_movendo_caracteristicas.pdf b/lectures/das/Catalogo_Refatoracao_movendo_caracteristicas.pdf
new file mode 100644
index 0000000..5961505
Binary files /dev/null and b/lectures/das/Catalogo_Refatoracao_movendo_caracteristicas.pdf differ
diff --git a/lectures/das/enunciadoTDD.md b/lectures/das/enunciadoTDD.md
new file mode 100644
index 0000000..700bd95
--- /dev/null
+++ b/lectures/das/enunciadoTDD.md
@@ -0,0 +1,26 @@
+---
+title: Atividade extra-classe - TDD
+layout: default
+---
+
+### UnB - Universidade de Brasilia
+### FGA - Faculdade do Gama
+### DAS - Desenvolvimento Avançado de Software
+------
+
+Atividade extra-classe em substituição à aula de 19/05/2017.
+**Data de entrega:** 22/05/2017, 23:59:59.
+Entrega via GitHub.
+
+**Exercício:** Implementar utilizando TDD, as fórmulas das seções 3 a 7 do [caderno de fórmulas do Tesouro Nacional][caderno]. Os requisitos expressos no caderno deverão ser atendidos, principalmente aqueles que especificam a precisão dos valores utilizados pelos cálculos.
+
+Ao menos uma vez apresente através de commits a seguinte seqüência:
+
+escrever teste --c--> escrever funcão --c--> falsificar retorno --c--> escrever teste --c--> alterar função --c--> aplicar triangulação --c--> refatorar (se for o caso).
+
+**Legenda:** --c--> representa um commit
+
+
+
+
+[caderno]:Caderno_de_Formulas_Selic.pdf
diff --git a/lectures/das/exercicioTDD.tar.gz b/lectures/das/exercicioTDD.tar.gz
new file mode 100644
index 0000000..80f0915
Binary files /dev/null and b/lectures/das/exercicioTDD.tar.gz differ
diff --git a/lectures/das/plano_2017_1.md b/lectures/das/plano_2017_1.md
index 3cf6bc0..087f53d 100644
--- a/lectures/das/plano_2017_1.md
+++ b/lectures/das/plano_2017_1.md
@@ -42,45 +42,46 @@ Nota final = (P1 * 2.0 + T1 * 2.0 + P2.0 * 2.0 + T2.0 * 2.0 + P3 * 2.0)/10
#### Cronograma da disciplina
-|Aula no.|Data |Tópico | Atividade | Material |
-|--------|---------|-----------------------------------------------------------------------------------------------------------|-------------|-----------------------------|
-|1 |8-mar-17 |Apresentação da disciplina | | |
-|2 |10-mar-17|~~Dedetização FGA~~ | | |
-|3 |15-mar-17|~~Paralização~~ | | |
-|4 |17-mar-17|Revisão framework xUnit: projeto estrutural do framework, asserções, casos de teste, suítes de testes. | | Framework xUnit |
-|5 |22-mar-17|Revisão framework xUnit: testes parametrizados. | Atividade 1 | Testes parametrizados. |
-|6 |24-mar-17|Introducao a refatoração / princípios de refatoracao | |[sl1][sl1] [sl2][sl2] |
-|7 |29-mar-17|Oportunidades em refatoração (maus-cheiros de código) / grupos de refatoração. | |[sl3][sl3] |
-|8 |31-mar-17|Composição de métodos. | |[cat1][cat1] |
-|9 |5-abr-17 |Movendo características entre objetos. | | |
-|10 |7-abr-17 |Organizando dados. | | |
-|11 |12-abr-17|Simplificando expressões condicionais. | | |
-|12 |14-abr-17|FERIADO - Sexta-feira da Paixão | | |
-|13 |19-abr-17|Fazendo as chamadas de métodos mais simples. | | |
-|14 |21-abr-17|FERIADO - Tiradentes | | |
-|15 |26-abr-17|Lidando com generalização. | | |
-|16 |28-abr-17|**Avaliação 1.** | | |
-|17 |3-mai-17 |Introdução ao desenvolvimento orientado a testes; TDD *vs.* teste tradicional. | | |
-|18 |5-mai-17 |Conduzindo um desenvolvimento orientado a testes. | | |
-|19 |10-mai-17|Padrões para TDD: red bar patterns, testing patterns, green patterns. | | |
-|20 |12-mai-17|Padrões para TDD: red bar patterns, testing patterns, green patterns. | | |
-|21 |17-mai-17|Padrões para TDD: xUnit patterns, Design Patterns, Refactoring, Mastering TDD. | | |
-|22 |19-mai-17|Padrões para TDD: xUnit patterns, Desing Patterns, Refactoring, Mastering TDD. | | |
-|23 |24-mai-17|Conclusões sobre TDD. | | |
-|24 |26-mai-17|**Avaliação 2.** | | |
-|25 |31-mai-17|Introdução ao reuso de software, técnicas de reuso de software. | | |
-|26 |2-jun-17 |Frameworks de componentes. | | |
-|27 |7-jun-17 |Taxonomia e modelo de componentes. | | |
-|28 |9-jun-17 |Detalhamento de um framework horizontal. | | |
-|29 |14-jun-17|Construção de um framework de componentes. | | |
-|30 |16-jun-17|*Atividade complementar - provavelmente.* | | |
-|31 |21-jun-17|*Atividade complementar - provavelmente.* | | |
-|32 |23-jun-17|Introdução a linhas de produto de software. | | |
-|33 |28-jun-17|Introdução a linhas de produto de software. | | |
-|34 |30-jun-17|Avaliação 3 | | |
-|35 |5-jul-17 |Entrega / revisão de menção final | | |
-|36 |7-jul-17 |Entrega / revisão de menção final | | |
-
+|Aula no.|Data |Tópico | Atividade | Material |
+|--------|---------|-----------------------------------------------------------------------------------------------------------|-------------|----------------------------------------------------------------------|
+|1 |8-mar-17 |Apresentação da disciplina | | |
+|2 |10-mar-17|~~Dedetização FGA~~ | | |
+|3 |15-mar-17|~~Paralização~~ | | |
+|4 |17-mar-17|Revisão framework xUnit: projeto estrutural do framework, asserções, casos de teste, suítes de testes. | | Framework xUnit |
+|5 |22-mar-17|Revisão framework xUnit: testes parametrizados. | Atividade 1 | Testes parametrizados. |
+|6 |24-mar-17|Introducao a refatoração / princípios de refatoracao | |[sl1][sl1] [sl2][sl2] |
+|7 |29-mar-17|Oportunidades em refatoração (maus-cheiros de código) / grupos de refatoração. | |[sl3][sl3] |
+|8 |31-mar-17|Composição de métodos. | |[cat1][cat1] |
+|9 |5-abr-17 |Movendo características entre objetos. | |[cat2][cat2] |
+|10 |7-abr-17 |Organizando dados. | |[cat3][cat3] |
+|11 |12-abr-17|Simplificando expressões condicionais. | |[cat4][cat4] |
+|12 |14-abr-17|FERIADO - Sexta-feira da Paixão | | |
+|13 |19-abr-17|Fazendo as chamadas de métodos mais simples. | | |
+|14 |21-abr-17|FERIADO - Tiradentes | | |
+|15 |26-abr-17|Lidando com generalização. | | |
+|16 |28-abr-17|~~**Avaliação 1.** / [Trabalho 1][trabalho1]~~ | | |
+|16 |03-mai-17|**Avaliação 1.** / [Trabalho 1][trabalho1] | | |
+|17 |3-mai-17 |Introdução ao desenvolvimento orientado a testes; TDD *vs.* teste tradicional. | | |
+|18 |5-mai-17 |Conduzindo um desenvolvimento orientado a testes. | | |
+|19 |10-mai-17|Padrões para TDD: red bar patterns, testing patterns, green patterns. | | [cadFormTesDireto][cadFormTesDireto] |
+|20 |12-mai-17|Padrões para TDD: red bar patterns, testing patterns, green patterns. | | |
+|21 |17-mai-17|Padrões para TDD: xUnit patterns, Design Patterns, Refactoring, Mastering TDD. | | |
+|22 |19-mai-17|~~Padrões para TDD: xUnit patterns, Desing Patterns, Refactoring, Mastering TDD.~~ Entrega exercicio TDD | | [Enunciado atividade TDD][enunciadoTDD]|[exemploTDD][exemploTDD] |
+|23 |24-mai-17|Conclusões sobre TDD. | | |
+|24 |26-mai-17|**Avaliação 2.** | | |
+|25 |31-mai-17|Introdução ao reuso de software, técnicas de reuso de software. | | |
+|26 |2-jun-17 |Frameworks de componentes. | | |
+|27 |7-jun-17 |Taxonomia e modelo de componentes. | | |
+|28 |9-jun-17 |Detalhamento de um framework horizontal. | | |
+|29 |14-jun-17|Construção de um framework de componentes. | | |
+|30 |16-jun-17|*Atividade complementar - provavelmente.* | | |
+|31 |21-jun-17|*Atividade complementar - provavelmente.* | | |
+|32 |23-jun-17|Introdução a linhas de produto de software. | | |
+|33 |28-jun-17|Introdução a linhas de produto de software. | | |
+|34 |30-jun-17|Avaliação 3 | | |
+|35 |5-jul-17 |Entrega / revisão de menção final | | |
+|36 |7-jul-17 |Entrega / revisão de menção final | | |
+
### Bibliografia Básica :
@@ -130,6 +131,12 @@ Meszaros, G., xUnit Test Patterns: Refactoring Test Code, Addison-Wesley,
[sl2]: /lectures/das/sl2.pdf
[sl3]: /lectures/das/sl3-oportRefatoracao.pdf
[cat1]: /lectures/das/Catalogo_Refatoracao_Compondo_metodos.pdf
-
+[cat2]: /lectures/das/Catalogo_Refatoracao_movendo_caracteristicas.pdf
+[cat3]: /lectures/das/Catalogo_Refatoracao_Organizando_Dados.pdf
+[cat4]: /lectures/das/Catalogo_Refatoracao_Simplificando_Expressoes_Condicionais.pdf
+[trabalho1]: trabalho1.md
+[cadFormTesDireto]: Caderno_de_Formulas_Selic.pdf
+[exemploTDD]: exercicioTDD.tar.gz
+[enunciadoTDD]: enunciadoTDD.md
----
*Última atualização: 29 de março de 2017.*
diff --git a/lectures/das/trabalho1.md b/lectures/das/trabalho1.md
new file mode 100644
index 0000000..4dfc99a
--- /dev/null
+++ b/lectures/das/trabalho1.md
@@ -0,0 +1,94 @@
+---
+title: Trabalho em grupo 1
+layout: default
+---
+{% assign deadline = "23:59:59hs de 3 de maio de 2017" %}
+
+**UnB - Universidade de Brasilia**
+
+**FGA - Faculdade do Gama**
+
+**DAS - Desenvolvimento Avançado de Software**
+
+----
+
+
+## Trabalho em grupo
+#### Horário limite para entrega: {{ deadline }}.
+
+#### Sobre o trabalho:
+Esse trabalho visa desenvolver as habilidades dos alunos em aplicar as operações
+de refatoração em um projeto em Java. As operações de Refatoração a serem
+aplicadas serão aquelas vistas até então em sala de aula. Serão consideradas,
+para efeito de avaliação, apenas as operações de refatoração que não estão
+automatizadas em ambientes de desenvolvimento.
+
+O projeto que será o sujeito das operações de refatoração é a ferramenta
+Reana-SPL, cujo objetivo é realizar a análise de confiabilidade de linhas de
+produto de software. Para realizar as refatorações cada aluno deverá realizar um
+*fork* do seguinte repositório do GitHub: [andrelanna/reana-spl][repoOriginal]
+
+A cada conjunto de operações de refatoração aplicadas uma versão do repositório
+deverá ser gerada e nomeada através de uma tag. O conjunto de refatorações de
+cada versão deverá compreender as operações de apenas um dos grupos do catálogo.
+No total serão geradas 4 versões do repositório conforme a tabela apresentada
+abaixo:
+
+| Ordem | Grupo de operações | Versão de entrada | Versão de saída |
+|:-----:|:-------------------------------------:|:-----------------:|:---------------:|
+| 1 | Composição de métodos | V0 (rep. original)| V1 |
+| 2 | Movendo características entre objetos | V1 | V2 |
+| 3 | Organizando dados | V2 | V3 |
+| 4 | Simplificando expressoes condicionais | V3 | V4 |
+
+As tags de cada versão do repositório deverão ser nomeadas conforme os valores
+da coluna "Versão de saída" apresentados na tabela acima.
+
+#### Grupos de trabalho:
+Os grupos de trabalhos devem ter 4 ou 5 integrantes. Cada componente do grupo
+deverá contribuir com a evolução do projeto ao menos uma vez de modo que cada
+integrade do grupo deve ser responsável por pelo menos um *commit*. Cada commit
+deverá conter em sua mensagem um breve relato das alterações realizadas com as
+seguintes informações:
+* "mau-cheiro" de código identificado
+* operação de refatoração aplicada
+* classe / atributo / método impactado
+* resultado da refatoração no projeto da aplicação
+ - classe nova criada / extinta?
+ - atributo / método movido?
+ - criação de novos elementos em uma classe?
+ - associações entre classes foram criadas ou extintas?
+ - etc...
+
+Cada grupo de trabalho ficará encarregado de realizar suas refatorações em duas
+suítes de teste, de modo que cada suíte de testes indicará os pontos que deverão
+ser refatorados. A distribuição de suítes de teste para os grupos está descrita
+pela tabela abaixo:
+
+| Grupo no. | Integrantes | Suite de testes |
+|:---------:|:--------------------------------------------------------------------------:|:-----------------------------:|
+| 1 | Jonathan M., Jonathan Rufino, Laércio Jr., Lucas Couto, Phelipe Wener | FDTMCTest, RDGNodeTest |
+| 2 | Arthur Temporim, Jéssica Cristina, João Paulo Busche, Marcelo Ferreira | FDTMCTest, FDTMCToParamTest |
+| 3 | Luís Filipe Resende, Felipe César, Laura, Gabriel Araújo, Pedro Salles | RDGNodeTest, FDTMCToParamTest |
+| 4 | Hugo, Dandara, Edson Gomes, Victor Navarro, Matheus Miranda Lacerda | FDTMCTest, RDGNodeTest |
+| 5 | Renata, João, Mateus, Sabryna, Vitor Barbosa | FDTMCTest, FDTMCToParamTest |
+| 6 | Igor, Izabela, Lucas, Matheus, Paulo | RDGNodeTest, FDTMCToParamTest |
+
+#### Entrega do trabalho
+
+O trabalho deverá ser entregue através de **um único para todo o grupo**
+*pull-request* no [repositório original][repoOriginal] até as {{ deadline }}.
+**Trabalhos que forem submetidos fora desse prazo não serão aceitos em hipótese
+alguma**, portanto recomenda-se não deixar a entrega dos trabalhos para o último
+dia.
+
+#### Em caso de dúvidas...
+
+Caso os grupos tenham dúvidas quanto à ferramenta Reana-SPL, procurem o
+professor em sua sala (UED-14) no horário de atendimento da turma ou nos
+instantes finais das aulas.
+
+----
+*Última atualização: 13 de abril de 2017*
+
+[repoOriginal]: https://github.com/andrelanna/reana-spl
diff --git a/lectures/oo/BorderLAyout.tar.gz b/lectures/oo/BorderLAyout.tar.gz
new file mode 100644
index 0000000..7b8dce2
Binary files /dev/null and b/lectures/oo/BorderLAyout.tar.gz differ
diff --git a/lectures/oo/BoxLayout.tar.gz b/lectures/oo/BoxLayout.tar.gz
new file mode 100644
index 0000000..aae0820
Binary files /dev/null and b/lectures/oo/BoxLayout.tar.gz differ
diff --git a/lectures/oo/JButton.tar.gz b/lectures/oo/JButton.tar.gz
new file mode 100644
index 0000000..365c635
Binary files /dev/null and b/lectures/oo/JButton.tar.gz differ
diff --git a/lectures/oo/JCheckBox.tar.gz b/lectures/oo/JCheckBox.tar.gz
new file mode 100644
index 0000000..d92c206
Binary files /dev/null and b/lectures/oo/JCheckBox.tar.gz differ
diff --git a/lectures/oo/JComboBox.tar.gz b/lectures/oo/JComboBox.tar.gz
new file mode 100644
index 0000000..758e100
Binary files /dev/null and b/lectures/oo/JComboBox.tar.gz differ
diff --git a/lectures/oo/JFrame.tar.gz b/lectures/oo/JFrame.tar.gz
new file mode 100644
index 0000000..b5b8492
Binary files /dev/null and b/lectures/oo/JFrame.tar.gz differ
diff --git a/lectures/oo/JLabel.tar.gz b/lectures/oo/JLabel.tar.gz
new file mode 100644
index 0000000..d3c74b5
Binary files /dev/null and b/lectures/oo/JLabel.tar.gz differ
diff --git a/lectures/oo/JTextField.tar.gz b/lectures/oo/JTextField.tar.gz
new file mode 100644
index 0000000..4156ed3
Binary files /dev/null and b/lectures/oo/JTextField.tar.gz differ
diff --git a/lectures/oo/exemploJButton.tar.gz b/lectures/oo/exemploJButton.tar.gz
new file mode 100644
index 0000000..46775a0
Binary files /dev/null and b/lectures/oo/exemploJButton.tar.gz differ
diff --git a/lectures/oo/exemploJLabel.tar.gz b/lectures/oo/exemploJLabel.tar.gz
new file mode 100644
index 0000000..0acbe5c
Binary files /dev/null and b/lectures/oo/exemploJLabel.tar.gz differ
diff --git a/lectures/oo/exemploJTextField.tar.gz b/lectures/oo/exemploJTextField.tar.gz
new file mode 100644
index 0000000..5b36ea4
Binary files /dev/null and b/lectures/oo/exemploJTextField.tar.gz differ
diff --git a/lectures/oo/exercicio2/arquivoAdicionado.png b/lectures/oo/exercicio2/arquivoAdicionado.png
new file mode 100644
index 0000000..b4e7d6a
Binary files /dev/null and b/lectures/oo/exercicio2/arquivoAdicionado.png differ
diff --git a/lectures/oo/exercicio2/arquivoModificado.png b/lectures/oo/exercicio2/arquivoModificado.png
new file mode 100644
index 0000000..dd7fe0b
Binary files /dev/null and b/lectures/oo/exercicio2/arquivoModificado.png differ
diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md
index 2fd9bf8..857bda4 100644
--- a/lectures/oo/exercicio2/atividade2.md
+++ b/lectures/oo/exercicio2/atividade2.md
@@ -8,7 +8,8 @@ layout: default
### OO - Orientação por objetos
------
-Atividade para realizar em dupla e entregar via GitHub. Uma entrega por dupla.
+Atividade para realizar em dupla e entregar via [GitHub][github]. Uma entrega por dupla. As entregas deverão ser feitas através de *pull-requests* no repositório principal, sendo um pull para cada questão. Instruções de como realizar a entrega estão disponíveis **[aqui][instrucoesSubmissao]**.
+
Prazo para entrega: ~~4/4/2017~~ 10/04/2017, 23:59:59.
**Questão 1:** Os termos abaixo estão relacionados ao paradigma de *Orientação por Objetos*. Defina cada um dos termos com base no livro-texto (Eck, David J. Introduction to Programming Using Java, 6th ed. 2011).
@@ -22,6 +23,7 @@ Prazo para entrega: ~~4/4/2017~~ 10/04/2017, 23:59:59.
* estado de um objeto
* retenção de estado
+Classe é a estrutura definida pelo programador, contendo atributos e métodos (comportamento) comuns a um conjunto de objetos.
**Questão 2:** Julgue as seguintes frases como verdadeiras ou falsas e explique o motivo delas estarem certas ou erradas. Nos casos em que julgar uma sentença como errada, altere-a de modo a corrigi-la.
@@ -130,16 +132,181 @@ System.out.println(q3 == q2);
**Questão 7:**
+Seja o seguinte código em Java. Apresente o que será impresso ao final da execução do método **main** definido na classe **Principal**.
+
+{% highlight java %}
+package questao7;
+public class Principal {
+ public static void main(String[] args) {
+ Curso c1, c2;
+ Aluno a1, a2, a3;
+ c1 = new Curso(1, "Engenharia de Software", 240);
+ c2 = new Curso(2, "Engenharia Eletrônica", 257);
+
+ a1 = new Aluno("Andre", c1, 13, 23, 02, 1983);
+ a2 = new Aluno("Maria", c2, 5, 27, 5, 1994);
+ a3 = new Aluno("Junior", c1, 70, 16, 11, 1995);
+
+ System.out.println(a1.obterDetalhes());
+ System.out.println(a2.obterDetalhes());
+ System.out.println(a3.obterDetalhes());
+ a3 = a2;
+ System.out.println(a1 == a2);
+ System.out.println(a1 == a3);
+ System.out.println(a2 == a3);
+ }
+}
+{% endhighlight %}
+
+
+{% highlight java %}
+package questao7;
+public class Aluno {
+ String nome;
+ Curso curso;
+ int matricula;
+ int diaNascimento,
+ mesNascimento,
+ anoNascimento;
+
+ public Aluno(String nom, Curso cur, int mat, int dNasc, int mNasc, int aNasc) {
+ nome = nom;
+ curso = cur;
+ matricula = mat;
+ diaNascimento = dNasc;
+ mesNascimento = mNasc;
+ anoNascimento = aNasc;
+ }
+
+ public String obterDetalhes() {
+ String resposta = "";
+ resposta += "Nome: " + nome + '\n';
+ resposta += "Curso: " + curso + '\n';
+ resposta += "Data de nascimento: " + diaNascimento + '/' +
+ mesNascimento + '/' +
+ anoNascimento;
+ return resposta;
+ }
+
+ protected void finalize() {
+ System.out.println("Esse objeto ALUNO vai ser destruido.");
+ System.out.println("Detalhes do objeto: " + '\n');
+ System.out.println(obterDetalhes());
+ }
+}
+{% endhighlight %}
+
+{% highlight java %}
+package questao7;
+public class Curso {
+ int codigo;
+ String nomeCurso;
+ int cargaHoraria;
+
+ Curso (int cod, String nome, int ch) {
+ codigo = cod;
+ nomeCurso = nome;
+ cargaHoraria = ch;
+ }
+
+ public String obterDetalhes() {
+ String resposta = "";
+ resposta += "Nome do curso: " + nomeCurso + '\n';
+ resposta += "Codigo: " + codigo + '\n';
+ resposta += "Carga horaria: " + cargaHoraria;
+ return resposta;
+ }
+
+ protected void finalize() {
+ System.out.println("Esse objeto CURSO vai ser destruido.");
+ System.out.println("Detalhes do objeto: " + '\n');
+ System.out.println(obterDetalhes());
+ }
+}
+{% endhighlight %}
+
+
+**Questão 8:** Considerando as classes **Aluno** e **Curso** definidas na questão 7, o que será impresso quando o *garbagge collector* de Java executar momentos antes do método **main()** da classe abaixo terminar sua execução?
+
+{% highlight java %}
+package questao8;
+public class Principal {
+ public static void main(String[] args) {
+ Curso c1, c2;
+ Aluno a1, a2, a3;
+
+ c1 = new Curso(1, "Engenharia de Software", 240);
+ c2 = new Curso(2, "Engenharia Eletrônica", 257);
+
+ a1 = new Aluno("Andre", c1, 13, 23, 02, 1983);
+ a2 = new Aluno("Maria", c2, 5, 27, 5, 1994);
+ a3 = new Aluno("Junior", c1, 70, 16, 11, 1995);
+
+ a3 = a2;
+ a2 = null;
+ c2 = c1;
+ c1 = null;
+ c1 = a3.curso;
+ a3 = a1;
+ a1 = nul;
+
+ //---> GARBAGGE COLLECTOR executa nesse instante
+ }
+}
+{% endhighlight %}
+
+
+**Questão 9:** as cinco instruções listadas abaixo estão definidas no método **main()** da classe **Principal** e apresentam erros em suas sintaxes. Apresente quais são os erros, justifique-os e altere as instruções de modo a consertá-los. Considere os códigos das classes **Aluno** e **Turma** como sendo os códigos apresentados na questão 7.
+
+{% highlight java %}
+package questao9;
+public class Principal {
+ public static void main(String[] args) {
+ Curso c1, c2;
+ Aluno a1, a2, a3;
+
+ c2 = new Curso(2, "Engenharia Eletrônica", 257);
+
+ a1 = new Aluno("Andre", c1, 13, 23, 02, 1983);
+ a2 = new Aluno("Maria", c2, 5, 27, 5, 1994);
+
+ Curso.obterDetalhes();
+ c2.matricula = 20;
+ Curso.nome = "Ciência da computação";
+ c1.codigo = 21;
+ Aluno.obterDetalhes();
+ a3.cargaHoraria() = 220;
+ }
+}
+{% endhighlight %}
+**Questão 10:** sabe-se que um curso em é formado por um conjunto de disciplinas, para as quais são definidas as seguintes características:
+
+* um código da disciplina;
+* um nome;
+* uma carga horária, e
+* um departamento responsável por lecionar tal disciplina.
+
+Sabe-se ainda que para cada disciplina são criadas diversas turmas. Cada turma é descrita através das seguintes características:
+* um código da turma;
+* um número total de vagas;
+* um número de vagas livres;
+* um número de vagas ocupadas, e
+* dias/horarios em que ela ocorre.
-**Questão 8:**
+Além disso, é necessário que os alunos se matriculem nessas turmas. Tal procedimento consiste em associar os alunos em uma turma específica (caso haja vagas) e aumentar o número de vagas ocupadas.
+Considerando o contexto formado pelas classes **Aluno** e **Curso** (vide implementação na questão 7) e a descrição acima, pede-se:
-**Questão 9:**
+a) em Java, crie uma classe que seja capaz de representar as características e o comportamento de uma turma.
+b) Crie as seguintes turmas:
+ * turma 1 de Orientação por objetos, com 46 vagas livres, que ocorre todas as 4as e 6as feiras, das 12:00 às 16:00 horas;
+ * turma 1 de Desenvolvimento Avançado de software, com 30 vagas livres, que ocorre todas as 4as. e 6as. feiras, das 16:00 às 18:00 horas.
-**Questão 10:**
+c) associe ambas turmas recem-criadas ao curso de Engenharia de Software,
+d) matricule Andre e Maria na turma de orientação por objetos, e Junior na turma de desenvolvimento avançado de software.
## Referências:
\[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011
@@ -147,10 +314,12 @@ System.out.println(q3 == q2);
---
-*Última modificação: 3 de abril de 2017, 22:52.*
+*Última modificação: 7 de abril de 2017, 05:12.*
[eckDavid]: http://math.hws.edu/javanotes/
+[github]: http://www.github.com/
+[instrucoesSubmissao]: ./instrucoes.md
diff --git a/lectures/oo/exercicio2/buscaRepositorio.png b/lectures/oo/exercicio2/buscaRepositorio.png
new file mode 100644
index 0000000..5acf5b3
Binary files /dev/null and b/lectures/oo/exercicio2/buscaRepositorio.png differ
diff --git a/lectures/oo/exercicio2/conteudoRepositorio.png b/lectures/oo/exercicio2/conteudoRepositorio.png
new file mode 100644
index 0000000..6d3a639
Binary files /dev/null and b/lectures/oo/exercicio2/conteudoRepositorio.png differ
diff --git a/lectures/oo/exercicio2/instrucoes.md b/lectures/oo/exercicio2/instrucoes.md
new file mode 100644
index 0000000..1c7d48c
--- /dev/null
+++ b/lectures/oo/exercicio2/instrucoes.md
@@ -0,0 +1,129 @@
+---
+title: Exercício prático
+layout: default
+---
+
+A entrega dos exercícios de fixação será realizada através de *pull-requests* no [repositório original][repositorioOriginal] do [GitHub][github].
+
+Cada dupla deverá enviar sua resposta como uma alteração no arquivo **atividade2.md**, de modo que as respostas deverão ser escritas logo abaixo o enunciado de cada questão.
+
+---
+
+### Criando um **Fork** do repositório original
+
+A primeira coisa a se fazer para entrega das questões é realizar um **fork** no repositório original. Em resumo, um **fork** permite que você crie uma versão do repositório original em sua conta Github e evolua-o independentemente.
+
+Para criar o fork do repositório em sua conta, acesse sua conta no Github e pesquise pelo repositorio **andrelanna**.
+
+![buscaRepositorio][buscaRepositorio]
+
+Em seguida, acesse o repositório **andrelanna/andrelanna.github.io**. Na tela seguinte você verá o conteúdo do repositório
+
+![conteudoRepositorio][conteudoRepositorio]
+
+No canto superior direito clique no ícone **Fork** para criar uma versão do repositório original em sua conta do GitHub. Ao final do processo de fork, você terá sua própria versão do repositório **andrelanna/andrelanna.github.io** para trabalhar e evoluir.
+
+---
+
+### Respondendo as questões do exercícios.
+
+Para responder as questões dos exercícios, os alunos deverão editar o arquivo **/lectures/oo/exercicio2/atividade2.md**. O conteúdo desse arquivo está descrito através da linguagem [Markdown][markdown], cuja proposta é facilitar a geração de conteúdo estático (arquivos HTML) ao prover um conjunto de instruções simplificado. Um resumo das instruções MD pode ser encontrado [aqui][markdownCheatsheet].
+
+Portanto para cada questão a ser respondido, a dupla deverá realizar os seguintes passos (que serão detalhados em seguida):
+
+1) alterar o arquivo **atividade2.md** de modo a incluir as respostas das questões.
+
+2) adicionar as mudanças em um *commit* e enviá-los ao github.
+
+3) fazer um *pull-request* para o repositório original.
+
+Para permitir a identificação da dupla, pede-se que a cada questão os alunos sejam identificados da seguinte forma a cada commit:
+
+*matricula aluno 1 - nome completo do aluno 1*
+
+*matricula aluno 2 - nome completo do aluno 2*
+
+
+A seguir os passos 1, 2, e 3 listados acima serão descritos detalhadamente.
+
+**Passo 1 - Alterar o arquivo atividade2.md**
+
+Utilizando o editor de sua preferência, altere o arquivo *atividade2.md* de modo a adicionar a resposta após o enunciado da questão.
+
+Salve o arquivo texto.
+
+
+**Passo 2 - Adicionar as alterações em um commit e enviar ao repositório no Github**
+
+
+Na linha de comando de seu sistema operacional (prompt de comando ou PowerShell em Windows, Terminal em Linux ou MacOS), acesse a pasta em que se encontra o arquivo *atividade2.md*.
+
+Para ver as alterações que foram realizadas no diretório, digite o seguinte comando:
+
+{% highlight PowerShell %}
+git status
+{% endhighlight %}
+
+Dentre a lista dos arquivos não-rastreados (*untracked files*) ou modificados deverá constar o arquivo *atividade2.md*, conforme mostra a imagem abaixo:
+
+![arquivoModificado][arquivoModificado]
+
+É necessário que você adicione-o ao conjunto de mudanças (que posteriormente será enviado ao GitHub). Para adicioná-lo, execute o seguinte comando na linha de comando de seu SO.
+
+{% highlight PowerShell %}
+git add atividade2.md
+{% endhighlight%}
+
+Certifique-se de que o arquivo foi adicionado ao conjunto de mudanças. Para isso, execute novamente o comando:
+
+{% highlight PowerShell %}
+git status
+{% endhighlight %}
+
+O resultado da execução desse comando deve mostrar que o arquivo faz parte do conjunto de mudanças, conforme demonstra a figura abaixo:
+
+![arquivoAdicionado][arquivoAdicionado]
+
+Uma vez que os arquivos a serem submetidos já estão adicionados, as alterações devem ser "empacotadas" em um *commit*. Para cada commit é necessário, ao menos, adicionar uma mensagem informando o que o commit contem. A instrução para realizar tal tarefa é
+
+{% highlight PowerShell %}
+git commit -m "mensagem"
+{% endhighlight %}
+
+Para facilitar a identificação dos commits, solicito que os alunos informem na mensagem do commit qual a questão que está sendo submetida. Exemplo:
+
+{% highlight PowerShell%}
+git commit -m "Questao 1."
+...
+git commit -m "Questao 2."
+...
+git commit -m "Questao 3."
+{% endhighlight%}
+
+Depois do commit ter sido criado pelas instruções acima é necessário enviá-lo ao **seu** repositório no GitHub. Esse procedimento também é chamado de **push**. Para isso, execute a seguinte instrução na linha de comando de seu SO:
+
+{% highlight PowerShell %}
+git push
+{% endhighlight %}
+
+O resultado da execução desse comando será similar ao apresentado pela figura abaixo:
+
+![resultadoCommit][resultadoCommit]
+
+
+**Passo 3 - Solicitar a adição de seus commits ao repositório de origem**
+
+
+
+
+
+[repositorioOriginal]: https://github.com/andrelanna/andrelanna.github.io
+[github]: https://github.com
+
+[buscaRepositorio]: buscaRepositorio.png
+[conteudoRepositorio]: conteudoRepositorio.png
+[markdown]: https://daringfireball.net/projects/markdown/
+[markdownCheatsheet]: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet
+[arquivoModificado]: arquivoModificado.png
+[arquivoAdicionado]: arquivoAdicionado.png
+[resultadoCommit]: resultadoCommit.png
diff --git a/lectures/oo/exercicio2/resultadoCommit.png b/lectures/oo/exercicio2/resultadoCommit.png
new file mode 100644
index 0000000..a6bf103
Binary files /dev/null and b/lectures/oo/exercicio2/resultadoCommit.png differ
diff --git a/lectures/oo/exercicio3/atividade3.md b/lectures/oo/exercicio3/atividade3.md
new file mode 100644
index 0000000..7eeea01
--- /dev/null
+++ b/lectures/oo/exercicio3/atividade3.md
@@ -0,0 +1,454 @@
+---
+title: Atividade 2 - Interfaces gráficas em Java Swing
+layout: default
+---
+
+### UnB - Universidade de Brasilia
+### FGA - Faculdade do Gama
+### OO - Orientação por objetos
+------
+
+Atividade extra-classe **individual** em substituição à aula de 19/05/2017.
+**Data de entrega:** 22/05/2017, 23:59:59.
+Entrega via GitHub.
+WindowBuilder **não** deve ser utilizado.
+
+
+**Exercício 1:** Crie uma interface gráfica para cálculo de valores presente, futuro, juros e taxa de juros de acordo com a seguinte fórmula:
+$$V_{F} = V_{A} \times (1 + i)^{n}$$, em que
+* $$V_{F}$$ representa o valor futuro de uma aplicação,
+* $$V_{A}$$ representa o valor atual (no momento) da aplicação,
+* $$i$$ é a taxa de juros e
+* $$n$$ é o tempo da aplicação, em meses.
+
+O usuário deverá entrar com 3 valores, em campos de texto. O quarto valor deverá ter seu campo de texto vazio e será calculado pela aplicação conforme a fórmula acima. Veja os exemplos na tabela abaixo, em que os valores em negrito representam a resposta da fórmula:
+
+|$$V_{F}$$ |$$V_{A}$$ |$$i$$ |$$n$$ |
+|:-----------:|:-----------:|:--------:|:--------:|
+|**R$1100,34**|R$1000,00 |0.80 |12 |
+|R$2000,00 |**R$1817,62**|0.80 |12 |
+|R$2000,00 | R$1000,00 |**5,95** |12 |
+|R$2000,00 | R$1000,00 |0.80 |**87** |
+
+Resolução:
+Classe Principal:
+{% highlight java %}
+
+public class Principal {
+
+ public static void main(String[] args) {
+ Janela j = new Janela();
+ }
+}
+
+{% endhighlight %}
+
+Classe Janela:
+{% highlight java %}
+
+import java.awt.GridLayout;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+public class Janela extends JFrame{
+ JLabel lbValorPresente,
+ lbValorFuturo,
+ lbTxJuros,
+ lbTempo,
+ lbResultado,
+ txtResultado;
+
+ JButton btnCalcular,
+ btnLimpar;
+
+ JTextField txtValorPresente,
+ txtValorFuturo,
+ txtTxJuros,
+ txtTempo;
+
+ GridLayout layout = new GridLayout(6,2);
+
+ JPanel painel;
+
+ public Janela(){
+ this.setTitle("Calculo de Valor Presente");
+ this.setSize(500, 150);
+
+ painel = new JPanel();
+ painel.setLayout(layout);
+
+ lbValorPresente = new JLabel("Valor Presente:");
+
+ txtValorPresente = new JTextField("");
+ txtValorPresente.setToolTipText("Valor atual da aplicação");
+
+ lbValorFuturo = new JLabel("Valor Futuro:");
+
+ txtValorFuturo = new JTextField("");
+ txtValorFuturo.setToolTipText("Valor futuro da aplicação");
+
+ lbTxJuros = new JLabel("Taxa de Juros:");
+
+ txtTxJuros = new JTextField("");
+ txtTxJuros.setToolTipText("Valor da taxa de juros");
+
+ lbTempo = new JLabel("Tempo em Meses:");
+
+ txtTempo = new JTextField("");
+ txtTempo.setToolTipText("Tempo da aplicação em meses");
+
+ lbResultado = new JLabel("Resultado:");
+
+ txtResultado = new JLabel("");
+
+ btnCalcular = new JButton("Calcular");
+ btnCalcular.addActionListener(new CalcularListener(this));
+
+ btnLimpar = new JButton("Limpar");
+ btnLimpar.addActionListener(new LimparListener(this));
+
+ painel.add(lbValorPresente);
+ painel.add(txtValorPresente);
+ painel.add(lbValorFuturo);
+ painel.add(txtValorFuturo);
+ painel.add(lbTxJuros);
+ painel.add(txtTxJuros);
+ painel.add(lbTempo);
+ painel.add(txtTempo);
+ painel.add(lbResultado);
+ painel.add(txtResultado);
+ painel.add(btnCalcular);
+ painel.add(btnLimpar);
+
+
+
+ this.add(painel);
+ this.setVisible(true);
+
+ }
+
+
+}
+
+{% endhighlight %}
+
+Classe CalcularListener:
+{% highlight java %}
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.text.DecimalFormat;
+
+public class CalcularListener implements ActionListener {
+
+ Janela janela;
+
+ public CalcularListener(Janela j){
+ janela = j;
+ }
+
+ public void actionPerformed(ActionEvent arg0) {
+ String strVazia;
+ strVazia = "";
+ String vf,
+ vp,
+ tj,
+ t;
+ double nvf,
+ nvp,
+ ntj,
+ nt;
+
+ vf = janela.txtValorFuturo.getText();
+ vp = janela.txtValorPresente.getText();
+ tj = janela.txtTxJuros.getText();
+ t = janela.txtTempo.getText();
+
+ nvf = vf.equals(strVazia)? 0.0: Double.parseDouble(vf);
+ nvp = vp.equals(strVazia)? 0.0: Double.parseDouble(vp);
+ ntj = tj.equals(strVazia)? 0.0: Double.parseDouble(tj);
+ nt = t.equals(strVazia)? 0.0: Integer.parseInt(t);
+ ntj/=100;
+
+ DecimalFormat nf = new DecimalFormat("#0.00");
+ DecimalFormat nf2 = new DecimalFormat("#0");
+
+ if(nvf==0.0){
+ nvf=nvp*(Math.pow((1+ntj), nt));
+ janela.lbResultado.setText("Valor Futuro:");
+ janela.txtResultado.setText("R$"+(nf.format(nvf)));
+ }else if(nvp==0.0){
+ nvp=nvf/(Math.pow((1+ntj), nt));
+ janela.lbResultado.setText("Valor Presente:");
+ janela.txtResultado.setText("R$"+(nf.format(nvp)));
+ }else if(nt==0.0){
+ nt=-(Math.log(nvp/nvf)/Math.log(1+ntj));
+ janela.lbResultado.setText("Tempo em Meses:");
+ janela.txtResultado.setText(nf2.format(nt)+" Meses");
+ }else if(ntj==0.0){
+ ntj=Math.pow(nvf/nvp, 1/nt)-1;
+ janela.lbResultado.setText("Taxa de Juros:");
+ janela.txtResultado.setText(nf.format(ntj*100)+"%");
+ }
+ }
+}
+
+{% endhighlight %}
+
+Classe LimparListener:
+{% highlight java %}
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+public class LimparListener implements ActionListener {
+
+ Janela janela;
+
+ public LimparListener(Janela j){
+ janela=j;
+ }
+
+ public void actionPerformed(ActionEvent arg0) {
+ janela.lbResultado.setText("Resultado:");
+ janela.txtResultado.setText("");
+ janela.txtValorPresente.setText("");
+ janela.txtValorFuturo.setText("");
+ janela.txtTempo.setText("");
+ janela.txtTxJuros.setText("");
+
+ }
+
+}
+
+{% endhighlight %}
+
+
+
+
+**Exercício 2:** Crie uma interface gráfica para cálculo dos valores obtidos ao final de cada mês para uma aplicação mensal de umdeterminado valoor e uma determinada taxa de juros. O cálculo do valor obtido ao final é dado pela seguinte fórmula:
+
+\\[S_{n}=(1+j) \times \frac{(1+j)^{n}-1}{j} \times p\\]
+
+
+onde:
+
+* $$S_{n}$$ é o valor obtido ao final,
+* $$j$$ é a taxa de juros mensal,
+* $$p$$ é o valor de depósito regular e
+* $$n$$ é o número de meses.
+
+
+Os valores finais de cada mês deverão ser informados através de objetos JLabel.
+
+Resolução:
+Classe Principal:
+{% highlight java %}
+
+public class Principal {
+
+ public static void main(String[] args) {
+ Janela j = new Janela();
+
+ }
+
+}
+
+{% endhighlight %}
+
+Classe Janela:
+{% highlight java %}
+
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+public class Janela extends JFrame {
+
+ JLabel lbDepRegular,
+ lbTempo,
+ lbTxJuros;
+
+ JTextField txtDepRegular,
+ txtTempo,
+ txtTxJuros;
+
+ JButton btnCalcular,
+ btnLimpar;
+
+ JPanel painel,
+ painelLbl,
+ painelTxt;
+
+ GridBagLayout gbLayout;
+
+ public Janela(){
+ this.setTitle("Calculo de valor mensal");
+ this.setSize(500, 95);
+
+ //definição do layout
+ painel = new JPanel();
+ gbLayout = new GridBagLayout();
+ painel.setLayout(gbLayout);
+
+ //instancia dos componentes label, button e textField
+ lbDepRegular = new JLabel("Valor do deposito regular:");
+
+ txtDepRegular = new JTextField("");
+ txtDepRegular.setToolTipText("Valor do deposito regular");
+
+ lbTempo = new JLabel("Tempo em Meses:");
+
+ txtTempo = new JTextField("");
+ txtTempo.setToolTipText("Quantidade de meses");
+
+ lbTxJuros = new JLabel("Taxa de Juros:");
+
+ txtTxJuros = new JTextField("");
+ txtTxJuros.setToolTipText("Valor da taxa de juros mensal");
+
+ btnCalcular = new JButton("Calcular");
+ btnCalcular.addActionListener(new CalcularListener(this));
+
+ btnLimpar = new JButton("Limpar");
+ btnLimpar.addActionListener(new LimparListener(this));
+
+ //Organização do layout e add dos componentes
+ GridBagConstraints c = new GridBagConstraints();
+
+ c.fill = GridBagConstraints.HORIZONTAL;
+ c.gridx=0;
+ c.gridy=0;
+ c.weightx=0.1;
+ c.weighty=0.1;
+ painel.add(lbDepRegular, c);
+ c.gridx=1;
+ c.ipadx=100;
+ painel.add(txtDepRegular, c);
+ c.gridx=0;
+ c.gridy=1;
+ painel.add(lbTempo, c);
+ c.gridx=1;
+ painel.add(txtTempo, c);
+ c.gridx=0;
+ c.gridy=2;
+ painel.add(lbTxJuros, c);
+ c.gridx=1;
+ painel.add(txtTxJuros, c);
+ c.gridx=0;
+ c.gridy=3;
+ painel.add(btnCalcular, c);
+ c.gridx=1;
+ painel.add(btnLimpar, c);
+
+ this.add(painel);
+ this.setVisible(true);
+ }
+}
+
+{% endhighlight %}
+
+Classe CalcularListener:
+{% highlight java %}
+
+import java.awt.FlowLayout;
+import java.awt.GridBagConstraints;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.text.DecimalFormat;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+public class CalcularListener implements ActionListener {
+
+ Janela j;
+
+ public CalcularListener(Janela janela){
+ j=janela;
+ }
+ public void actionPerformed(ActionEvent arg0) {
+ int numMeses = Integer.parseInt(j.txtTempo.getText());
+ double txJuros = Double.parseDouble(j.txtTxJuros.getText());
+ txJuros/=100;
+
+ GridBagConstraints gbc = new GridBagConstraints();
+ gbc.fill = GridBagConstraints.HORIZONTAL;
+
+ //painel de resultados
+ JPanel resultPanel = new JPanel();
+ resultPanel.setName("ResultPanel");
+ resultPanel.setLayout(new GridLayout(numMeses, 2));
+
+ //labels de resultados
+ JLabel resultMes;
+
+
+ double valFinal = 0;
+ double depRegular = Double.parseDouble(j.txtDepRegular.getText());
+
+ //posição na qual sera colocado o painel de resultados
+ gbc.gridx=0;
+ gbc.gridy=4;
+ gbc.gridwidth=1;
+
+ //formatação do numero do resultado
+ DecimalFormat nf = new DecimalFormat("#0.00");
+
+
+ for(int i=1; i<=numMeses; i++){
+ valFinal=(valFinal+depRegular)*(txJuros+1);
+ resultMes = new JLabel("Valor final do "+i+"º mes = "+nf.format(valFinal));
+ resultPanel.add(resultMes);
+ j.setSize(j.getWidth(), j.getHeight()+15);
+ }
+ j.painel.add(resultPanel, gbc);
+ }
+}
+
+{% endhighlight %}
+
+Classe LimparListener:
+{% highlight java %}
+
+import java.awt.Component;
+import java.awt.GridBagConstraints;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+public class LimparListener implements ActionListener {
+
+ Janela j;
+
+ public LimparListener(Janela janela){
+ j=janela;
+ }
+ public void actionPerformed(ActionEvent e) {
+
+ GridBagConstraints c = new GridBagConstraints();
+ Component[] component = j.painel.getComponents();
+
+ component[component.length-1].setVisible(false);
+ j.painel.remove(component[component.length-1]);
+
+ int t=Integer.parseInt(j.txtTempo.getText());
+ j.setSize(j.getWidth(), j.getHeight()-(15*t));
+
+ j.txtDepRegular.setText("");
+ j.txtTempo.setText("");
+ j.txtTxJuros.setText("");
+
+ }
+
+}
+
+{% endhighlight %}
+
diff --git a/lectures/oo/list1.tar.gz b/lectures/oo/list1.tar.gz
new file mode 100644
index 0000000..a202698
Binary files /dev/null and b/lectures/oo/list1.tar.gz differ
diff --git a/lectures/oo/list2.tar.gz b/lectures/oo/list2.tar.gz
new file mode 100644
index 0000000..1f6c309
Binary files /dev/null and b/lectures/oo/list2.tar.gz differ
diff --git a/lectures/oo/list3.tar.gz b/lectures/oo/list3.tar.gz
new file mode 100644
index 0000000..6346ea9
Binary files /dev/null and b/lectures/oo/list3.tar.gz differ
diff --git a/lectures/oo/plano_2017_1.md b/lectures/oo/plano_2017_1.md
index 243ccf4..70ff8d0 100644
--- a/lectures/oo/plano_2017_1.md
+++ b/lectures/oo/plano_2017_1.md
@@ -55,19 +55,19 @@ O cálculo da menção final será definido através da media ponderada dos valo
|7 |29-mar-17|Construtores e destrutores, referências a objetos. | | [sl7][sl7]; [.java][codeLec7] |
|8 |31-mar-17|**Atividade ~~em laboratório~~ em dupla (T1)** |[Atividade 2]| |
|9 |5-abr-17 |Revisão de conteúdo | | |
-|10 |7-abr-17 |**Avaliação 1** | | |
-|11 |12-abr-17|Introdução à linguagem Java | | |
+|10 |7-abr-17 |~~**Avaliação 1**~~ Data alterada para próxima aula. Vide abaixo| | |
+|11 |12-abr-17|**Avaliação 1** | | |
|12 |14-abr-17|~~FERIADO - Sexta-feira da Paixão~~ | | |
-|13 |19-abr-17|Tipos de dados e operadores | | |
+|13 |19-abr-17|Tipos de dados e operadores | | [sl8][sl8] |
|14 |21-abr-17|~~FERIADO - Tiradentes~~ | | |
-|15 |26-abr-17|Arranjos e coleções | | |
-|16 |28-abr-17|Arquitetura de eventos, swing | | |
+|15 |26-abr-17|Arranjos e coleções | | [list1][list1][list2][list2][list3][list3]|
+|16 |28-abr-17|Arquitetura de eventos, swing | | [JLabel][JLabel][JTextField][JTextField][JButton][JButton] |
|17 |3-mai-17 |Arquitetura de eventos, swing | | |
|18 |5-mai-17 |Threads e exceções | | |
|19 |10-mai-17|Threads e exceções | | |
|20 |12-mai-17|Atividade em laboratório em dupla (T2) | | |
|21 |17-mai-17|Encapsulamento - introdução | | |
-|22 |19-mai-17|Encapsulamento - interfaces | | |
+|22 |19-mai-17|~~Encapsulamento - interfaces~~ |[Atividade 3][Atividade 3] | |
|23 |24-mai-17|Encapsulamento - Pacotes / níveis de acesso | | |
|24 |26-mai-17|Encapsulamento - Escopo de elementos. | | |
|25 |31-mai-17|Herança - introdução | | |
@@ -83,6 +83,14 @@ O cálculo da menção final será definido através da media ponderada dos valo
|35 |5-jul-17 |**Entrega / revisão de menção final** | | |
|36 |7-jul-17 |**Entrega / revisão de menção final** | | |
+[BorderLAyout.tar.gz][BorderLAyout.tar.gz]|
+[BoxLayout.tar.gz][BoxLayout.tar.gz]|
+[JButton.tar.gz][JButton.tar.gz]|
+[JCheckBox.tar.gz][JCheckBox.tar.gz]|
+[JComboBox.tar.gz][JComboBox.tar.gz]|
+[JFrame.tar.gz][JFrame.tar.gz]|
+[JLabel.tar.gz][JLabel.tar.gz]|
+[JTextField.tar.gz][JTextField.tar.gz]
#### Bibliografia Básica :
@@ -128,7 +136,26 @@ Booch , Grady; Maksimchuk, Robert A.; Engel, Michael W.; Young, Bobbi J. ; Conal
[eckDavid]: http://math.hws.edu/javanotes/
[oracle]: http://docs.oracle.com/javase/specs/
-[Atividade 1]: atividade1.md
-[Atividade 2]: /exercicio2/atividade2.md
+[Atividade 1]: atividade1.md
+[Atividade 2]: /exercicio2/atividade2.md
+[Atividade 3]: /exercicio3/atividade3.md
[sl7]: /lectures/oo/Aula7.pdf
[codeLec7]: /lectures/oo/aula7/aula7.tar.gz
+[sl8]: https://docs.google.com/presentation/d/17OrSiEvlAuT6vnaU9SOnj2C5ppnjhGuBafyg4WGdGBM/edit?usp=sharing
+[list1]: list1.tar.gz
+[list2]: list2.tar.gz
+[list3]: list3.tar.gz
+[JLabel]: exemploJButton.tar.gz
+[JTextField]: exemploJLabel.tar.gz
+[JButton]: exemploJTextField.tar.gz
+
+
+
+[BorderLAyout.tar.gz]:/lectures/oo/BorderLAyout.tar.gz
+[BoxLayout.tar.gz]:/lectures/oo/BoxLayout.tar.gz
+[JButton.tar.gz]:/lectures/oo/JButton.tar.gz
+[JCheckBox.tar.gz]:/lectures/oo/JCheckBox.tar.gz
+[JComboBox.tar.gz]:/lectures/oo/JComboBox.tar.gz
+[JFrame.tar.gz]:/lectures/oo/JFrame.tar.gz
+[JLabel.tar.gz]:/lectures/oo/JLabel.tar.gz
+[JTextField.tar.gz]:/lectures/oo/JTextField.tar.gz