Difference between revisions of "Programação com Objectos"

From Wiki**3

(Pautas)
 
(228 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{TOCright}}
+
__NOTOC__
 +
{{NAVPO}}
 +
<!-- {{TOCright}} -->
 
<!-- __NOEDITSECTION__ -->
 
<!-- __NOEDITSECTION__ -->
 +
{{Suggestion|https://bit.ly/po-wiki}}
 +
== Tópicos Teóricos e Práticos ==
  
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.
+
* [[Tópicos sobre Programação com Objectos]] (teoria e prática)
  
* [[PO 2005/2006: Apresentação da disciplina|Apresentação da disciplina]]
+
== Projecto ==
* [[PO 2005/2006: Introdução|Introdução]]
 
* [[PO 2005/2006: Operadores, Expressões e Controlo de Fluxo|Operadores, Expressões e Controlo de Fluxo]]
 
* [[PO 2005/2006: Construção de Objectos|Construção de Objectos]]
 
* [[PO 2005/2006: Organização de Código|Organização de Código]]
 
  
== Herança e Composição ==
+
* [[Programação com Objectos/Projecto de Programação com Objectos|Projecto de Programação com Objectos]] -- informação sobre todos os aspectos do projecto
Material correspondente às Aulas 07 e 08.
 
  
===Herança e composição===
+
== Aulas Práticas ==
  
* Diferenças
+
Plano das aulas: https://bit.ly/po23-plano
* Quando usar cada uma das técnicas
 
* Discussão de aspectos relacionados com estes conceitos
 
  
===Exemplos===
+
* Semana 1.1: [[Programação com Objectos/Aula Prática 01|Aula Prática 01]] - Tipos de dados abstractos em C e em C++
 +
* Semana 1.2: [[Programação com Objectos/Aula Prática 02|Aula Prática 02]] - Processos de análise e modelação; criação de classes simples
 +
* Semana 2.1: [[Programação com Objectos/Aula Prática 03|Aula Prática 03]] - Criação de objectos, herança, polimorfismo, overloading e overriding (métodos)
 +
* Semana 2.2: [[Programação com Objectos/Aula Prática 04|Aula Prática 04]] - Herança, polimorfismo, aspectos de programação OO
 +
* Semana 3.1: [[Programação com Objectos/Aula Prática 05|Aula Prática 05]] - Polimorfismo: interfaces e classes abstractas
 +
* Semana 3.2: [[Programação com Objectos/Aula Prática 06|Aula Prática 06]] - Java: classes internas; comparadores, iteradores
 +
* Semana 4.1: [[Programação com Objectos/Aula Prática 07|Aula Prática 07]] - Java: excepções; colecções
 +
* Semana 4.2: [[Programação com Objectos/Aula Prática 08|Aula Prática 08]] - Java: entradas e saídas; serialização de objectos
 +
* Semana 5.1: [[Programação com Objectos/Aula Prática 09|Aula Prática 09]] - Composite (padrão de desenho)
 +
* Semana 5.2: [[Programação com Objectos/Aula Prática 10|Aula Prática 10]] - Strategy (padrão de desenho) & State (padrão de desenho)
 +
* Semana 6.1: [[Programação com Objectos/Aula Prática 11|Aula Prática 11]] - Visitor (padrão de desenho)
 +
* Semana 6.2: [[Programação com Objectos/Aula Prática 12|Aula Prática 12]] - Decorator (padrão de desenho) & Adapter (padrão de desenho)
 +
* Semana 7.1: [[Programação com Objectos/Aula Prática 13|Aula Prática 13]] - Diagramas de sequência UML
  
* [[PO 2005/06: Exemplos da Aula 07|Classe Gato como subclasse de Mamífero]]
+
== Pautas ==
* [[PO 2005/06: Exemplos da Aula 07|Composição de um Gato a partir de "peças básicas"]]
+
As páginas das pautas contêm, além dos resultados de avaliação, também os critérios de avaliação e aprovação.
 +
* {{PautaAberta}} [[Programação com Objectos/Pautas 2023-2024|Pautas 2023-2024]]
 +
* {{PautaFechada}} Pautas de anos anteriores: [[Programação com Objectos/Pautas 2022-2023|2022-2023]] [[Programação com Objectos/Pautas 2021-2022|2021-2022]] [[Programação com Objectos/Pautas 2020-2021|2020-2021]] [[Programação com Objectos/Pautas 2019-2020|2019-2020]] [[Programação com Objectos/Pautas 2018-2019|2018-2019]] [[Programação com Objectos/Pautas 2017-2018|2017-2018]] [[Programação com Objectos/Pautas 2016-2017|2016-2017]] [[Programação com Objectos/Pautas 2015-2016|2015-2016]] [[Programação com Objectos/Pautas 2014-2015|2014-2015]]
  
===Mecanismos do Java===
+
<!--== Testes de Avaliação (por data)  ==
  
* Chamadas a construtores
+
[[Programação com Objectos/Teste de 2013/11/15|20131115]] [[Programação com Objectos/Teste 1 de 2013/02/04|20130204(1)]] [[Programação com Objectos/Teste 2 de 2013/02/04|20130204(2)]] [[Programação com Objectos/Teste de 2013/01/17|20130117]] [[Programação com Objectos/Teste de 2012/11/19|20121119]]  
* 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===
+
[[Programação com Objectos/Teste de 2012/01/30|20120130]] [[Programação com Objectos/Teste de 2012/01/07|20120107]] [[Programação com Objectos/Teste de 2011/01/10|20110110]] [[Programação com Objectos/Teste de 2010/01/21|20100121]] [[Programação com Objectos/Teste de 2010/01/04|20100104]] [[Programação com Objectos/Teste de 2009/01/24|20090124]] [[Programação com Objectos/Teste de Dezembro de 2008|200812]] [[Programação com Objectos/Teste de Dezembro de 2005|200512]]
 
+
-->
* [[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>.
+
[[category:Ensino]]
* 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>.
+
[[category:PO]]
 
+
[[en:Object-Oriented Programming]]
== Polimorfismo ==
 
Material correspondente à Aula 09.
 
 
 
===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]].
 
 
 
== Polimorfismo e Classes Abstractas ==
 
Material correspondente à Aula 10.
 
 
 
===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
 
 
 
== Interfaces ==
 
Material correspondente à Aula 11.
 
 
 
===Interfaces===
 
 
 
* Revisão dos conceitos subjacentes às classes abstractas e suas propriedades
 
* Princípios e propriedades
 
 
 
===Interfaces em Java===
 
 
 
* [[Classes Abstractas e Interfaces (Java)|Comparação entre classes abstractas e interfaces]]
 
 
 
===Exemplos===
 
 
 
* [[PO 2005/06: Exemplos da Aula 11|Exemplos simples]] em Java e C++ (classes virtuais puras)
 
* [[PO 2005/06: Exemplos da Aula 11#Chihuahua|Exemplo completo em Java]]: <code>Cão</code>, <code>Vigilante</code>, <code>CãoDeGuarda</code>, <code>CãoPastor</code>, <code>Chihuahua</code>, <code>Robot</code>, <code>XP</code>, <code>XP2003</code>
 
 
 
==Classes Internas==
 
Material correspondente às Aulas 12 e 13.
 
 
 
Classes internas em Java.
 
 
 
===Princípios Básicos===
 
* Classes internas e os vários aspectos de definição: classes internas simples; implementação de interfaces
 
* Ligação implícita entre objectos de classes internas e a instância da classe externa
 
* Partilha de acesso entre classe externa e interna
 
* Herança e classes internas e externas
 
 
 
===Organização de código===
 
* Sintaxe
 
* Organização de interfaces e classes e acesso ao código
 
* Classes internas locais (métodos e blocos)
 
* Classes anónimas
 
 
 
===Exemplos===
 
 
 
* [[PO 2005/06: Exemplos da Aula 12|Exemplos de classes internas e externas]]: <code>Gato</code> e <code>Estômago</code>
 
* [[PO 2005/06: Exemplos da Aula 13|Exemplos de herança com classes internas e externas]]: <code>Carro</code> e <code>Motor</code>
 
 
 
== Enumerações ==
 
 
 
Material correspondente à Aula 14.
 
 
 
===Tipos Enumerados===
 
 
 
* [[Tipos enumerados em Java]]
 
** Enumerados como classes de domínio finito
 
** Propriedades dos enumerados
 
** Constraste com a definição de enumerações noutras linguagens (C, C++)
 
 
 
===Exemplos===
 
 
 
* [[PO 2005/06: Exemplos da Aula 14|Exemplos]]: estações do ano, planetas
 
 
 
== Excepções ==
 
 
 
Material correspondente à Aula 15.
 
 
 
===Introdução às Excepções===
 
 
 
* Introdução às excepções
 
* Uso do mecanismo de excepções no controlo da execução de programas
 
 
 
===Excepções em Java===
 
 
 
* Mecanismo de excepções em Java
 
* Excepções e erros
 
* Classes de suporte às excepções: <code>Throwable</code>, <code>Exception</code>, <code>Error</code>
 
* Tipos de excepções: ''checked exceptions'' (verificadas em tempo de compilação) e excepções durante a execução (<code>RuntimeException</code>).
 
 
 
===Exemplos===
 
 
 
* [[PO 2005/06: Exemplos da Aula 15|Exemplos simples com excepções]]
 
* [[PO 2005/06: Exemplos da Aula 16|Exemplos de múltiplas excepções]]
 
 
 
[[category:OOP]]
 
[[category:Aulas]]
 

Latest revision as of 11:15, 28 August 2023

Programação com Objectos
Introduction
Creation and Destruction
Inheritance & Composition
Abstraction & Polymorphism
Code Organization
Java Topics
Inner Classes
Enumerations
Data Structures
Exceptions
Input/Output
RTTI
Other Topics
JUnit Tests
UML Topics
Design Patterns
"Simple" Factory
Composite & Visitor
Command
Strategy & State
Template Method
Observer
Abstract Factory
Decorator & Adapter
Façade (aka Facade)

Tópicos Teóricos e Práticos

Projecto

Aulas Práticas

Plano das aulas: https://bit.ly/po23-plano

Pautas

As páginas das pautas contêm, além dos resultados de avaliação, também os critérios de avaliação e aprovação.