|
|
(47 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) |
| | | |
− | :'''Professor''': Moacir Ponti Jr (moacir ''at'' icmc usp br), Sala 4-117
| + | Sextas as 08h10 (sala 5-004) |
− | : ''Horário de atendimento'': Quintas das 16h às 19h
| |
| | | |
− | :'''Aluno PAE''': Ricardo Ramos (ricardoramos ''[arroba]'' icmc usp br) | + | :'''Professor''': Moacir Ponti Jr (moacir ''at'' icmc usp br), Sala 3-245 |
− | : Atendimento por demanda - procurá-lo ou enviar email para marcar | + | : ''Horário de atendimento'': Quartas das 17h às 18h - Quintas das 16h as 18h |
| | | |
− | :'''Monitor especial''': Eduardo Henrique dos Santos (eduhsbc ''[arroba]'' grad icmc usp br) | + | :'''Monitor''': Samuel G. Fadel ( fadel ''[arroba]'' grad icmc usp br) |
− | : Aulas de laboratório com exercícios: Quartas das 13h as 14h, sala 6-305 (bloco 6) | + | : ''Horário de monitoria'': Quintas das 18h às 19h (Lab 7 bloco 6) |
| + | |
| + | '''Material, gerencimento da disciplina no TIDIA-AE''' [http://agora.tidia-ae.usp.br/portal] |
| | | |
| == Exercícios == | | == Exercícios == |
Linha 16: |
Linha 17: |
| * [[Media:poo_ListaExercicios_02.pdf|Exercício 2 (pdf)]] - produtos: polimorfismo | | * [[Media:poo_ListaExercicios_02.pdf|Exercício 2 (pdf)]] - produtos: polimorfismo |
| * [[Media:poo_ListaExercicios_04.pdf|Exercício 4 (pdf)]] - pegadas de carbono: interfaces e classes abstratas | | * [[Media:poo_ListaExercicios_04.pdf|Exercício 4 (pdf)]] - pegadas de carbono: interfaces e classes abstratas |
− | * [[Media:poo_ListaExercicios_05.pdf|Exercício 5 (pdf)]] - instanciamento de objetos via interface gráfica | + | * [[Media:poo_ListaExercicios_05.pdf|Exercício 5 (pdf)]] - instanciando objetos via interface gráfica |
− | | + | * [[Media:poo_ListaExercicios_06.pdf|Exercício 6 (pdf)]] - tratamento de exceção |
− | == Trabalho Prático ==
| + | * [[Media:poo_ListaExercicios_07.pdf|Exercício 7 (pdf)]] - threads |
− | | + | * [[Media:poo_ListaExercicios_08.pdf|Exercício 8 (pdf)]] - projeto orientado a objetos |
− | Tema: '''Simulador de campeonato de futebol'''
| + | * [[Media:poo_ListaExercicios_09.pdf|Exercício 9 (pdf)]] - redes |
− | | |
− | - '''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 ===
| |
− | | |
− | * [[Media:poo_Trabalho2.pdf|Trabalho 2 (clique para ver a descrição)]]: classes abstratas e interface, interface gráfica do usuário 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é '''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 ===
| |
− | | |
− | * [[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é '''29/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)
| |
− | | |
− | == 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, 20 e 21. '''Exercícios e exemplos''': com herança múltipla/interface, encapsulamento, polimorfismo, programação genérica, interface gráfica e processamento de arquivos.
| |
− | :: ''Exemplo das aula 19:'' [[Media:aula19.tar.gz|aula19.tar.gz]]
| |
− | :: ''Exemplo das aula 20:'' [[Media:aula20.tar.gz|aula20.tar.gz]]
| |
− | :: ''Exemplo das aula 21:'' [[Media:aula21.tar.gz|aula21.tar.gz]]
| |
− | :22 e 23. '''Tratamento de Exceçao'''
| |
− | :: ''Exemplos das aulas 22 e 23:'' [[Media:aula23.tar.gz|aula23.tar.gz]]
| |
− | :24 e 25. '''Threads'''
| |
− | :: ''Exemplos da aula 24 e 25:'' [[Media:aula25.tar.gz|aula25.tar.gz]]
| |
− | :26, 27 e 28. '''Padrões de Projeto'''
| |
− | :: ''Exemplos das aulas 26, 27 e 28:'' [[Media:aula28.tar.gz|aula28.tar.gz]]
| |
− | :29. '''Tópicos adicionais'''
| |
− | :: ''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'''
| |
− | :31. '''Prova 2'''
| |
− | | |
− | == Leituras e materiais complementares ==
| |
| | | |
− | === Links e recursos externos ===
| + | == 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] |