Ficha Programática da unidade curricular
Unidade
curricular:
|
LINGUAGENS DE PROGRAMAÇÃO II
|
||
|
|
|
|
|
Docente:
|
RUI SILVA MOREIRA
|
Grau académico:
|
DOUTOR
|
Categoria
Funcional:
|
PROFESSOR AUXILIAR
|
|
|
|
|
|
|
|
Ciclo
de Estudos:
|
1º CICLO
|
Curso:
|
ENGENHARIA INFORMÁTICA
|
Semestre curricular:
|
2º SEMESTRE
|
Ano lectivo:
|
2009-2010
|
N.º
total de ECTS:
|
6
|
|
|
N.º
ECTS de Contacto:
|
2,5
|
|
|
Tipologia
das aulas:
|
As aulas terão natureza Teórico-Prática (TP) e Prática Não-Laboratorial
(PNL)
|
||
|
Avaliação: |
1 -
Avaliação contínua
O
método de avaliação da disciplina baseia-se no modelo da avaliação contínua e
compreende duas componentes: uma componente Teórico-Prática e uma componente Prática Não-Laboratorial resultante de trabalhos realizados com
recurso ao computador ou em laboratório de informática.
Componente
Teórico-Prática
A
componente teórico-prática tem um peso de
50% na classificação final da disciplina. A avaliação da componente
teórico-prática realiza-se de forma contínua durante as aulas teórico-práticas,
e inclui os seguintes elementos de avaliação:
·
Dois testes de
avaliação individual:
incidem sobre os conhecimentos leccionados até ao momento em que são realizados. Cada teste possui um peso de 45% na classificação final da componente teórico-prática. Um teste
realiza-se a meio do semestre e o outro no fim do semestre (em data a combinar com os
alunos). Estas avaliações incluirão uma parte de índole mais prática (com a
duração de 40 minutos) na qual se pedirá aos alunos para desenvolverem
determinadas estruturas de dados e/ou algoritmos utilizando a linguagem C –
vale 70% da nota do teste. Esta
componente será complementada por uma parte de índole mais teórico-prática (com
a duração de 20 minutos) englobando um conjunto de perguntas de escolha
múltipla (havendo desconto de 25% por cada resposta errada) ou
verdadeiros/falso (aplicando-se um desconto de 50% por cada resposta errada) sobre
a sintaxe e semântica da linguagem C e de interpretação de programas em C – vale 30% da nota do teste.
·
Desempenho nas aulas
TP: esta
componente procurará avaliar a assiduidade (medida por folhas de presença), a
participação e o empenho nas aulas teórico-práticas (como demonstrado nas
aulas) e também a capacidade para a realização de pequenos trabalhos práticos,
atribuídos durante as aulas, para serem realizados em casa até à aula seguinte.
Estes trabalhos serão atribuídos durante todo o semestre e serão contabilizados
equitativamente. Este elemento possui um peso de 10% na classificação final da componente teórico-prática.
Exige-se
uma nota mínima de oito (8) valores
nesta componente para que se possa ponderar com a classificação da componente
prática não-laboratorial para efeitos de cálculo da classificação final na
disciplina.
A
falta aos momentos de avaliação será convertida numa nota 0 (zero) para efeitos
de cálculo da classificação. Caso o aluno não fique aprovado, será remetido
para exame de recurso ou especial (seja trabalhador-estudante ou finalista),
desde que o aluno tenha obtido a aprovação na componente prática da disciplina
e cumprido o regime de assistência às aulas. Nas aulas teórico-práticas a assiduidade obrigatória é de 50%, de
acordo com o regulamento pedagógico da UFP.
A
classificação obtida na componente teórico-prática será, pois, obtida através
da seguinte expressão:
Nota da componente Teórico-Prática = 45% Teste 1 + 45% Teste 2 + 10% Desempenho
nas Aulas TP
Componente
Prática Não-Laboratorial
A
componente prática não-laboratorial tem um peso de 50% na classificação final da disciplina. A avaliação da
componente prática não-laboratorial realiza-se igualmente de modo contínuo
durante as aulas práticas não-laboratoriais e também pela realização de um
projecto. O projecto será realizado em grupo (no máximo com 3 a 4 alunos) e
implicará a especificação e desenvolvimento de estruturas de dados e
algoritmos, sob a forma de uma ou mais aplicações em Java, sobre um ou mais
temas propostos no início do semestre.
A avaliação da componente prática
não-laboratorial inclui os seguintes elementos de avaliação:
·
1º Relatório Projecto: os alunos deverão
entregar um relatório, até meio do semestre (em data a especificar), com os diagramas
UML e respectiva implementação em Java de uma parte (especificada pelo docente)
do projecto proposto. Este relatório possui um peso de 45% da nota da componente prática não-laboratorial.
·
2º Relatório Projecto: no final do semestre
(em data a especificar) os alunos deverão entregar um relatório final com os
diagramas UML e respectiva implementação em Java da solução da totalidade do
projecto proposto. Deverão fazer ainda, em sala de aula, uma apresentação e uma
demonstração de toda a aplicação. O relatório final deve conter todos os diagramas
UML definitivos bem como uma descrição pormenorizada de todas as classes e
algoritmos desenvolvidos. Esta componente possui um peso de 45% da nota da componente prática
não-laboratorial.
·
Desempenho nas aulas
PNL:
esta componente procurará avaliar a assiduidade (medida por folhas de
presença), a participação e o empenho nas aulas práticas não-laboratoriais
(como demonstrado nas aulas) e também a capacidade para a realização de
pequenos trabalhos práticos, atribuídos durante as aulas, para serem realizados
em casa até à aula seguinte. Estes trabalhos serão atribuídos durante todo o
semestre e serão contabilizados equitativamente. Este elemento possui um peso
de 10% na classificação final da
componente teórico-prática.
A assiduidade às aulas práticas não-laboratoriais
deve ser no mínimo de 70%. Não há possibilidade de recurso ou época especial
para a componente prática não-laboratorial. Os alunos terão que marcar presença
em duas ou mais sessões de discussão/análise dos trabalhos durante as horas de
atendimento para acompanhamento do projecto e/ou esclarecimento de dúvidas. A
classificação obtida na componente prática obtém-se através da seguinte
expressão:
Nota da componente
Prática Não-Laboratorial = 45% 1º Relatório Projecto + 45% 2º Relatório
Projecto + 10% Desempenho nas Aulas PNL
Classificação
final
A classificação final da disciplina obtém-se
através da seguinte expressão:
Nota
final = 50% Nota da Componente Teórico-Prática + 50% Nota da Componente Prática
Não-Laboratorial
Ao aluno, só será contabilizada a
classificação obtida na componente teórico-prática da disciplina se o aluno
tiver obtido uma classificação igual ou superior
a dez (10) valores na componente
prática. Caso contrário lança-se a nota negativa (da componente prática) em
pauta. De igual modo, exige-se uma nota
mínima de oito (8) valores na componente
teórico-prática para que se possa ponderar com a classificação da
componente prática não-laboratorial. Caso contrário lança-se a nota negativa
(da componente teórica) em pauta.
2 -
Exame de Recurso/Época Especial:
O exame de recurso/época especial é uma prova
excepcional que ocorre apenas no final do ano lectivo, no período previsto no
cronograma, e que apenas abrange a componente teórico-prática da disciplina,
incidindo sobre a totalidade da matéria teórico-prática incluída no programa da
disciplina, com a duração máxima, incluindo tolerância, de 90 minutos. O aluno
só se poderá submeter a este exame se tiver sido aprovado na componente prática
desta disciplina e tenha cumprido as assiduidades mínimas estabelecidas no
regulamento pedagógico. É exigida uma nota mínima que seja, pelo menos, igual
ao valor inferior da classificação, que num exame, dá acesso à oral, nesta
componente teórica da avaliação para que se possa ponderar com a nota da
componente prática para efeitos do cálculo da nota final. Esta prova destina-se
aos alunos que não obtiveram aprovação na componente teórico-prática da
disciplina, ou alunos em regimes especiais. Não existe qualquer possibilidade
de recurso à componente prática da disciplina.
A classificação final do aluno será calculada
utilizando a equação indicada acima na secção classificação final. A
classificação obtida no exame de recurso ou especial corresponderá à
classificação da componente teórica.
Este procedimento também se aplica às Épocas
de Trabalhador-Estudante e Finalista.
No caso de alunos com o estatuto de trabalhador-estudante, com
impossibilidade de presença num número significativo de aulas teórico-práticas,
a avaliação do desempenho em sala de aula será substituída por uma prova oral
em que o aluno deverá resolver um conjunto de problemas teórico-práticos
relacionados com o programa da disciplina. Sempre que se julgar necessário, o
docente poderá solicitar o desenvolvimento de trabalhos complementares (sob o
modo de apresentação oral ou escrita) de modo a melhor aferir o nível de
conhecimentos e
de competências alcançado pelo aluno.
|
Objectivos da unidade curricular e competências a
atingir: |
Esta disciplina
pretende dotar os alunos com uma nova filosofia de abordagem aos problemas
através do uso de uma linguagem orientada aos objectos (OO). A linguagem de
programação Java é muito utilizada no desenvolvimento de serviços (i.e.,
aplicações multimédia interactivas e distribuídas), tanto ao nível de projectos
de investigação como também no mundo empresarial. Esta linguagem adapta-se
tanto a sistemas servidor como a dispositivos móveis (e.g., PDAs) pois é
suportada por uma vasta gama de ferramentas de desenvolvimento e plataformas.
São estas algumas da razões pelas quais o Java constitui uma das linguagens preferenciais
para o desenvolvimento da aplicações para a WWW e serviços móveis.
Esta unidade
curricular tem como principal objectivo ensinar os alunos a programar através
de uma linguagem de programação orientada aos objectos. Dadas as
características da linguagem Java e a sua ampla divulgação e utilização,
privilegiamos esta linguagem no ensino e aplicação dos conceitos e metodologias
orientadas ao objectos. Assim, pretende-se que os alunos compreendam a sintaxe
e a semântica do Java e consigam desenvolver programas nesta linguagem.
Pretende-se ainda fomentar e explorar as capacidades de abstracção e de
raciocínio orientado aos objectos na elaboração de programas, que são
fundamentais nos perfis actuais de engenharia informática.
Numa primeira fase
pretende-se que os alunos compreendam os conceitos associados às metodologias e
linguagens orientadas aos objectos. Pretende-se ainda que os alunos apreendam os
conceitos básicos da linguagem (cf. classes, tipos de dados, atributos e
métodos, operadores e expressões, estruturas de controlo, arrays e vectores, interfaces,
etc.) de modo a que possam analisar, compreender e modelizar problemas através
de classes/interfaces Java. Posteriormente, pretende-se que os alunos dominem a
implementação de interfaces gráficas e Applets. Finalmente, pretende-se que os
alunos sejam capazes de compreender e utilizar excepções, de manipular ficheiros (cf. de texto e binários), de desenvolver
aplicações concorrentes (cf. Threads) e de utilizar os mecanismos de
programação em rede disponibilizados pelo Java.
No final do semestre
os alunos deverão ser capazes de compreender fluentemente diferentes tipos de
programas/classes em Java e utilizar todas as potencialidades desta linguagem para
solucionar múltiplos problemas de programação e desenvolver interfaces gráficas.
|
Conteúdos por unidade
lectiva e sua forma de execução pedagógica: |
|
Conteúdos |
Horas Contacto |
Estudo Individual |
ECTS |
Bibliografia |
|
(T+TP+P+L+TC+OT) |
||||
|
1. Introdução à programação OO & UML |
|
|
|
|
|
1.1. Concepção de
software Orientado aos Objectos |
12 |
14 |
1 |
[1] |
|
1.1.1. Classes versus
objectos |
||||
|
1.1.2. Mensagens |
||||
|
1.1.3. Herança |
||||
|
1.1.4.
Polimorfismo |
||||
|
1.2. Ferramentas CASE |
||||
|
1.2.1. Exemplos
(cf. Rational Rose, Argo, Poseidon) |
||||
|
1.2.2. Metodologias
baseadas em UML |
||||
|
1.2.3. Use-cases
e diagramas de classes |
||||
|
1.2.4. Geração de
código a partir de diagramas de classes |
||||
|
2. A tecnologia Java |
|
|
|
|
|
2.1. Ferramentas
e tecnologias (JDK) |
6 |
8 |
0,5 |
[2],
[3], [5] |
|
2.2. Ambientes integrados desenvolvimento (cf. JBuilder, Eclipse) |
||||
|
2.3. Documentação |
||||
|
2.4. Interpretador
(JVM) |
||||
|
2.5. Estrutura
das aplicações Java |
||||
|
3. Introdução à linguagem de programação
Java |
|
|
|
|
|
3.1. Classes |
18 |
32 |
2 |
[2],
[3], [4] |
|
3.1.1. Tipos de
dados |
||||
|
3.1.2. Atributos
- declaração e inicialização de variáveis membro |
||||
|
3.1.3. Métodos –
polimorfismo (overloading) |
||||
|
3.3. Operadores |
||||
|
3.4. Entrada e
saída de dados básica |
||||
|
3.5. Expressões
de controlo de fluxo |
||||
|
3.6. Arrays e
vectores |
||||
|
3.7. Contratos e
serviços - Interfaces |
||||
|
3.8. Herança de
classes (extend) |
||||
|
3.9. Herança de
interfaces (implement) |
||||
|
4. Aplicações gráficas para a Web |
|
|
|
|
|
4.1. Interfaces
gráficas |
16 |
24 |
1,5 |
[2],
[3], [4] |
|
4.2. Comparação
entre AWT e Swing |
||||
|
4.3. Hierarquia
de componentes gráficos da package Swing |
||||
|
4.3.1.
Componentes contentores |
||||
|
4.3.2. Componentes
gráficos |
||||
|
4.3.3. Gestores
de estrutura (Layout) |
||||
|
4.4. Programação
por eventos |
||||
|
4.5. Applets |
||||
|
5. Conceitos avançados sobre Java |
|
|
|
|
|
5.1. Packages |
12 |
14 |
1 |
[2],
[3], [4] |
|
5.2. Manipulação
de erros e excepções |
||||
|
5.3. Manipulação
de ficheiros |
||||
|
5.4. Threads |
||||
|
5.5. Networking |
||||
|
TOTAL |
64 |
92 |
6 156 |
|
Nota: Nº de ECTS = horas/26
Conteúdos-Horas-Contacto-Estudo Individual–ECTS-Bibliografia
1. Introdução à programação orientada aos
objectos–12–14–1-[1]
2. A tecnologia Java–6-8-0,5-[2], [3], [5]
3. Introdução à linguagem de programação Java-18-32-2-[2],
[3], [4]
4. Aplicações gráficas para a Web-16-24-1,5-[2],
[3], [4]
5. Conceitos avançados sobre Java-12-14-1-[2],
[3], [4]
|
Bibliografia: |
[1] H.E. Eriksson and
M. Penker, “UML Toolkit”, John Wiley & Sons Inc., October 1997.
[2] Eckel, Bruce, “Thinking in Java”, President, MindView
Inc., 1997, URL: www.eckelobjects.com (2001).
[3] Hubbard, J. R., “Programação em Java”, Schaum’s easy
Outlnes, McGraw Hill, 2002.
[4] Sun, The Java Tutorial, A practical guide for
programmers, URL: http://java.sun.com/docs/books/tutorial/index.html (2003).
[5] Sun Developers
Services, URL: http://developer.java.sun.com/developer/ (2003).
[1] JBuider – Borland,
http://www.borland.com/downloads/download_jbuilder.html
[2] Eclipse, http://www.eclipse.org/downloads;
Visual Editor, http://www.eclipse.org/vep/WebContent/main.php; ou V4ALL Eclipse Swing & SWT GUI Designer, V4ALL Eclipse Swing
& SWT GUI Designer, http://sourceforge.net/projects/v4all/
[3] Netbean IDE, http://www.netbeans.org/downloads
Requisitos a serem cumpridos
para registo total dos ECTS:
A aprovação (nota final igual ou superior a dez valores) é
condição necessária, mas não suficiente, para creditar esta unidade curricular.
Para obter a creditação desta unidade curricular o aluno terá de garantir a
obtenção de todos os ECTS previstos para a unidade curricular. A atribuição dos
ECTS ao aluno não é dependente exclusivamente da assiduidade em sala de aula (obrigatoriamente assegurada a, pelo menos,
a 70% das aulas práticas laboratoriais e 50% das aulas teórico-práticas
leccionadas); ela é também decidida em função da assiduidade aos actos
pedagógicos programados pelo professor e da participação em seminários, eventos
culturais e científicos a definir pelo docente ou a coordenação da área
científica de Informática.
Os ECTS
previstos para o trabalho e estudo pessoal do aluno só lhe serão integralmente
atribuídos em função do desempenho demonstrado, nomeadamente no que respeita à
aquisição dos conhecimentos e competências visados por esta unidade curricular:
conhecimento efectivo da bibliografia indicada e demonstração do conhecimento
da linguagem Java e da capacidade para compreender e desenvolver programas
nesta linguagem.
O grau de desenvolvimento de conhecimentos bem como
de aquisição de competências nas áreas temáticas compreendidas no programa da
disciplina será avaliado de modo contínuo ao longo do semestre, quer em termos
do domínio dos conceitos teóricos que sustentam a análise e compreensão de
programas em Java, quer em termos do domínio das metodologias e técnicas de desenvolvimento
de aplicações e projectos orientados aos objectos em Java, quer ainda em termos
de comunicação oral e escrita dos temas e conceitos abordados.
Resumo: Introdução à programação orientada aos objectos: concepção de software orientado
aos objectos (cf. classe e objectos, mensagens; herança e polimorfismo);
Ferramentas CASE (cf. metodologias baseadas em UML, diagramas de classes e
geração de código). Tecnologia Java: ferramentas e tecnologias (JDK); ambientes
integrados de desenvolvimento, documentação; interpretador (JVM) e estrutura
das aplicações. Introdução à linguagem de programação Java: classes, tipos de
dados, atributos e métodos; operadores; expressões de controlo de fluxo; entrada
e saída de dados; arrays e vectores; interfaces e herança. Aplicações gráficas
para a Web; AWT versus Swing; hierarquia de componentes gráficos; programação
por eventos e Applets. Conceitos avançados sobre Java: packages; manipulação de
erros e excepções; manipulação de ficheiros; threads e networking.
Abstract: Introduction to object-oriented programming: design object-oriented
software (cf. classes and objects; messages; inheritance and polymorphism);
CASE tools (cf. UML-based methodologies, class diagrams and code generation). The
Java technology: tools and tecnologies (JDK); integrated development
environments; documentation; the Java Virtual Machine interpreter (JVM) and the
structure of applications. Introduction to the Java programming language: classes,
data types; attributes and methods, operators; flow control; data input/output;
arrays and vectors; interfaces and inheritance. Graphic Web applications: AWT
versus Swing; hierarchy of graphic components; event-based programming and
Applets. Advanced Java concepts: packages; error and exception handling; files;
threads and networking.