Mudanças entre as edições de "SCC-204(Moacir)"

De CoteiaWiki
Linha 22: Linha 22:
  
 
Tema: '''A definir'''
 
Tema: '''A definir'''
 
- '''Em duplas''' (a dupla deverá permanecer a mesma em cada trabalho).
 
  
 
- Incremental (um trabalho é a continuação do anterior)
 
- Incremental (um trabalho é a continuação do anterior)
Linha 29: Linha 27:
 
=== Sistema de submissão ===
 
=== Sistema de submissão ===
  
O projeto deverá ser entregue...
+
O projeto deverá ser entregue via TIDIA-AE [http://agora.tidia-ae.usp.br/]
  
 
=== Parte 1 ===
 
=== Parte 1 ===
  
* [[Media:poo_Trabalho1.pdf‎|Trabalho 1 (clique para ver a descrição)]]: modelagem e implementação orientada a objetos
+
* [[Media:poo_Trabalho1_2012.pdf‎|Trabalho 1 (clique para ver a descrição)]]: modelagem e implementação orientada a objetos
 
** Implementação em '''Java''' e '''C++'''
 
** Implementação em '''Java''' e '''C++'''
 +
** '''Individual'''
 
** Entrega até '''99/99'''
 
** Entrega até '''99/99'''
** Critérios (70+15+15%):
+
** Critérios
 
:: 1) Compilação, execução, estruturação das classes, e conceitos de orientação a objetos ''com cumprimento dos objetivos do trabalho'': total ''70%''
 
:: 1) Compilação, execução, estruturação das classes, e conceitos de orientação a objetos ''com cumprimento dos objetivos do trabalho'': total ''70%''
::: - será principalmente observada a modelagem das ''entidades'' (classes) que formam a solução para o problema (30%), o uso da coleção de objetos e iteradores (15%) , uso correto de herança e encapsulamento (25%).
+
::: - será principalmente observada a modelagem das ''entidades'' (classes) que formam a solução para o problema (30%), o uso da coleção de objetos e iteradores (15%), uso correto de encapsulamento (25%).
:: 2) Separação da interface e implementação (uso de cabeçalho/fonte em C++) (7,5%) e documentação das classes e métodos (7,5%): total ''15%''
+
:: 2) Separação da interface e implementação (uso de cabeçalho/fonte em C++) (7,5%) e documentação no código das classes e métodos (7,5%): total ''15%''
 
:: 3) Clareza, endentação e comentários úteis no código: total ''15%''
 
:: 3) Clareza, endentação e comentários úteis no código: total ''15%''
  
 
=== Parte 2 ===
 
=== Parte 2 ===
Dica: se quiser saber a pasta atual do projeto, pode usar o método: System.getProperty("user.dir")
+
* [[Media:poo_Trabalho2_2012.pdf‎|Trabalho 2 (clique para ver a descrição)]]:
 
 
* [[Media:poo_Trabalho2.pdf‎|Trabalho 2 (clique para ver a descrição)]]: classes abstratas e interface, interface gráfica do usuário e arquivos.
 
 
** Arquivo de dados para teste: [[Media:Dados.txt|Dados.txt]]
 
** Arquivo de dados para teste: [[Media:Dados.txt|Dados.txt]]
 
** É uma continuação do Trabalho 1
 
** É uma continuação do Trabalho 1
** Insere interface gráfica, operação com arquivos e uma simulação de jogos
+
** Implementação em '''Java''' e '''C++'''
 +
** Insere herança, polimorfismo, programação genérica e aprimora coleções de objetos e iteradores
 
** [[Media:poo_T2Exemplo.tar.gz|Uma interface de exemplo]]
 
** [[Media:poo_T2Exemplo.tar.gz|Uma interface de exemplo]]
 
** Entrega até '''99/99'''
 
** Entrega até '''99/99'''
 +
** Em ''duplas''
 
** Critérios:
 
