|
|
Line 4: |
Line 4: |
| A definição oficial do conteúdo de cada aula pode ser encontrada na [https://fenix.ist.utl.pt/publico/viewSite.do?method=summaries&objectCode=8711&executionPeriodOID=83 página dos sumários] mantida pelo Fénix. | | A definição oficial do conteúdo de cada aula pode ser encontrada na [https://fenix.ist.utl.pt/publico/viewSite.do?method=summaries&objectCode=8711&executionPeriodOID=83 página dos sumários] mantida pelo Fénix. |
| | | |
− | == Apresentação ==
| + | * [[PO 2005/2006: Apresentação da disciplina|Apresentação da disciplina]] |
− | Material correspondente à Aula 01.
| + | * [[PO 2005/2006: Introdução|Introdução]] |
− | | + | * [[PO 2005/2006: Operadores, Expressões e Controlo de Fluxo|Operadores, Expressões e Controlo de Fluxo]] |
− | ===Objectivos Gerais===
| + | * [[PO 2005/2006: Construção de Objectos|Construção de Objectos]] |
− | A disciplina de Programação com Objectos tem como objectivo que os alunos fiquem a conhecer o paradigma da programação baseada em objectos, assim como as metodologias e tecnologias a ela associadas. Pretende-se que os alunos conheçam as suas vantagens, inconvenientes e limitações.
| + | * [[PO 2005/2006: Organização de Código|Organização de Código]] |
− | | |
− | Assim, parecem ser quatro as principais competências e atitudes que identificam os processos cognitivos internos do aluno, uma vez finalizado o processo educativo:
| |
− | #Conhecer e utilizar o paradigma da programação baseada em objectos
| |
− | #Conhecer e utilizar a linguagem Java
| |
− | #Conhecer e utilizar padrões de desenho
| |
− | #Conhecer e utilizar as técnicas de escrita de testes de avaliação para o código produzido
| |
− | | |
− | ===Objectivos Operacionais===
| |
− | As condutas observáveis e mensuráveis, uma vez concluÃda com sucesso esta disciplina, são:
| |
− | #Justificar os princÃpios da programação baseada em objectos e os conceitos de encapsulamento, abstracção, herança e polimorfismo
| |
− | #Explicar como o mecanismo de classes permite codificar, encapsular e esconder informação
| |
− | #Comparar as noções de ''overloading'' e ''overriding'' de métodos
| |
− | #Modelar problemas usando uma linguagem baseada em objectos
| |
− | #Usar a linguagem Java (programação, teste e depuração) para resolver problemas modelados com objectos
| |
− | #Usar UML para representar relações estáticas entre classes (herança, agregação e referência) e de colaboração (diagramas de sequência)
| |
− | #Usar uma convenção para os nomes das entidades de um programa durante a codificação
| |
− | #Seleccionar e utilizar padrões de desenho no desenvolvimento de aplicações;
| |
− | #Programar testes para avaliar código
| |
− | | |
− | ===Programa===
| |
− | ====Objectos e a Linguagem Java====
| |
− | Os seguintes tópicos correspondem ao paradigma de programação baseada em objectos e à linguagem Java.
| |
− | *Introdução aos objectos: definição, interface, polimorfismo, longevidade, classes, métodos, programas, regras de codificação
| |
− | *Operadores e controlo de execução: precedências, atribuição, moldagem, literais, instruções de controlo de fluxo | |
− | *Iniciação e limpeza: construtores, métodos sobrecarregados, <code>[[Palavras chave da linguagem Java#this|this]]</code>, colector de lixo, iniciação
| |
− | *Esconder a realização: bibliotecas, acesso aos membros, acesso à classe
| |
− | *Reutilização: herança, composição, desenvolvimento incremental e palavra reservada <code>[[Palavras chave da linguagem Java#final|final]]</code>, carregamento de classes
| |
− | *Polimorfismo: ''binding'' de métodos; ''overloading'' vs. ''overriding''; classes abstractas e interfaces | |
− | *Classes internas
| |
− | *Excepções: apanhar uma excepção; criar novas excepções; <code>[[Palavras chave da linguagem Java#finally|finally]]</code>
| |
− | *Guardar os objectos: vectores; contentores; iteradores; colecções; "list"; "set"; "map"
| |
− | *Entradas e saÃdas: a classe <code>File</code>; ''streams''; compressão; serialização
| |
− | *Classe <code>Class</code>
| |
− | | |
− | ====Linguagem UML====
| |
− | * Diagrama de classes
| |
− | * Diagrama de sequência
| |
− | | |
− | ====Padrões de Desenho====
| |
− | *Introdução: como seleccionar um padrão; como usar um padrão
| |
− | *Padrões ''Composite'', ''Command'', ''State'', ''Template Method'', ''Decorator'', ''Strategy'', ''Observer'', ''Abstract factory'', ''Bridge'', ''Visitor''
| |
− | *Catálogo de padrões de desenho
| |
− | | |
− | ===Avaliação===
| |
− | O método de avaliação é como se indica na [https://fenix.ist.utl.pt/publico/viewSite.do?method=evaluationMethod&objectCode=8711&executionPeriodOID=83 página oficial]<br/>
| |
− | A informação disponibilizada aqui é apenas um resumo com fins meramente informativos.
| |
− | | |
− | '''1ª Componente - 50%'''<br/>
| |
− | Projecto (sem nota mÃnima) com as seguintes datas:
| |
− | *Entrega intermédia: 14 de Novembro de 2005
| |
− | *Entrega final: 30 de Novembro de 2005
| |
− | *Discussões finais decorrem de 13 a 15 de Dezembro de 2005. A discussão final inclui um teste prático.
| |
− | | |
− | '''2ª Componente - 40%'''<br/>
| |
− | Teste (nota mÃnima de 7.5 valores) a realizar em 20 de Dezembro de 2005.<br/>
| |
− | Repescagem a 4 de Fevereiro de 2006.
| |
− |
| |
− | '''3ª Componente - 10%'''<br/>
| |
− | Seis Séries de ExercÃcios (sem nota mÃnima) a realizar nas aulas práticas e em casa.
| |
− | | |
− | ===Informação Adicional===
| |
− | | |
− | * [https://fenix.ist.utl.pt/publico/viewSiteExecutionCourse.do?method=firstPage&objectCode=43084 Página oficial] (Fénix)
| |
− | | |
− | == Introdução ==
| |
− | Material correspondente à Aula 02.
| |
− | | |
− | ===Introdução aos objectos===
| |
− | * [[O que é um objecto?|O que é um objecto]]
| |
− | * [[Captura de caracterÃsticas dos objectos]]
| |
− | | |
− | ===Introdução à programação em Java===
| |
− | * [[Tipos primitivos em Java|Tipos primitivos]]: dados atómicos simples;
| |
− | * [[Classes, objectos e referências (Java)|Objectos e referências em Java]]: referências e estruturas compostas;
| |
− | * [[Comparação de Linguagens de Programação|Contraste com C/C++]]: diferenças e semelhanças;
| |
− | * Organização da memória: zonas e memória e respectiva utilização pelos conceitos da linguagem;
| |
− | * [[Classes, objectos e referências (Java)|Definição de classes simples]]: conceitos de variável e método;
| |
− | * O uso da palavra reservada <code>static</code>: definição de dados e funções partilhados;
| |
− | * [[Convenções de escrita de programas em Java]]: melhoramento da legibilidade de um programa;
| |
− | * Escrita e compilação de programas.
| |
− | ===Exemplos===
| |
− | | |
− | * [[PO 2005/06: Exemplos da Aula 02|Exemplos de Classes em Java]]: ''"Hello world"''. | |
− | | |
− | == Operadores, Expressões e Controlo de Fluxo ==
| |
− | Material correspondente à Aula 03.
| |
− | | |
− | ===Operadores e Expressões===
| |
− | | |
− | * Apresentação e discussão de operadores, expressões e operações de conversão de tipos primitivos e objectos em Java
| |
− | * Aspectos relacionados noutras linguagens (C/C++/Smalltalk)
| |
− | * Método <code>equals</code>
| |
− | * ''[[Conversão de Tipos|Casts]]''
| |
− | * Restrições à s operações sobre booleanos
| |
− | | |
− | === Exemplos ===
| |
− | | |
− | * [[PO 2005/06: Exemplos da Aula 03|Exemplos de aplicações simples]]: atribuição; comparador; conversão para <code>Strings</code>. | |
− | | |
− | ===Controlo de Fluxo===
| |
− | | |
− | * [[Palavras chave da linguagem Java#if|if]]-[[Palavras chave da linguagem Java#else|else]]
| |
− | * [[Palavras chave da linguagem Java#while|while]], [[Palavras chave da linguagem Java#for|for]], [[Palavras chave da linguagem Java#do|do]]-[[Palavras chave da linguagem Java#while|while]]
| |
− | * [[Palavras chave da linguagem Java#break|break]], [[Palavras chave da linguagem Java#continue|continue]], [[Palavras chave da linguagem Java#return|return]]
| |
− | * [[Palavras chave da linguagem Java#switch|switch]]-[[Palavras chave da linguagem Java#case|case]]-[[Palavras chave da linguagem Java#default|default]]
| |
− | * [[Comparação de Linguagens de Programação|Comparação com outras linguagens semelhantes]]
| |
− | * Exemplos simples
| |
− | | |
− | == Construção de Objectos ==
| |
− | Material correspondente à Aula 04.
| |
− | | |
− | ===Construção e iniciação de objectos===
| |
− | * Construção e iniciação de objectos em Java;
| |
− | * Ordem de iniciação de atributos de classes (<code>static</code>) e de objectos.
| |
− | | |
− | ===A Referência <code>this</code>===
| |
− | * Uso como auto-referência
| |
− | * Sintaxe especial para chamada a múltiplos construtores
| |
− | | |
− | ===Overloading===
| |
− | | |
− | * ''[[Overloading]]'' de métodos.
| |
− | | |
− | ===Exemplos===
| |
− | | |
− | [[PO 2005/06: Exemplos da Aula 04|Exemplos de aplicação]]. | |
− | Discussão de aspectos problemáticos e [[Comparação de Linguagens de Programação|comparação com outras linguagens]] (PHP e C/C++).
| |
− | | |
− | ===Destruição de objectos===
| |
− | | |
− | Discussão de aspectos relacionados com a destruição de objectos: o caso do Java ([[Comparação de Linguagens de Programação|comparação com outras linguagens]]). Este tópico foi discutido na Aula 06.
| |
− | | |
− | == Organização de Código e ''Packages'' ==
| |
− | Material correspondente à s Aulas 05 e 06.
| |
− | | |
− | ===Organização de código===
| |
− | | |
− | * Revisão do conceito de tipo de dados abstracto;
| |
− | * Organização de código: interface/implementação; separação;
| |
− | | |
− | ===O caso Java===
| |
− | * ''Packages'' e bibliotecas;
| |
− | * Localização de classes: <code>CLASSPATH</code>.
| |
− | * Controlo de acesso: <code>public</code>, <code>protected</code>, <code>private</code>, ''"package"''.
| |
− | * [[Comparação de Linguagens de Programação|Comparação com outras linguagens]].
| |
− | | |
− | ===Exemplos===
| |
− | | |
− | * [[PO 2005/06: Exemplos da Aula 05|Exemplos de código]]
| |
− | * [[PO 2005/06: Exemplos da Aula 06|Exemplo completo]]
| |
| | | |
| == Herança e Composição == | | == Herança e Composição == |
Material correspondente às Aulas 07 e 08.
Material correspondente à Aula 09.
Material correspondente à Aula 10.
Material correspondente à Aula 11.
Material correspondente às Aulas 12 e 13.
Classes internas em Java.
Material correspondente à Aula 14.
Material correspondente à Aula 15.