Programação com Objectos: Difference between revisions

From Wiki**3

(Redirected page to ist:Programação com Objectos)
 
(251 intermediate revisions by the same user not shown)
Line 1: Line 1:
{| cellspacing="0" cellpadding="0" style="clear:right; margin-bottom: .5em; float: right; padding: .5em 0 .8em 1.4em; background: none;"
#REDIRECT [[ist:Programação com Objectos]]
|
__TOC__
|}
 
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.
 
== Aula 01: Apresentação ==
 
===Apresentação da Disciplina===
* Objectivos gerais
* Objectivos operacionais
* Programa
* Avaliação
 
===Informação Adicional===
 
[https://fenix.ist.utl.pt/publico/viewSiteExecutionCourse.do?method=firstPage&objectCode=43084 Página oficial] (Fénix)
 
== Aula 02: Introdução ==
 
===Introdução aos objectos===
* [[O que é um objecto?|O que é um objecto]]
* Aspectos da captura de características: como capturar a natureza das coisas, tendo em consideração os aspectos de interesse para o fim em causa.
 
===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|Exemplo simples]]: ''"Hello world"''.
 
== Aula 03: Operadores, Expressões e Controlo de Fluxo ==
 
===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
 
== Aula 04: Construção de Objectos ==
 
===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.
 
== Aulas 05 e 06: Organização de Código e ''Packages'' ==
 
===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]]
 
== Aulas 07 e 08: Herança e Composição ==
 
===Herança e composição===
 
* Diferenças
* Quando usar cada uma das técnicas
* Discussão de aspectos relacionados com estes conceitos
 
===Exemplos===
 
* [[PO 2005/06: Exemplos da Aula 07|Classe Gato como subclasse de Mamífero]]
* [[PO 2005/06: Exemplos da Aula 07|Composição de um Gato a partir de "peças básicas"]]
 
===Mecanismos do Java===
 
* Chamadas a construtores
* Ordem de iniciação
* Controlo de utilização de atributos e métodos
* A palavra chave [[Palavras chave da linguagem Java#final|final]]
* Uso de [[Palavras chave da linguagem Java#private|private]], [[Palavras chave da linguagem Java#protected|protected]] e [[Palavras chave da linguagem Java#public|public]]: discussão de aspectos relativos ao uso destas palavras chave
* Funcionamento das [[As referências this e super (Java)|referências this e super]]
 
===Exemplos===
 
* [[PO 2005/06: Exemplos da Aula 08|Apresentação e discussão de exemplo completo]]: classes <code>Evento</code>, <code>RefeiçãoComSopa</code>, <code>Almoço</code>, <code>Jantar</code>, <code>Sopa</code> e <code>Bolo</code>.
* Referências [[Palavras chave da linguagem Java#this|this]] e [[Palavras chave da linguagem Java#super|super]]: exemplo prático no contexto da aplicação <code>Evento</code>.
 
== Aula 09: Polimorfismo ==
 
===Tipos===
 
* Polimorfismo e tipos primitivos
* Polimorfismo e tipos compostos (classes).
* Herança e polimorfismo: ''upcasting'' e ''downcasting''.
 
===Organização de Código===
 
* Definição de métodos: ''overloading'' vs. ''overriding''
* Selecção do método a invocar: ''early binding'' e ''late binding''
 
===Exemplos===
 
* [[PO 2005/06: Exemplos da Aula 09#Hierarquia de Classes|Exemplo simples]]: <code>Animal</code>, <code>Mamífero</code>, <code>Gato</code>
* [[PO 2005/06: Exemplos da Aula 09#Vector|Exemplo com vector]].
 
== Aula 10: Polimorfismo e Classes Abstractas ==
 
===Classes Abstractas===
 
* Noção de classe abstracta
* Separação de interface e implementação
* Propriedades
* Polimorfismo e classes abstractas
* Discussão de aspectos problemáticos
 
===Exemplos===
 
* Editor gráfico sem classes abstractas
* Editor gráfico com classes abstractas
 
== Aula 11: Interfaces ==
 
===Interfaces===
 
* Revisão dos conceitos subjacentes às classes abstractas e suas propriedades
* Princípios e propriedades
 
===Interfaces em Java===
 
* Comparação entre classes abstractas e interfaces
 
===Exemplos===
 
* Exemplos simples em Java e C++ (classes virtuais puras)
* Exemplo completo em Java: Cão, Vigilante, CãoDeGuarda, CãoPastor
 
[[category:OOP]]
[[category:Aulas]]

Latest revision as of 17:30, 7 November 2018