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

De CoteiaWiki
 
(18 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
 
''' SCC-0204 Programaçao Orientada a Objetos '''
 
''' SCC-0204 Programaçao Orientada a Objetos '''
  
Terça as 14h20 e Sexta as 10h10 - Sala 5-003
+
Terças as 16h20 (sala 4-003)
 +
 
 +
Sextas as 08h10 (sala 5-004)
  
 
:'''Professor''': Moacir Ponti Jr (moacir ''at'' icmc usp br), Sala 3-245
 
:'''Professor''': Moacir Ponti Jr (moacir ''at'' icmc usp br), Sala 3-245
: ''Horário de atendimento'': Quintas das 16h às 19h
+
: ''Horário de atendimento'': Quartas das 17h às 18h - Quintas das 16h as 18h
  
:'''Aluno PAE''': Ricardo Ramos (ricardoramos ''[arroba]'' icmc usp br)
+
:'''Monitor''': Samuel G. Fadel ( fadel ''[arroba]'' grad icmc usp br)
: Atendimento por demanda - procurá-lo ou enviar email para marcar
+
: ''Horário de monitoria'': Quintas das 18h às 19h (Lab 7 bloco 6)
  
:'''Monitor especial''': Eduardo Henrique dos Santos (eduhsbc ''[arroba]'' grad icmc usp br)
+
'''Material, gerencimento da disciplina no TIDIA-AE''' [http://agora.tidia-ae.usp.br/portal]
: Aulas de laboratório com exercícios: Quartas das 13h as 14h, sala 6-305 (bloco 6)
 
  
 
== Exercícios ==
 
== Exercícios ==
Linha 22: Linha 23:
 
* [[Media:poo_ListaExercicios_09.pdf‎|Exercício 9 (pdf)]] - redes
 
* [[Media:poo_ListaExercicios_09.pdf‎|Exercício 9 (pdf)]] - redes
  
== Trabalho Prático ==
+
== Links e recursos externos ==
 
 
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 [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:
 
 
 
.6669999\
 
:.CC\
 
:.Java\
 
 
 
=== Parte 1 ===
 
 
 
* [[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++'''
 
** Entrega até '''08/04'''
 
** 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%''
 
::: - 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 ===
 
 
 
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")
 
 
 
* [[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]]
 
** É uma continuação do Trabalho 1
 
** Insere interface gráfica, operação com arquivos e uma simulação de jogos
 
** [[Media:poo_T2Exemplo.tar.gz|Uma interface de exemplo]]
 
** Implementação em '''Java'''
 
** Entrega até '''30/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 ===
 
 
 
* '''ATUALIZADO EM 19/06'''
 
* [[Media:poo_Trabalho3.pdf‎|Trabalho 3 (clique para ver a descrição)]]: threads, rede e outros
 
** É uma continuação dos Trabalhos 1 e 2
 
** Implementação em '''Java'''
 
** Entrega até '''27/06'''
 
** Critérios:
 
:: 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)
 
 
 
'''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.
 
 
 
== Notas ==
 
 
 
* [[Media:NotasT1scc0204.pdf|Trabalho 1 - notas e comentarios]]. 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 da P1). Revisão da P1 às quintas-feiras das 16h as 19h
 
 
 
== Conteúdo e Material Didático ==
 
=== 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]].
 
:: '''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: [http://www.lcad.icmc.usp.br/~paulovic/aulas/POO/SCC0604-aula-01-Introducao_OO.pdf]
 
: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: [http://www.lcad.icmc.usp.br/~paulovic/aulas/POO/SCC0604-aula-02-Classes_Objetos.pdf]
 
:: ''Figuras JVM:'' [http://www.codeproject.com/KB/java/How_JVM_Works/JVM2.png] e [http://img.viralpatel.net/2008/12/java-program-execution.png]
 
:: ''Exemplos das aulas 1 e 2'': [[Media:aula02.tar.gz|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'': [[Media:aula03.tar.gz|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'': [[Media:aula04.tar.gz|aula04.tar.gz]]
 
:5. '''Detalhes de implementação: constantes, estáticos e tipos''': parte1
 
:: - constantes
 
:: - tipos primitivos e classes Wrapper em Java [http://www.certpal.com/blogs/2011/02/java-immutable/]
 
:: - atributos e métodos ''static'' em Java
 
:: ''Exemplos da aula 5'': [[Media:aula05.tar.gz|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'': [[Media:aula06.tar.gz|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: [[Media:aula07.tar.gz|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:'' [[Media:aula08.tar.gz|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 [[Media:aula09.tar.gz|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:'' [[Media:aula10.tar.gz|aula10.tar.gz]]
 
:: ''Um bom software para fazer diagramas'': Dia [http://projects.gnome.org/dia/]
 
:: ''Exemplos da aula 11:'' [[Media:aula11.tar.gz|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:'' [[Media:aula12.tar.gz|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?'' [http://www.codeproject.com/KB/architecture/Abstract_Interface.aspx]
 
:: ''Diagramas exercícios aula 13:'' [[Media:Shapes.png|Shapes.png]],  [[Media:ZombieGame.png|ZombieGame.png]]
 
:: ''Exemplos da aula 13:'' [[Media:aula13.tar.gz|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: [http://download.oracle.com/javase/tutorial/collections/interfaces/index.html] [http://javagems.com/wp-content/uploads/2008/07/javautilcollection.gif]
 
:: - generics Java
 
:: ''Exemplos da aula 14:'' (usando) [[Media:aula14.tar.gz|aula14.tar.gz]]
 
:: ''Exemplos da aula 15:'' (programando) [[Media:aula15.tar.gz|aula15.tar.gz]]
 
:: para aprender a programar usando Generics [http://download.oracle.com/javase/tutorial/java/generics/index.html]
 
:: para aprender a programar usando Templates [http://www.cplusplus.com/doc/tutorial/templates/]
 
 
 
=== Parte 2: ferramentas da programação Orientada a Objetos ===
 
 
 
:16 e 17. '''IDEs e Interface Gráfica'''
 
:: ''Slides da aula 16:'' [[Media:teorica16_GUI.pdf|GUIs Java]]
 
:: ''Exemplos da aula 16:'' [[Media:aula16.tar.gz|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:'' [[Media:aula20.tar.gz|aula20.tar.gz]]
 
:21. '''Tratamento de Exceçao'''
 
:: Hierarquia de exceções Java[http://php.scripts.psu.edu/djh300/cmpsc221/exceptions-deitel.jpg]
 
:: Hierarquia de exceções C++[http://www.math.bas.bg/~nkirov/2011/NETB151/slides/ch17/images/exceptions.png]
 
:: ''Exemplos da aula 21:'' (exceções) [[Media:aula21.tar.gz|aula21.tar.gz]]
 
:: ''Exemplo das aulas 20 e 21:'' (continuação da aula 20 'bookshelf', com interface gráfica) [[Media:aula21b.tar.gz|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) [[Media:aula22.tar.gz|aula22.tar.gz]]
 
:23 e 24. '''Threads'''
 
:: ''Exemplos da aula 23:'' Java threads [[Media:aula23.tar.gz|aula23.tar.gz]]
 
:: ''Exemplos da aula 24:'' sincronização entre threads usando métodos e objetos [[Media:aula24.tar.gz|aula24.tar.gz]]
 
:25 e 26. '''Projeto orientado a objetos'''
 
:: Exercício em sala de aula em duplas
 
:: ''Exemplos da aula 26 (revisao polimorfismo)'': [[Media:aula26.tar.gz|aula26.tar.gz]]
 
:27. '''Tópicos adicionais'''
 
:: Serializable objects
 
:: ''Programa Booklist modificado para gravar e carregar objetos do disco:'' [[Media:booklist.tar.gz|booklist.tar.gz]]
 
:: Enumerações, nested and inner classes
 
:: ''Exemplos da aula 27:'' [[Media:aula27.tar.gz|aula27.tar.gz]]
 
:28. '''Rede'''
 
:: Sockets, Cliente/Servidor, passagem de dados e de objetos por Streams
 
:: ''Apostila:'' [[Media:apostilaredesjava.pdf|PDF]]
 
:: ''Exemplos da aula 28:'' [[Media:aula28.tar.gz|aula28.tar.gz]]
 
:29. '''Serviços Web'''
 
:: ''Exemplos da aula 29:'' [[Media:aula29.tar.gz|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 [http://java.sun.com/javase/6/docs/api]
 
* Documentação Java da SUN/ORACLE [http://java.sun.com/javase/6/docs/api]

Edição atual tal como às 13h29min de 9 de março de 2012

SCC-0204 Programaçao Orientada a Objetos

Terças as 16h20 (sala 4-003)

Sextas as 08h10 (sala 5-004)

Professor: Moacir Ponti Jr (moacir at icmc usp br), Sala 3-245
Horário de atendimento: Quartas das 17h às 18h - Quintas das 16h as 18h
Monitor: Samuel G. Fadel ( fadel [arroba] grad icmc usp br)
Horário de monitoria: Quintas das 18h às 19h (Lab 7 bloco 6)

Material, gerencimento da disciplina no TIDIA-AE [1]

Exercícios

Links e recursos externos

  • Documentação Java da SUN/ORACLE [2]
-> acesse [3] 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 [4]
  • Exemplos do livro do Barnes para uso em BlueJ [5]

Apostila