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

De CoteiaWiki
(Notas)
Linha 6: Linha 6:
 
: ''Horário de atendimento'': Quintas das 16h às 19h
 
: ''Horário de atendimento'': Quintas das 16h às 19h
  
:'''Aluno PAE''': Ricardo Ramos (ricardoramos ''[arroba]'' icmc usp br)
+
:'''Monitor especial''': ( ''[arroba]'' grad icmc usp br)
: Atendimento por demanda - procurá-lo ou enviar email para marcar
+
: Aulas de laboratório com exercícios:  
 
 
:'''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 ==
 
== Exercícios ==
Linha 24: Linha 21:
 
== Trabalho Prático ==
 
== Trabalho Prático ==
  
Tema: '''Simulador de campeonato de futebol'''
+
Tema: '''A definir'''
  
 
- '''Em duplas''' (a dupla deverá permanecer a mesma em cada trabalho).
 
- '''Em duplas''' (a dupla deverá permanecer a mesma em cada trabalho).
Linha 32: Linha 29:
 
=== Sistema de submissão ===
 
=== Sistema de submissão ===
  
O projeto deverá ser entregue apenas pelo Sistema de Submissão de Programas [http://netuno.icmc.usp.br/ssp01/], 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:
+
O projeto deverá ser entregue...
 
 
.6669999\
 
:.CC\
 
:.Java\
 
  
 
=== Parte 1 ===
 
=== Parte 1 ===
Linha 42: Linha 35:
 
* [[Media:poo_Trabalho1.pdf‎|Trabalho 1 (clique para ver a descrição)]]: modelagem e implementação orientada a objetos
 
* [[Media:poo_Trabalho1.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++'''
** Entrega até '''08/04'''
+
** Entrega até '''99/99'''
 
** Critérios (70+15+15%):
 
** Critérios (70+15+15%):
:: 1) 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 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%''
 
:: 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%''
Linha 50: Linha 43:
  
 
=== Parte 2 ===
 
=== Parte 2 ===
 
A qualidade do arquivo PDF foi melhorada em 13/05 as 17h, favor baixar a nova versão.
 
 
 
Dica: se quiser saber a pasta atual do projeto, pode usar o método: System.getProperty("user.dir")
 
Dica: se quiser saber a pasta atual do projeto, pode usar o método: System.getProperty("user.dir")
  
Linha 60: Linha 50:
 
** Insere interface gráfica, operação com arquivos e uma simulação de jogos
 
** Insere interface gráfica, operação com arquivos e uma simulação de jogos
 
** [[Media:poo_T2Exemplo.tar.gz|Uma interface de exemplo]]
 
** [[Media:poo_T2Exemplo.tar.gz|Uma interface de exemplo]]
** Implementação em '''Java'''
+
** Entrega até '''99/99'''
** Entrega até '''30/05'''
 
 
** Critérios:
 
** Critérios:
:: 1) Orientação a objetos, código e documentação: ''50%''
+
:: 1) Compilação, execução, orientação a objetos, código e documentação: ''50%''
 
:: 2) Interface gráfica: ''25%''
 
:: 2) Interface gráfica: ''25%''
 
:: 3) Uso de arquivos: ''25%'
 
:: 3) Uso de arquivos: ''25%'
Linha 72: Linha 61:
 
* [[Media:poo_Trabalho3.pdf‎|Trabalho 3 (clique para ver a descrição)]]: threads, rede e outros
 
* [[Media:poo_Trabalho3.pdf‎|Trabalho 3 (clique para ver a descrição)]]: threads, rede e outros
 
** É uma continuação dos Trabalhos 1 e 2
 
** É uma continuação dos Trabalhos 1 e 2
** Implementação em '''Java'''
+
** Entrega até '''99/99'''
** Entrega até '''03/07'''
 
 
** Critérios:
 
** Critérios:
:: 1) 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) Implementacao de rede: ''20%''
 
:: 3) Multithreading: ''20%''
 
:: 3) Multithreading: ''20%''

Edição das 11h27min de 17 de janeiro 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

