Objetivos
O
cumprimento da disciplina busca dar ao aluno, ao final do semestre, condições
de:
1. Conhecer e utilizar de forma
precisa conceitos e termos relacionados ao paradigma de orientação a objetos.
2. Desenvolver as competências e
habilidades para a criação de sistemas de complexidade média, formado por
múltiplos componentes, e expressar estas soluções na forma de um sistema de
classes em uma linguagem de programação.
3. Descrever sistemas utilizando
diagramas e código.
4. Construir abstrações para tipos de
dados, usando os conceitos de classe, objeto, mensagem, herança e interface.
5. Compreender e utilizar as técnicas
fundamentais de teste e depuração de programas.

Ementa
Desenvolvimento de sistemas de software de
complexidade média utilizando o paradigma de orientação a objetos. Estudo e análise
dos conceitos de herança e polimorfismo. Discussão de aspectos avançados
sobre classes. Discussão sobre empacotamento e distribuição de aplicações. Implementação de estruturas de dados encadeadas. Uso de
bibliotecas de coleções. Projeto de sistemas orientados a objetos.

Conteúdo
1)
OBJETOS E CLASSES
1.1. O ambiente de programação
1.1.1. Compilação por linha de
comando
1.1.2. Argumentos do main
1.1.3. Recursos do sistema
operacional
1.2. Revisão de conceitos
1.2.1. Classes e objetos
1.2.2. Atributos e métodos:
classe e instância
1.2.3. Tipos de dados:
referência e valor
1.2.4. Visibilidade de atributos
e métodos
1.2.5. Construtores e Destrutores
1.2.6. Sobrecarga de métodos
1.3. Modelagem orientada a objetos
1.3.1. Associação e dependências
1.3.2. Diagrama de classe UML
1.3.3. Problemas de modelagem
1.4. Gerenciamento de memória
1.5. Introdução ao teste unitário
2)
HERANÇA E POLIMORFISMO
2.1. Relacionamento de
generalização/especialização
2.1.1. Hierarquias de herança
2.1.2. O princípio da
substituição
2.1.3. Sobrescrita de métodos
2.2. Polimorfismo
2.2.1. Explorando o polimorfismo
2.2.2. Classes abstratas
2.2.3. A classe Object
2.2.4. O operador instanceof
2.2.5. Interfaces
2.3. Parametrização de tipos
2.4. Problemas de modelagem
3)
ENTRADA E SAÍDA E TRATAMENTO DE EXCEÇÕES
3.1. Tratamento de exceções
3.1.1. Lançamento de exceções
3.1.2. Captura de exceções
3.1.3. Entendendo a hierarquia
de exceções padrão
3.1.4. Modelando exceções
3.2. Leitura e escrita de arquivos texto
3.2.1. Leitura de dados
3.2.2. Gravação de dados
3.2.3. Formatação de dados
3.2.4. Armazenamento e
recuperação de objetos
4)
PROJETO DE SISTEMAS ORIENTADOS A OBJETOS
4.1. Princípio de Projeto Orientado a Objetos
4.1.1. Encapsulamento,
coesão, acoplamento
4.1.2. Heurísticas de projeto
4.2. Introdução à reutilização
4.2.1. Padrões de projeto
4.2.2. Frameworks
4.2.3. Componentes
5)
A API DE COLEÇÕES
5.1. Coleções
5.1.1. A estrutura da API de
coleções
5.1.2. Listas, filas e pilhas
5.1.3. Conjuntos
5.1.4. Mapas
5.1.5. Resolução de problemas
5.2. Expressões lambda e predicados
6)
INTERFACE DE USUÁRIO GRÁFICA
6.1. O framework de interface de usuário
6.2. Hierarquia de componentes
6.3. Eventos e ações
6.4. Janelas e painéis
6.5. Menus

Bibliografia
Básica
·
HORSTMANN, C. Java for everyone: late objects. 2nd ed. Danvers:
Wiley, 2013. 589 p.
·
RAMNATH, S.; DATHAN, B. Object-oriented analysis and design. New
York: Springer, 2010. 440 p.
·
WEISFELD, M. The object-oriented thought process. 4th ed.
Addison Wesley, 2013. 36 p
·
MEYER, B.
Object Oriented Software Construction. 2a ed.
Prentice-Hall, 1997. 1254 p.
Complementar
·
BOOCH, G.; MAKSIMCHUK, R. A.; ENGLE, M. W.;
YOUNG, B. J.; CONALLEN J.; HOUSTON, K. A. Object-oriented analysis and design with applications. 3rd
ed. Addison Wesley, 2007. 720 p.
·
DEITEL, P.; DEITEL, H. Java: how to program. 9th ed. Prentice Hall, 2011.
1496 p.
·
FARRELL, J. An
object-oriented approach to programming logic and design. 4th
ed. Cengage Learning, 2012. 560 p.
·
GAMMA, E.; JOHNSON, R.; VLISSIDES, J.M.;
HELM, R.; FOWLER, M. Padrões de
projeto: soluções reutilizáveis de software orientado a objetos. Porto Alegre: Bookman, 2002. 364 p.
·
GOODRICH, M. T.;
TAMASSIA, R. Estruturas de dados e
algoritmos em Java. 4a ed. Porto Alegre: Bookman,
2012. 600 p.
Recursos WEB
·
http://www.oracle.com/technetwork/java/index.html
·
http://www.eclipse.org
·
http://grepcode.com
·
https://docs.oracle.com/javase/tutorial/
·
http://astah.net/editions/community
·
The Java Modeling Language: http://www.eecs.ucf.edu/~leavens/JML/index.shtml
|
|

Critérios de Avaliação
G1 = (P1 +
2*P2 + 2*T + ME) / 6
Quanto à P1:
Prova escrita, abordando, geralmente, os conteúdos relacionados com as
unidades 1 à 2.
Quanto à P2:
Prova escrita, abordando os conteúdos até a unidade 6.
Quanto à PS:
Esta prova escrita será aplicada somente para os alunos que não puderam
comparecer nas provas P1 ou P2, sendo que o conteúdo contempla todas as
unidades.
Quanto ao ME:
Corresponde a média dos exercícios realizados ao longo do semestre.
Quanto ao T:
Corresponde ao desenvolvimento de um estudo de caso.
OBS. 1:
Será estimulada a pesquisa de alguns conteúdos extraclasse e que serão
posteriormente avaliados.
OBS. 2: 75% de presença
é necessário para aprovação (tanto em G1 como em G2)
e o grau mínimo em G1 para realizar G2 é 4.0.

Datas das Avaliações
P1
|
22 / 09 / 2017
|
P2
|
21 / 11 / 2017
|
PS
|
24 / 11 / 2017
|
T
|
01 / 12 / 2017
|
G2
|
05 / 12 / 2017
|

Comentários,
dúvidas, sugestões, envie um mail para isabel.manssour at pucrs dot br

Última alteração em 27 de julho de 2017.
|