** Critérios:
:: 1) Compilação, execução, orientação a objetos, código e documentação: ''50%''
+
:: 1) Compilação, execução, orientação a objetos, código e documentação, estruturação das classes e conceitos de orientação a objetos ''com cumprimento dos objetivos do trabalho'': ''50%''
:: 2) Interface gráfica: ''25%''
+
:: 2) Classes abstratas, herança e polimorfismo: ''20%''
:: 3) Uso de arquivos: ''25%'
+
:: 3) Programação genérica: ''20%''
 +
:: 4) Coleção de objetos e iteradores: ''10%''
 +
Dica: se quiser saber a pasta atual do projeto, pode usar o método: System.getProperty("user.dir")
 +
 
  
 
=== Parte 3 ===
 
=== Parte 3 ===
  
* '''ATUALIZADO EM 19/06'''
+
* [[Media:poo_Trabalho3_2012.pdf‎|Trabalho 3 (clique para ver a descrição)]]: tratamento de exceções, padrões de projeto, threads e interface
* [[Media:poo_Trabalho3.pdf‎|Trabalho 3 (clique para ver a descrição)]]: threads, rede e outros
+
** Implementação em '''Java''' OU '''C++'''
 
** É uma continuação dos Trabalhos 1 e 2
 
** É uma continuação dos Trabalhos 1 e 2
 
** Entrega até '''99/99'''
 
** Entrega até '''99/99'''
 +
** ''Em duplas'' (a dupla deverá ser a mesma do trabalho 2)
 
** Critérios:
 
** Critérios:
 
:: 1) Compilação, execução, orientação a objetos, código e documentação: ''40%''
 
:: 1) Compilação, execução, orientação a objetos, código e documentação: ''40%''
:: 2) Implementacao de rede: ''20%''
+
:: 2) Tratamento de exceções: ''20%''
:: 3) Multithreading: ''20%''
+
:: 3) Padrões de projeto: ''20%''
:: 3) Outros: total ''20%''
+
:: 4) Multithreading: ''10%''
 +
:: 5) Interface: ''10%''
  
 
== Provas ==
 
== Provas ==
  
'''Datas:''' 03/05 (P1), 28/06 (P2)
+
'''Datas:''' 10/04 (P1), 29/06 (P2)
  
ATENÇÃO
+
<!-- === Recuperação ===
* conteúdo ''básico'' da P2: classes e objetos, encapsulamento, herança, polimorfismo, sobrescrita (''override'') e sobrecarga (''overload'') de métodos e operadores, herança múltipla, separação de interface e implementação, classes abstratas e Java ''interfaces'', coleções de objetos e iteradores, projeto orientado a objetos, programação genérica e tratamento de exceção.
 
* conteúdo ''extra'' da P2: threads e rede.
 
 
 
=== Recuperação ===
 
 
Data: 2 de Agosto, Terça-feira
 
Data: 2 de Agosto, Terça-feira
  
Linha 85: Linha 85:
 
Conteúdo: todo o conteúdo do semestre. Não será cobrado interface, redes e serviços web.
 
Conteúdo: todo o conteúdo do semestre. Não será cobrado interface, redes e serviços web.
  
'''Veja as notas da REC abaixo.'''
+
'''Veja as notas da REC abaixo.''' -->
  
 
== Notas ==
 
== Notas ==
  
* [[Media:NotasT1scc0204.pdf|Trabalho 1 - notas e comentarios]].  
+
* [[Media:NotasT1scc0204_2012.pdf|Trabalho 1 - notas e comentarios]].  
  
* [[Media:NotasT2scc0204.pdf|Trabalho 2 - notas e comentarios]]. Para revisão do trabalho e da correção favor procurar a pessoa que corrigiu o trabalho.
+
* [[Media:NotasT2scc0204_2012.pdf|Trabalho 2 - notas e comentarios]]. Para revisão do trabalho e da correção favor procurar a pessoa que corrigiu o trabalho.
  
