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

From Wiki**3

(Aula 04: Construção de Objectos)
(Pautas)
 
(297 intermediate revisions by the same user not shown)
Line 1: Line 1:
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.
+
__NOTOC__
 +
{{NAVPO}}
 +
<!-- {{TOCright}} -->
 +
<!-- __NOEDITSECTION__ -->
 +
{{Suggestion|https://bit.ly/po-wiki}}
 +
== Tópicos Teóricos e Práticos ==
  
== Aula 01: Apresentação da Disciplina ==
+
* [[Tópicos sobre Programação com Objectos]] (teoria e prática)
  
Apresentação da disciplina: objectivos gerais; objectivos operacionais; programa; avaliação.
+
== Projecto ==
  
Informação adicional pode ser obtida na [https://fenix.ist.utl.pt/publico/viewSiteExecutionCourse.do?method=firstPage&objectCode=43084 página oficial] (Fénix).
+
* [[Programação com Objectos/Projecto de Programação com Objectos|Projecto de Programação com Objectos]] -- informação sobre todos os aspectos do projecto
  
== Aula 02: Introdução ==
+
== Aulas Práticas ==
  
===Introdução aos objectos===
+
Plano das aulas: https://bit.ly/po23-plano
* [[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 ==
+
* 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
  
Operadores, Expressões e Controlo de Fluxo. 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. [[PO 2005/06: Exemplos da Aula 03|Exemplos de aplicações simples]]: atribuição; comparador; conversão para <code>Strings</code>.
+
== 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.
 +
* {{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]]
  
== Aula 04: Construção de Objectos ==
+
<!--== Testes de Avaliação (por data)  ==
  
===Construção e iniciação de objectos===
+
[[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]]
* 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>:
+
[[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]]
* Uso como auto-referência;
+
-->
* Sintaxe especial para chamada a múltiplos construtores.
+
[[category:Ensino]]
 
+
[[category:PO]]
===Overloading===
+
[[en:Object-Oriented Programming]]
 
 
''[[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++).
 
 
 
== Aulas 05 e 06: Organização de Código e ''Packages'' ==
 
 
 
Revisão do conceito de tipo de dados abstracto. Organização de código: interface/implementação; separação. ''Packages''. Bibliotecas. Localização de classes: <code>CLASSPATH</code>. Controlo de acesso: <code>public</code>, <code>protected</code>, <code>private</code>, ''"package"''. [[PO 2005/06: Exemplos da Aula 05|Exemplos de código]]. [[Comparação de Linguagens de Programação|Comparação com outras linguagens]].
 
 
 
Organização de código em ''packages''. [[PO 2005/06: Exemplos da Aula 06|Exemplo completo]]. 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]]).
 
 
 
== Aulas 07 e 08: Herança e Composição ==
 
 
 
[[Herança e composição]]: diferenças. Quando usar cada uma. Discussão de aspectos relacionados com a modelação utilizando estes conceitos. Exemplos simples: [[PO 2005/06: Exemplos da Aula 07|classe Gato como subclasse de Mamífero]]; composição de um Gato a partir de "peças básicas".
 
 
 
Mecanismos para controlo de utilização de atributos e métodos. A palavra chave [[final (Java)|final]] (Java). Uso de private, protected e public (Java). Discussão de aspectos relativos ao uso destas palavras chave. [[PO 2005/06: Exemplos da Aula 08|Apresentação e discussão de exemplo completo]]: classes Evento, RefeiçãoComSopa, Almoço, Jantar, Sopa e Bolo. Discussão sobre o funcionamento das [[As referências this e super (Java)|referências this e super]]. Exemplo prático no contexto da aplicação Evento.
 

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.