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

De CoteiaWiki
(Conteúdo e Material Didático)
(Conteúdo e Material Didático)
Linha 134: Linha 134:
 
:: - polimorfismo em Java
 
:: - polimorfismo em Java
 
:: ''Exemplos da aula 10:'' [[Media:aula10.tar.gz|aula10.tar.gz]]
 
:: ''Exemplos da aula 10:'' [[Media:aula10.tar.gz|aula10.tar.gz]]
:: ''Um bom software para UML'': Dia [http://projects.gnome.org/dia/]
+
:: ''Um bom software para fazer diagramas'': Dia [http://projects.gnome.org/dia/]
 
:: ''Exemplos da aula 11:'' [[Media:aula11.tar.gz|aula11.tar.gz]]
 
:: ''Exemplos da aula 11:'' [[Media:aula11.tar.gz|aula11.tar.gz]]
 
:12 e 13. '''Classes abstratas e interfaces'''
 
:12 e 13. '''Classes abstratas e interfaces'''
 
:: - herança múltipla em C++
 
:: - herança múltipla em C++
:: - classes abstratas
+
:: - classes abstratas: podem estar implementadas parcialmente ou não estar implementadas; não podem ser instanciadas; é preciso criar uma classe que herda de uma classe abstrata para usá-la (e então implementar todos os métodos abstratos herdados).
:: - interfaces em Java
+
:: - interfaces em Java: entidade abstrata 'pura', que contem apenas a declaração; não podem ser instanciadas; são 'implementadas' por outras classes; seus membros são sempre públicos.
 +
:: ''Quando usar interface, quando usar classe abstrata?'' [http://www.codeproject.com/KB/architecture/Abstract_Interface.aspx]
 
:: ''Exemplos da aula 12:'' [[Media:aula12.tar.gz|aula12.tar.gz]]
 
:: ''Exemplos da aula 12:'' [[Media:aula12.tar.gz|aula12.tar.gz]]
 
:: ''Exemplos da aula 13:'' [[Media:aula13.tar.gz|aula13.tar.gz]]
 
:: ''Exemplos da aula 13:'' [[Media:aula13.tar.gz|aula13.tar.gz]]

Edição das 10h46min de 5 de abril de 2011

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 4-117
Horário de atendimento: Quintas das 16h às 19h
Aluno PAE: Ricardo Ramos (ricardoramos [arroba] icmc usp br)
Atendimento por demanda - procurá-lo ou enviar email para marcar
Monitor especial: Eduardo Henrique dos Santos (eduhsbc [arroba] grad icmc usp br)
Aulas de laboratório com exercícios: Quartas das 13h as 14h, sala 6-305 (bloco 6)

Exercícios

Trabalho Prático

Tema: Simulador de campeonato de futebol

- Em duplas (a dupla deverá permanecer a mesma em cada trabalho).

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

Sistema de submissão

O projeto deverá ser entregue apenas pelo Sistema de Submissão de Programas [1], escolhendo a disciplina SCC0204 2011 Turma B, e a opção Trabalho1. Submeta seu projeto com o tipo ZIP. Dentro desse zip deve conter uma pasta com seu número USP e dentro dessa pasta duas outras 'cc' e 'Java' com os respectivos códigos. Exemplo:

.6669999\

.CC\
.Java\

Parte 1

1) 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%).
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%
3) Clareza, endentação e comentários úteis no código: total 15%

Parte 2

  • Trabalho 2 (clique para ver a descrição): herança, interface gráfica, tratamento de exceção e arquivos
    • É uma continuação do Trabalho 1
    • Insere interface gráfica, operação com arquivos e uma simulação de jogos
    • Implementação em Java
    • Entrega até 27/05
    • Critérios:
1) Orientação a objetos, código e documentação: 50%
2) Interface gráfica: 25%
3) Uso de arquivos: 25%'

Parte 3

1) Orientação a objetos, código e documentação: 40%
2) Implementacao de rede: 20%
3) Multithreading: 20%
3) Outros: total 20%

Provas

Datas: 03/05 (P1), 28/06 (P2)

Notas

Conteúdo e Material Didático

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
9, 10 e 11. Conceitos de Orientação a Objetos - Herança: parte 2
- construtor de cópia e operator= em C++
- polimorfismo em C++ (virtual)
Exemplos da aula 9: incluindo Makefile aula09.tar.gz
- static e dynamic binding
- virtual e inline (C++)
- herança de Object, impedir herança (final), sobrecarga e sobrescrita (Java)
- polimorfismo em Java
Exemplos da aula 10: aula10.tar.gz
Um bom software para fazer diagramas: Dia [7]
Exemplos da aula 11: aula11.tar.gz
12 e 13. Classes abstratas e interfaces
- herança múltipla em C++
- classes abstratas: podem estar implementadas parcialmente ou não estar implementadas; não podem ser instanciadas; é preciso criar uma classe que herda de uma classe abstrata para usá-la (e então implementar todos os métodos abstratos herdados).
- interfaces em Java: entidade abstrata 'pura', que contem apenas a declaração; não podem ser instanciadas; são 'implementadas' por outras classes; seus membros são sempre públicos.
Quando usar interface, quando usar classe abstrata? [8]
Exemplos da aula 12: aula12.tar.gz
Exemplos da aula 13: aula13.tar.gz
14 e 15. Programação genérica
- templates
- generics
Exemplos da aula 14: aula14.tar.gz
Exemplos da aula 15: aula15.tar.gz
16 e 17. Tratamento de Exceçao
Exemplos da aula 16 e 17: aula17.tar.gz
18. Prova 1
19. Exercícios e exemplos: com herança múltipla/interface, encapsulamento, polimorfismo e tratamento de exceção.
Exemplos da aula 19: aula19.tar.gz
20 e 21. IDEs e Interface Gráfica
Exemplos da aula 20 e 21: aula21.tar.gz
22 e 23. Processamento de Arquivos
Exemplos da aula 22 e 23: aula23.tar.gz

Leituras e materiais complementares

Links e recursos externos

  • Documentação Java da SUN/ORACLE [9]
-> acesse [10] 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 [11]
  • Exemplos do livro do Barnes para uso em BlueJ [12]

Apostila