* [[Media:Notas_scc0204_2011-1.pdf|Notas planilha completa]] (com notas das: P1, P2, T1 e T2)
+
* [[Media:Notas_scc0204_2012-1.pdf|Notas planilha completa]] (com notas das provas e trabalhos realizados até a data atual)
  
* [[Media:NotasREC_scc0204_2011-1.pdf|NOTAS DA REC]] - '''Notas da prova realizada em 02/08'''
+
* [[Media:NotasREC_scc0204_2012-1.pdf|NOTAS DA REC]]
  
 
== Conteúdo e Material Didático ==
 
== Conteúdo e Material Didático ==
 +
 
=== Parte 1: fundamentos de Orientação a Objetos ===
 
=== Parte 1: fundamentos de Orientação a Objetos ===
 
:1. [[Media:poo_00.Apresentacao.pdf|Apresentação da Disciplina: objetivos, programa, materiais, avaliação e bibliografia]].
 
:1. [[Media:poo_00.Apresentacao.pdf|Apresentação da Disciplina: objetivos, programa, materiais, avaliação e bibliografia]].
Linha 150: Linha 151:
 
:: ''Bibliografia sugerida:'' Deitel C++ capítulo 13. Deitel Java capítulo 9.
 
:: ''Bibliografia sugerida:'' Deitel C++ capítulo 13. Deitel Java capítulo 9.
 
:: ''Exemplos da aula 8:'' [[Media:aula08.tar.gz|aula08.tar.gz]]
 
:: ''Exemplos da aula 8:'' [[Media:aula08.tar.gz|aula08.tar.gz]]
:9, 10 e 11. '''Conceitos de Orientação a Objetos - Herança''': parte 2
+
 
 +
 
 +
<!-- :9, 10 e 11. '''Conceitos de Orientação a Objetos - Herança''': parte 2
 
:: - construtor de cópia e operator= em C++  
 
:: - construtor de cópia e operator= em C++  
 
:: - polimorfismo em C++ (virtual)
 
:: - polimorfismo em C++ (virtual)
Linha 214: Linha 217:
 
:30. '''Exercícios''' (21/06)
 
:30. '''Exercícios''' (21/06)
 
:31. '''Prova 2'''
 
:31. '''Prova 2'''
 +
-->
 +
  
 
== Leituras e materiais complementares ==
 
== Leituras e materiais complementares ==

Edição das 17h57min de 24 de fevereiro de 2012

SCC-0204 Programaçao Orientada a Objetos

Terça as 14h20 e Sexta as 10h10 - Sala 5-003

Professor: Moacir Ponti Jr (moacir at icmc usp br), Sala 3-245
Horário de atendimento: Quintas das 16h às 19h
Monitor especial: ( [arroba] grad icmc usp br)
Aulas de laboratório com exercícios:

Exercícios

Trabalho Prático

Tema: A definir

- Incremental (um trabalho é a continuação do anterior)

Sistema de submissão

O projeto deverá ser entregue via TIDIA-AE [1]

Parte 1

1) Compilação, execução, estruturação das classes, e conceitos de orientação a objetos com cumprimento dos objetivos do trabalho: total 70%
- será principalmente observada a modelagem das entidades (classes) que formam a solução para o problema (30%), o uso da coleção de objetos e iteradores (15%), uso correto de encapsulamento (25%).
2) Separação da interface e implementação (uso de cabeçalho/fonte em C++) (7,5%) e documentação no código das classes e métodos (7,5%): total 15%
3) Clareza, endentação e comentários úteis no código: total 15%

Parte 2

1) Compilação, execução, orientação a objetos, código e documentação, estruturação das classes e conceitos de orientação a objetos com cumprimento dos objetivos do trabalho: 50%
2) Classes abstratas, herança e polimorfismo: 20%
3) Programação genérica: 20%
4) Coleção de objetos e iteradores: 10%