- 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...

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 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

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

1) Compilação, execução, orientação a objetos, código e documentação: 50%
2) Interface gráfica: 25%
3) Uso de arquivos: 25%'

Parte 3

1) Compilação, execução, 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)

ATENÇÃ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

Horário: das 17h00 as 19h00

Sala: 3-012

Conteúdo: todo o conteúdo do semestre. Não será cobrado interface, redes e serviços web.

Veja as notas da REC abaixo.

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: [1]
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: [2]
Figuras JVM: [3] e [4]
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 [5]
- 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 [6]
Exemplos da aula 11: aula11.tar.gz
12 e 13. Classes abstratas e interfaces
- herança múltipla em C++
- classes abstratas: podem ser implementadas parcialmente (podem conter atributos e métodos não abstratos) ou conter apenas declarações; não podem ser instanciadas; são herdadas por outras classes (o que provê uma identidade); uma classe concreta que herda de uma classe abstrata deve implementar os métodos abstratos herdados; .
Exemplos da aula 12: aula12.tar.gz
- interfaces em Java: entidades abstratas 'puras', contem apenas a declaração; não podem ser instanciadas; são implementadas por outras classes (o que adiciona funcionalidades); seus membros são sempre públicos.
Quando usar interface, quando usar classe abstrata? [7]
Diagramas exercícios aula 13: Shapes.png, ZombieGame.png
Exemplos da aula 13: aula13.tar.gz
14 e 15. Programação genérica
- técnica de abstração que permite escrever codigo com tipos a serem especificados posteriormente, que serao instanciados conforme a demanda de uso daquele algoritmo
- templates C++: exemplos com set e map
- collections Java: [8] [9]
- generics Java
Exemplos da aula 14: (usando) aula14.tar.gz
Exemplos da aula 15: (programando) aula15.tar.gz
para aprender a programar usando Generics [10]
para aprender a programar usando Templates [11]

Parte 2: ferramentas da programação Orientada a Objetos

16 e 17. IDEs e Interface Gráfica
Slides da aula 16: GUIs Java
Exemplos da aula 16: aula16.tar.gz
18. Prova 1
19 e 20. Exercícios e exemplos: com encapsulamento, interface gráfica e processamento de arquivos.
Exemplo das aulas 19 e 20: aula20.tar.gz
21. Tratamento de Exceçao
Hierarquia de exceções Java[12]
Hierarquia de exceções C++[13]
Exemplos da aula 21: (exceções) aula21.tar.gz
Exemplo das aulas 20 e 21: (continuação da aula 20 'bookshelf', com interface gráfica) aula21b.tar.gz
22. Exemplo: interface gráfica com imagens e uma classe aninhada, com gravação e leitura de arquivo
Exemplo das aulas 21 e 22: (continuação da aula 21 'bookshelf', com interface gráfica) aula22.tar.gz
23 e 24. Threads
Exemplos da aula 23: Java threads aula23.tar.gz
Exemplos da aula 24: sincronização entre threads usando métodos e objetos aula24.tar.gz
25 e 26. Projeto orientado a objetos
Exercício em sala de aula em duplas
Exemplos da aula 26 (revisao polimorfismo): aula26.tar.gz
27. Tópicos adicionais
Serializable objects
Programa Booklist modificado para gravar e carregar objetos do disco: booklist.tar.gz
Enumerações, nested and inner classes
Exemplos da aula 27: aula27.tar.gz
28. Rede
Sockets, Cliente/Servidor, passagem de dados e de objetos por Streams
Apostila: PDF
Exemplos da aula 28: aula28.tar.gz
29. Serviços Web
Exemplos da aula 29: aula29.tar.gz
* AVISO: não haverá aula nos dias 14 e 17/06
30. Exercícios (21/06)
31. Prova 2

Leituras e materiais complementares

Links e recursos externos

  • Documentação Java da SUN/ORACLE [14]
-> acesse [15] 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 [16]
  • Exemplos do livro do Barnes para uso em BlueJ [17]

Apostila