Dica: se quiser saber a pasta atual do projeto, pode usar o método: System.getProperty("user.dir")


Parte 3

  • Trabalho 3 (clique para ver a descrição): tratamento de exceções, padrões de projeto, threads e interface
    • Implementação em Java OU C++
    • É uma continuação dos Trabalhos 1 e 2
    • Entrega até 99/99
    • Em duplas (a dupla deverá ser a mesma do trabalho 2)
    • Critérios:
1) Compilação, execução, orientação a objetos, código e documentação: 40%
2) Tratamento de exceções: 20%
3) Padrões de projeto: 20%
4) Multithreading: 10%
5) Interface: 10%

Provas

Datas: 10/04 (P1), 29/06 (P2)


Notas

Conteúdo e Material Didático

Parte 1: fundamentos de Orientação a Objetos

1. Apresentação da Disciplina: objetivos, programa, materiais, avaliação e bibliografia.
Introdução à Programação Orientada a Objetos
- Classe e objeto, implementações em C++ e Java
- Comparação com paradigma imperativo
- Compilação e execução em C++ e Java
Bibliografia sugerida: Deitel, seções 3.1 a 3.5, Slides Prof. Fernando Paulovich: [2]
2. Detalhes de Implementação: C++ e Java
- Ponteiros e endereçamento
- Alocação dinâmica e estática de objetos em C++
- Projeto e diagramas de classe e objeto: estado/comportamento
- Alocação de objetos em Java e referência nula
- Passagem de parâmetros para métodos em Java
- BlueJ e Máquina virtual Java (JVM)
Bibliografia sugerida: Deitel, seções 3.6 a 3.8, Slides Prof. Fernando Paulovich: [3]
Figuras JVM: [4] e [5]
Exemplos das aulas 1 e 2: aula02.tar.gz
3. Main, Construtores, Destrutores e Interação entre Objetos
- função principal (main) em Java e C++
- múltiplos setters -> construtores
- objeto: declaração, instanciação e inicialização
- implementar construtores em C++
- destrutores em C++
- uso de new/delete
- implementar construtores em Java
Exemplos da aula 3: aula03.tar.gz
4. Introdução ao Projeto Orientado a Objetos
- interação entre objetos -> exemplos em Java e C++
- diagramas de classe e objeto
- exercício
- exemplo de projeto de duas classes com implementação: C++ e Java
Exemplos da aula 4: aula04.tar.gz
5. Detalhes de implementação: constantes, estáticos e tipos: parte1
- constantes
- tipos primitivos e classes Wrapper em Java [6]
- atributos e métodos static em Java
Exemplos da aula 5: aula05.tar.gz
6 Detalhes de implementação: constantes, estáticos: parte 2 e Coleções de Objetos
- constantes e static em C++
- pacotes Java
- coleção de objetos
- exemplo usando os conceitos vistos ate agora
Exemplos da aula 6: aula06.tar.gz
7 e 8. Conceitos de Orientação a Objetos - Herança: parte 1
- encapsulamento, super e subclasse, herança
- criação de novos atributos e métodos (subclasse mais específica)
- em Java, exemplo da aula 7, desenvolvida no BlueJ: aula07.tar.gz
- construtores e herança
- vários níveis de herança (atributos e métodos protegidos, chamada a construtores)
- sobrescrita de métodos, e sobrecarga de métodos e construtores
Bibliografia sugerida: Deitel C++ capítulo 13. Deitel Java capítulo 9.
Exemplos da aula 8: aula08.tar.gz



Leituras e materiais complementares

Links e recursos externos

  • Documentação Java da SUN/ORACLE [7]
-> acesse [8] vá em "Additional resources" para baixar a documentação (Java SE 6 Documentation) e o código fonte das classes (Java JDK source code)
  • Download do BlueJ [9]
  • Exemplos do livro do Barnes para uso em BlueJ [10]

Apostila