SlideShare une entreprise Scribd logo
1  sur  33
Aula 3 Interfaces Listas e listas ligadas Iteradores
Na aula anterior Polimorfismo de subtipos Classes e operações polimórficas Herança Ligação estática e ligação dinâmica Classes abstractas e classes concretas Operações abstractas Análise, desenho e implementação Dicionário do domínio Conceitos Conceitos concretos e conceitos abstractos 2009/2010 Programação Orientada por Objectos 2
Interfaces Definem um comportamento que as classes podem implementar Contêm apenas constantes e declarações de operações (e tipos embutidos) Classes podem implementar interfaces Uma classe pode implementar várias interfaces, embora possa derivar apenas de uma outra classe Uma interface pode estender (derivar de) outra 2009/2010 Programação Orientada por Objectos 3
Interfaces: definição public interface Comparable<T> { intcompareTo(T object); } public interface Queue<E> {     E element(); voidadd(E e); void remove(); } 2009/2010 Programação Orientada por Objectos 4 Interface genérica. T é um parâmetro. O correspondente argumento tem de ser um tipo. Nota: A interface Queue é um pouco diferente na biblioteca do Java! Operações públicas por omissão. Operações apenas declaradas. Não se define qualquer método. Não é necessário usar o qualificador abstract.
Interfaces: implementação public class Rational implements Comparable<Rational> {     private int numerator;     private int denominator;     …     public intcompareTo(final Rational another) { intleftNumerator =  getNumerator() * another.getDenominator(); intrightNumerator =  another.getNumerator() * getDenominator();         if (leftNumerator > rightNumerator)             return 1;         if (leftNumerator < rightNumerator)             return -1;         return 0;     }     … } 2009/2010 Programação Orientada por Objectos 5
public class Rational implements Comparable<Rational> {     private int numerator;     private int denominator;     …     public intcompareTo(final Rational another){         return getNumerator() * another.getDenominator()              - another.getNumerator() * getDenominator();     }     … } Interfaces: implementação 2009/2010 Programação OrientadaporObjectos 6 «interface» Comparable<T->Rational> Implementação Relação de realização Comparable<T -> Rational> Rational Rational
Interfaces: polimorfismo publicclassMyListimplementsQueue<Customer> {     … } publicclassMyListTester {     … publicstaticvoidmain(final String[] arguments) { Queue<Customer> customerQueue =  newMyList();         …      }     …  } 2009/2010 Programação Orientada por Objectos 7 Queue<E -> Customer> MyList
Interfaces: nomes Adjectivo denotando possibilidade de realizar determinadas operações (e.g., Comparable) Nome denotando conceito cujo comportamento será implementado (e.g., Queue) 2009/2010 Programação Orientada por Objectos 8 Caso semelhante ao das classes abstractas, mas não há qualquer herança de implementação (i.e., de atributos não constantes e métodos) e uma classe que implemente a interface pode simultaneamente implementar outras interfaces.
Genericidade Precisa-se de classes semelhantes Com operações semelhantes Com atributos semelhantes Variando apenas em alguns tipos (e.g., o tipo dos elementos a guardar em diferentes listas) É necessário definir essas classes separadamente? 2009/2010 Programação Orientada por Objectos 9
Lista genérica? public class ArrayList {     private Object[] elements;     … } 2009/2010 Programação Orientada por Objectos 10 - elements Object ArrayList * Room
Lista genérica: implementação public class ArrayList<E> {     private E[] elements;     … } 2009/2010 Programação Orientada por Objectos 11 Classe genérica. E é um parâmetro. O correspondente argumento tem de ser um tipo. E Notação UML para classes genéricas (também conhecidas por modelos ou templates). ArrayList - elements : E [*] «bind» <E -> Room> - elements ArrayList<E->Room> Room *
Lista genérica: utilização publicclassFloor { privateArrayList<Room> rooms = newArrayList<Room>(); publicFloor(final intnumberOfRooms) {         for (introomNumber = 1;  roomNumber != numberOfRooms + 1;  roomNumber++) rooms.addFirst(newRoom(roomNumber));     } publicvoid show() { while (rooms.hasNext())             out.println(rooms.next());     } } 2009/2010 Programação OrientadaporObjectos 12 Inserir novo elemento no início ou a meio da lista implica “empurrar” elementos existentes para “fazer espaço”. Para fazer isto o que é preciso?
Lista ligada genérica: implementação public class LinkedList<E> {     Node<E> firstNode = null;     Node<E> currentNode = null;     …     private static class Node<E> {         private Node<E> nextNode;         private E element;         private Node(final Node<E> nextNode,                      final E element) { this.nextNode = nextNode; this.element = element;         }     }     … } 2009/2010 Programação Orientada por Objectos 13 Classe embutida (nested) privada. A classe LinkedList<E> tem acesso aos membros privados de Node<E>.
Lista ligada genérica: notação 2009/2010 Programação Orientada por Objectos 14 E E LinkedList LinkedList - firstNode: Node<E> - currentNode: Node<E> E Node - nextNode: Node - element: E E Notações para o embutimento. Node - nextNode: Node - element: E E E LinkedList LinkedList::Node - firstNode: Node<E> - currentNode: Node<E> - nextNode: Node - element: E
Lista ligada genérica: utilização publicclassFloor { privateLinkedList<Room> rooms = newLinkedList<Room>(); publicFloor(final intnumberOfRooms) {         for (introomNumber = 1;  roomNumber != numberOfRooms + 1;  roomNumber++) rooms.addFirst(newRoom(roomNumber));     } publicvoid show() { while (rooms.hasNext())             out.println(rooms.next());     } } 2009/2010 Programação OrientadaporObjectos 15 Inserir novo elemento no início ou no meio da lista não implica “empurrar” elementos existentes!
Lista ligada genérica: Exemplo 2009/2010 Programação Orientada por Objectos 16 rooms : LinkedList<E->Room> firstNode currentNode nextNode : Node<E -> Room> : Node<E -> Room> nextNode = null element element : Room : Room
Lista ligada genérica: inserir no início public class LinkedList<E> {     Node<E> firstNode = null;     …     private static class Node<E> {         …         private Node(final Node<E> nextNode,                      final E element) { this.nextNode = nextNode; this.element = element;         }     }     public void addFirst(final E newElement) { firstNode = new Node<E>(firstNode, newElement);     }     … } 2009/2010 Programação Orientada por Objectos 17
Lista ligada genérica: inserir no início 2009/2010 Programação Orientada por Objectos 18 rooms : LinkedList<E->Room> firstNode firstNode currentNode nextNode nextNode : Node<E -> Room> : Node<E -> Room> : Node<E -> Room> nextNode = null element element element : Room : Room newElement : Room
Lista ligada genérica: remover do início public class LinkedList<E> {     …     public void removeFirst() {         if (isEmpty())             throw new NoSuchElementException(…);         if (currentNode == firstNode) currentNode = currentNode.nextNode;         Node<E> nextFirstNode = firstNode.nextNode; firstNode.element = null; firstNode.nextNode = null; firstNode = nextFirstNode;    }     … } 2009/2010 Programação Orientada por Objectos 19
Lista ligada genérica: remover do início 2009/2010 Programação Orientada por Objectos 20 rooms : LinkedList<E->Room> firstNode currentNode firstNode nextNode : Node<E -> Room> : Node<E -> Room> element = null nextNode = null element element : Room : Room nextFirstNode : «ref» Node<E -> Room>
Lista ligada genérica: inserir no fim public class LinkedList<E> {     …     public void addLast(final E element) {         if (firstNode == null) firstNode = new Node<E>(null, element);         else lastNode().nextNode = new Node<E>(null, element);     }     private Node<E> lastNode() {         Node<E> node = firstNode;         while (node.nextNode != null)             node = node.nextNode;         return node;     }     … } 2009/2010 Programação Orientada por Objectos 21
Lista ligada genérica: inserir no fim public class LinkedList<E> {     …     public void addLast(final E element) {         if (firstNode == null) firstNode = new Node<E>(null, element);         else {             Node<E> lastNode = firstNode;             while (lastNode.nextNode != null) lastNode = lastNode.nextNode; lastNode.nextNode = new Node<E>(null, element);         }     }     … } 2009/2010 Programação Orientada por Objectos 22
Lista ligada genérica: inserir no fim 2009/2010 Programação Orientada por Objectos 23 rooms : LinkedList<E->Room> firstNode currentNode nextNode nextNode : Node<E -> Room> : Node<E -> Room> : Node<E -> Room> nextNode = null nextNode = null element element element : Room : Room newElement : Room lastNode : «ref» Node<E -> Room>
Lista ligada genérica: passar ao seguinte public class LinkedList<E> {     …     public E next() {         if (!hasNext())             throw new NoSuchElementException(“…");         if (currentNode == null) currentNode = firstNode;         else currentNode = currentNode.nextNode;         return currentNode.element;     }     … } 2009/2010 Programação Orientada por Objectos 24
Lista ligada genérica: passar ao seguinte 2009/2010 Programação Orientada por Objectos 25 rooms : LinkedList<E->Room> firstNode currentNode currentNode nextNode nextNode : Node<E -> Room> : Node<E -> Room> : Node<E -> Room> nextNode = null nextNode = null element element element : Room : Room newElement : Room
Lista ligada genérica: notação 2009/2010 Programação Orientada por Objectos 26 1 E LinkedList Esta solução não permite percorrer a lista mais do que uma vez em paralelo! 0..1 0..1 0..1 currentNode E Node 0..1 firstNode 0..1 - element: E * nextNode 0..1
Lista ligada genérica: iteradores publicclassFloor { privateLinkedList<Room> rooms = newLinkedList<Room>(); publicFloor(final intnumberOfRooms) {         for (introomNumber = 1;  roomNumber != numberOfRooms + 1;  roomNumber++) rooms.add(newRoom(roomNumber));     } publicvoid show() { while (rooms.hasNext())             out.println(rooms.next());     } } 2009/2010 Programação OrientadaporObjectos 27
Lista ligada genérica: iteradores publicclassFloor { privateLinkedList<Room> rooms = newLinkedList<Room>(); publicFloor(final intnumberOfRooms) {         for (introomNumber = 1;  roomNumber != numberOfRooms + 1;  roomNumber++) rooms.add(newRoom(roomNumber));     } publicvoid show() { LinkedList<Room>.Iterator i = rooms.iterator(); while(i.hasNext())             out.println(i.next());     } } 2009/2010 Programação OrientadaporObjectos 28
Lista ligada genérica: notação 2009/2010 Programação Orientada por Objectos 29 E LinkedList 0..1 LinkedList.this 1 E * Node Iterator é uma classe interna (inner). As suas instâncias têm uma ligação implícita à instância da classe envolvente que as criou. A ver com pormenor mais tarde.  0..1 0..1 * Iterator currentNode firstNode 0..1 Esta solução permite percorrer a lista mais do que uma vez em paralelo! - element: E * 0..1 nextNode
Iteradores Permitem iterar ao longo de uma sequência de elementos, actuando sobre essa sequência A uma sequência podem associar-se vários iteradores Classes que forneçam iteradores podem ser usadas em ciclos for-each 2009/2010 Programação Orientada por Objectos 30 Mais tarde voltaremos a este assunto.
A reter… Interfaces Definem comportamentos (adjectivam) Classes implementam-nas Listas Listas ligadas Operações sobre listas ligadas Introdução aos iteradores 2009/2010 Programação Orientada por Objectos Página 31
A ler para a próxima aula… Classes relativas a colecções na API do Java Capítulos 1 a 10 e 16 do livro: Y. Daniel Liang, Introduction to Java Programming, 7.ª edição, Prentice-Hall, 2008.ISBN: 978-0-13-605966-0 2009/2010 Programação Orientada por Objectos Página 32
Aula 3: Sumário Interfaces Listas e listas ligadas Iteradores 2009/2010 Programação Orientada por Objectos Página 33

Contenu connexe

Tendances

Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - D
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - DMembros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - D
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - DPaulo Henrique Lerbach Rodrigues
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...Manuel Menezes de Sequeira
 
Tipos Primitivos - Preparatório Certificação - OCAJP7 - Aula 2 - E
Tipos Primitivos - Preparatório Certificação - OCAJP7 - Aula 2 - ETipos Primitivos - Preparatório Certificação - OCAJP7 - Aula 2 - E
Tipos Primitivos - Preparatório Certificação - OCAJP7 - Aula 2 - EPaulo Henrique Lerbach Rodrigues
 
2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocosRicardo Bolanho
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...Manuel Menezes de Sequeira
 
Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Karoline Tavares
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...Manuel Menezes de Sequeira
 
Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dadosJean Martina
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Leonardo Melo Santos
 

Tendances (20)

Aula 9
Aula 9Aula 9
Aula 9
 
Funções e procedimentos
Funções e procedimentosFunções e procedimentos
Funções e procedimentos
 
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - D
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - DMembros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - D
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - D
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
 
Tipos Primitivos - Preparatório Certificação - OCAJP7 - Aula 2 - E
Tipos Primitivos - Preparatório Certificação - OCAJP7 - Aula 2 - ETipos Primitivos - Preparatório Certificação - OCAJP7 - Aula 2 - E
Tipos Primitivos - Preparatório Certificação - OCAJP7 - Aula 2 - E
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
Java4
Java4Java4
Java4
 
Trabalho
TrabalhoTrabalho
Trabalho
 
2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocos
 
Linguagem C 06 Funcoes
Linguagem C 06 FuncoesLinguagem C 06 Funcoes
Linguagem C 06 Funcoes
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
 
Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
 
Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dados
 
Haskell
HaskellHaskell
Haskell
 
Standard ML / CPN ML
Standard ML / CPN MLStandard ML / CPN ML
Standard ML / CPN ML
 
Lambda Expressions
Lambda ExpressionsLambda Expressions
Lambda Expressions
 
Pilhas e filas
Pilhas e filasPilhas e filas
Pilhas e filas
 
Linguagem C - Strings
Linguagem C - StringsLinguagem C - Strings
Linguagem C - Strings
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#
 

En vedette

12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...Manuel Menezes de Sequeira
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de ProgramaçãoManuel Menezes de Sequeira
 
Introdução à programação orientada para aspectos
Introdução à programação orientada para aspectosIntrodução à programação orientada para aspectos
Introdução à programação orientada para aspectosManuel Menezes de Sequeira
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...Manuel Menezes de Sequeira
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de ProgramaçãoManuel Menezes de Sequeira
 
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...Manuel Menezes de Sequeira
 
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...Manuel Menezes de Sequeira
 
Eng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitosEng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitosManuel Menezes de Sequeira
 
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...Manuel Menezes de Sequeira
 

En vedette (15)

Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
 
Programação Orientada por Objectos - Aula 7
Programação Orientada por Objectos - Aula 7Programação Orientada por Objectos - Aula 7
Programação Orientada por Objectos - Aula 7
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
 
Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1
 
Introdução à programação orientada para aspectos
Introdução à programação orientada para aspectosIntrodução à programação orientada para aspectos
Introdução à programação orientada para aspectos
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
 
Programação Orientada por Objectos - Aula 6
Programação Orientada por Objectos - Aula 6Programação Orientada por Objectos - Aula 6
Programação Orientada por Objectos - Aula 6
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação
 
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
 
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
 
Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2
 
Programação Orientada por Objectos - Aula 5
Programação Orientada por Objectos - Aula 5Programação Orientada por Objectos - Aula 5
Programação Orientada por Objectos - Aula 5
 
Eng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitosEng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitos
 
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
 

Similaire à Programação Orientada por Objectos - Aula 3

Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4guestd521d1f
 
[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#Felipe Pimentel
 
Semana 9: toString, classes, instâncias e objectos, Scanner
Semana  9: toString, classes, instâncias e objectos, ScannerSemana  9: toString, classes, instâncias e objectos, Scanner
Semana 9: toString, classes, instâncias e objectos, ScannerManuel Menezes de Sequeira
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)Armando Daniel
 
Beljug2010
Beljug2010Beljug2010
Beljug2010UFPA
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Marco Mendes
 
C++ Standard Template Library
C++ Standard Template LibraryC++ Standard Template Library
C++ Standard Template LibraryDuda Dornelles
 
RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxClaudia Ferlin
 
Usando POP com Programação Funcional
Usando POP com Programação FuncionalUsando POP com Programação Funcional
Usando POP com Programação FuncionalTales Andrade
 
Lista encadeada de inteiros
Lista encadeada de inteirosLista encadeada de inteiros
Lista encadeada de inteirosRobson Eduardo
 
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasManuel Menezes de Sequeira
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosGregorio Kusowski
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
ASP.Net Módulo 2
ASP.Net   Módulo 2ASP.Net   Módulo 2
ASP.Net Módulo 2michellobo
 
Aula01
Aula01Aula01
Aula01vdlos
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaEduardo Bregaida
 

Similaire à Programação Orientada por Objectos - Aula 3 (20)

Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4
 
[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#
 
Semana 9: toString, classes, instâncias e objectos, Scanner
Semana  9: toString, classes, instâncias e objectos, ScannerSemana  9: toString, classes, instâncias e objectos, Scanner
Semana 9: toString, classes, instâncias e objectos, Scanner
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
 
Beljug2010
Beljug2010Beljug2010
Beljug2010
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10
 
C++ Standard Template Library
C++ Standard Template LibraryC++ Standard Template Library
C++ Standard Template Library
 
PHP 5.3 - Funções
PHP 5.3 - FunçõesPHP 5.3 - Funções
PHP 5.3 - Funções
 
RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptx
 
Usando POP com Programação Funcional
Usando POP com Programação FuncionalUsando POP com Programação Funcional
Usando POP com Programação Funcional
 
Lista encadeada de inteiros
Lista encadeada de inteirosLista encadeada de inteiros
Lista encadeada de inteiros
 
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanos
 
Aula17
Aula17Aula17
Aula17
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Javascript
Javascript Javascript
Javascript
 
ASP.Net Módulo 2
ASP.Net   Módulo 2ASP.Net   Módulo 2
ASP.Net Módulo 2
 
Aula01
Aula01Aula01
Aula01
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completa
 

Plus de Manuel Menezes de Sequeira

Semana 8: Classes e instâncias, cadeias de caracteres
Semana  8: Classes e instâncias, cadeias de caracteresSemana  8: Classes e instâncias, cadeias de caracteres
Semana 8: Classes e instâncias, cadeias de caracteresManuel Menezes de Sequeira
 
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemasSemana  6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemasManuel Menezes de Sequeira
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaManuel Menezes de Sequeira
 
Semana 3: Introdução à linguagem de programação Java
Semana  3: Introdução à linguagem de programação Java Semana  3: Introdução à linguagem de programação Java
Semana 3: Introdução à linguagem de programação Java Manuel Menezes de Sequeira
 
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
Semana  1: Programação como arte de resolver problemas, algoritmos e problema...Semana  1: Programação como arte de resolver problemas, algoritmos e problema...
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...Manuel Menezes de Sequeira
 
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...Manuel Menezes de Sequeira
 
Eng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validaçãoEng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validaçãoManuel Menezes de Sequeira
 
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizadorEng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizadorManuel Menezes de Sequeira
 
Eng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoEng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoManuel Menezes de Sequeira
 

Plus de Manuel Menezes de Sequeira (11)

Semana 8: Classes e instâncias, cadeias de caracteres
Semana  8: Classes e instâncias, cadeias de caracteresSemana  8: Classes e instâncias, cadeias de caracteres
Semana 8: Classes e instâncias, cadeias de caracteres
 
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemasSemana  6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
 
Semana 3: Introdução à linguagem de programação Java
Semana  3: Introdução à linguagem de programação Java Semana  3: Introdução à linguagem de programação Java
Semana 3: Introdução à linguagem de programação Java
 
Semana 2: Funções e listas, variáveis
Semana  2: Funções e listas, variáveisSemana  2: Funções e listas, variáveis
Semana 2: Funções e listas, variáveis
 
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
Semana  1: Programação como arte de resolver problemas, algoritmos e problema...Semana  1: Programação como arte de resolver problemas, algoritmos e problema...
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
 
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
 
Eng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de softwareEng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de software
 
Eng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validaçãoEng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validação
 
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizadorEng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
 
Eng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoEng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónico
 

Dernier

Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......suporte24hcamin
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfmaurocesarpaesalmeid
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxMauricioOliveira258223
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇJaineCarolaineLima
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSOLeloIurk1
 
Araribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioAraribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioDomingasMariaRomao
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 

Dernier (20)

Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptx
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
Araribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioAraribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medio
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 

Programação Orientada por Objectos - Aula 3

  • 1. Aula 3 Interfaces Listas e listas ligadas Iteradores
  • 2. Na aula anterior Polimorfismo de subtipos Classes e operações polimórficas Herança Ligação estática e ligação dinâmica Classes abstractas e classes concretas Operações abstractas Análise, desenho e implementação Dicionário do domínio Conceitos Conceitos concretos e conceitos abstractos 2009/2010 Programação Orientada por Objectos 2
  • 3. Interfaces Definem um comportamento que as classes podem implementar Contêm apenas constantes e declarações de operações (e tipos embutidos) Classes podem implementar interfaces Uma classe pode implementar várias interfaces, embora possa derivar apenas de uma outra classe Uma interface pode estender (derivar de) outra 2009/2010 Programação Orientada por Objectos 3
  • 4. Interfaces: definição public interface Comparable<T> { intcompareTo(T object); } public interface Queue<E> { E element(); voidadd(E e); void remove(); } 2009/2010 Programação Orientada por Objectos 4 Interface genérica. T é um parâmetro. O correspondente argumento tem de ser um tipo. Nota: A interface Queue é um pouco diferente na biblioteca do Java! Operações públicas por omissão. Operações apenas declaradas. Não se define qualquer método. Não é necessário usar o qualificador abstract.
  • 5. Interfaces: implementação public class Rational implements Comparable<Rational> { private int numerator; private int denominator; … public intcompareTo(final Rational another) { intleftNumerator = getNumerator() * another.getDenominator(); intrightNumerator = another.getNumerator() * getDenominator(); if (leftNumerator > rightNumerator) return 1; if (leftNumerator < rightNumerator) return -1; return 0; } … } 2009/2010 Programação Orientada por Objectos 5
  • 6. public class Rational implements Comparable<Rational> { private int numerator; private int denominator; … public intcompareTo(final Rational another){ return getNumerator() * another.getDenominator() - another.getNumerator() * getDenominator(); } … } Interfaces: implementação 2009/2010 Programação OrientadaporObjectos 6 «interface» Comparable<T->Rational> Implementação Relação de realização Comparable<T -> Rational> Rational Rational
  • 7. Interfaces: polimorfismo publicclassMyListimplementsQueue<Customer> { … } publicclassMyListTester { … publicstaticvoidmain(final String[] arguments) { Queue<Customer> customerQueue = newMyList(); … } … } 2009/2010 Programação Orientada por Objectos 7 Queue<E -> Customer> MyList
  • 8. Interfaces: nomes Adjectivo denotando possibilidade de realizar determinadas operações (e.g., Comparable) Nome denotando conceito cujo comportamento será implementado (e.g., Queue) 2009/2010 Programação Orientada por Objectos 8 Caso semelhante ao das classes abstractas, mas não há qualquer herança de implementação (i.e., de atributos não constantes e métodos) e uma classe que implemente a interface pode simultaneamente implementar outras interfaces.
  • 9. Genericidade Precisa-se de classes semelhantes Com operações semelhantes Com atributos semelhantes Variando apenas em alguns tipos (e.g., o tipo dos elementos a guardar em diferentes listas) É necessário definir essas classes separadamente? 2009/2010 Programação Orientada por Objectos 9
  • 10. Lista genérica? public class ArrayList { private Object[] elements; … } 2009/2010 Programação Orientada por Objectos 10 - elements Object ArrayList * Room
  • 11. Lista genérica: implementação public class ArrayList<E> { private E[] elements; … } 2009/2010 Programação Orientada por Objectos 11 Classe genérica. E é um parâmetro. O correspondente argumento tem de ser um tipo. E Notação UML para classes genéricas (também conhecidas por modelos ou templates). ArrayList - elements : E [*] «bind» <E -> Room> - elements ArrayList<E->Room> Room *
  • 12. Lista genérica: utilização publicclassFloor { privateArrayList<Room> rooms = newArrayList<Room>(); publicFloor(final intnumberOfRooms) { for (introomNumber = 1; roomNumber != numberOfRooms + 1; roomNumber++) rooms.addFirst(newRoom(roomNumber)); } publicvoid show() { while (rooms.hasNext()) out.println(rooms.next()); } } 2009/2010 Programação OrientadaporObjectos 12 Inserir novo elemento no início ou a meio da lista implica “empurrar” elementos existentes para “fazer espaço”. Para fazer isto o que é preciso?
  • 13. Lista ligada genérica: implementação public class LinkedList<E> { Node<E> firstNode = null; Node<E> currentNode = null; … private static class Node<E> { private Node<E> nextNode; private E element; private Node(final Node<E> nextNode, final E element) { this.nextNode = nextNode; this.element = element; } } … } 2009/2010 Programação Orientada por Objectos 13 Classe embutida (nested) privada. A classe LinkedList<E> tem acesso aos membros privados de Node<E>.
  • 14. Lista ligada genérica: notação 2009/2010 Programação Orientada por Objectos 14 E E LinkedList LinkedList - firstNode: Node<E> - currentNode: Node<E> E Node - nextNode: Node - element: E E Notações para o embutimento. Node - nextNode: Node - element: E E E LinkedList LinkedList::Node - firstNode: Node<E> - currentNode: Node<E> - nextNode: Node - element: E
  • 15. Lista ligada genérica: utilização publicclassFloor { privateLinkedList<Room> rooms = newLinkedList<Room>(); publicFloor(final intnumberOfRooms) { for (introomNumber = 1; roomNumber != numberOfRooms + 1; roomNumber++) rooms.addFirst(newRoom(roomNumber)); } publicvoid show() { while (rooms.hasNext()) out.println(rooms.next()); } } 2009/2010 Programação OrientadaporObjectos 15 Inserir novo elemento no início ou no meio da lista não implica “empurrar” elementos existentes!
  • 16. Lista ligada genérica: Exemplo 2009/2010 Programação Orientada por Objectos 16 rooms : LinkedList<E->Room> firstNode currentNode nextNode : Node<E -> Room> : Node<E -> Room> nextNode = null element element : Room : Room
  • 17. Lista ligada genérica: inserir no início public class LinkedList<E> { Node<E> firstNode = null; … private static class Node<E> { … private Node(final Node<E> nextNode, final E element) { this.nextNode = nextNode; this.element = element; } } public void addFirst(final E newElement) { firstNode = new Node<E>(firstNode, newElement); } … } 2009/2010 Programação Orientada por Objectos 17
  • 18. Lista ligada genérica: inserir no início 2009/2010 Programação Orientada por Objectos 18 rooms : LinkedList<E->Room> firstNode firstNode currentNode nextNode nextNode : Node<E -> Room> : Node<E -> Room> : Node<E -> Room> nextNode = null element element element : Room : Room newElement : Room
  • 19. Lista ligada genérica: remover do início public class LinkedList<E> { … public void removeFirst() { if (isEmpty()) throw new NoSuchElementException(…); if (currentNode == firstNode) currentNode = currentNode.nextNode; Node<E> nextFirstNode = firstNode.nextNode; firstNode.element = null; firstNode.nextNode = null; firstNode = nextFirstNode; } … } 2009/2010 Programação Orientada por Objectos 19
  • 20. Lista ligada genérica: remover do início 2009/2010 Programação Orientada por Objectos 20 rooms : LinkedList<E->Room> firstNode currentNode firstNode nextNode : Node<E -> Room> : Node<E -> Room> element = null nextNode = null element element : Room : Room nextFirstNode : «ref» Node<E -> Room>
  • 21. Lista ligada genérica: inserir no fim public class LinkedList<E> { … public void addLast(final E element) { if (firstNode == null) firstNode = new Node<E>(null, element); else lastNode().nextNode = new Node<E>(null, element); } private Node<E> lastNode() { Node<E> node = firstNode; while (node.nextNode != null) node = node.nextNode; return node; } … } 2009/2010 Programação Orientada por Objectos 21
  • 22. Lista ligada genérica: inserir no fim public class LinkedList<E> { … public void addLast(final E element) { if (firstNode == null) firstNode = new Node<E>(null, element); else { Node<E> lastNode = firstNode; while (lastNode.nextNode != null) lastNode = lastNode.nextNode; lastNode.nextNode = new Node<E>(null, element); } } … } 2009/2010 Programação Orientada por Objectos 22
  • 23. Lista ligada genérica: inserir no fim 2009/2010 Programação Orientada por Objectos 23 rooms : LinkedList<E->Room> firstNode currentNode nextNode nextNode : Node<E -> Room> : Node<E -> Room> : Node<E -> Room> nextNode = null nextNode = null element element element : Room : Room newElement : Room lastNode : «ref» Node<E -> Room>
  • 24. Lista ligada genérica: passar ao seguinte public class LinkedList<E> { … public E next() { if (!hasNext()) throw new NoSuchElementException(“…"); if (currentNode == null) currentNode = firstNode; else currentNode = currentNode.nextNode; return currentNode.element; } … } 2009/2010 Programação Orientada por Objectos 24
  • 25. Lista ligada genérica: passar ao seguinte 2009/2010 Programação Orientada por Objectos 25 rooms : LinkedList<E->Room> firstNode currentNode currentNode nextNode nextNode : Node<E -> Room> : Node<E -> Room> : Node<E -> Room> nextNode = null nextNode = null element element element : Room : Room newElement : Room
  • 26. Lista ligada genérica: notação 2009/2010 Programação Orientada por Objectos 26 1 E LinkedList Esta solução não permite percorrer a lista mais do que uma vez em paralelo! 0..1 0..1 0..1 currentNode E Node 0..1 firstNode 0..1 - element: E * nextNode 0..1
  • 27. Lista ligada genérica: iteradores publicclassFloor { privateLinkedList<Room> rooms = newLinkedList<Room>(); publicFloor(final intnumberOfRooms) { for (introomNumber = 1; roomNumber != numberOfRooms + 1; roomNumber++) rooms.add(newRoom(roomNumber)); } publicvoid show() { while (rooms.hasNext()) out.println(rooms.next()); } } 2009/2010 Programação OrientadaporObjectos 27
  • 28. Lista ligada genérica: iteradores publicclassFloor { privateLinkedList<Room> rooms = newLinkedList<Room>(); publicFloor(final intnumberOfRooms) { for (introomNumber = 1; roomNumber != numberOfRooms + 1; roomNumber++) rooms.add(newRoom(roomNumber)); } publicvoid show() { LinkedList<Room>.Iterator i = rooms.iterator(); while(i.hasNext()) out.println(i.next()); } } 2009/2010 Programação OrientadaporObjectos 28
  • 29. Lista ligada genérica: notação 2009/2010 Programação Orientada por Objectos 29 E LinkedList 0..1 LinkedList.this 1 E * Node Iterator é uma classe interna (inner). As suas instâncias têm uma ligação implícita à instância da classe envolvente que as criou. A ver com pormenor mais tarde. 0..1 0..1 * Iterator currentNode firstNode 0..1 Esta solução permite percorrer a lista mais do que uma vez em paralelo! - element: E * 0..1 nextNode
  • 30. Iteradores Permitem iterar ao longo de uma sequência de elementos, actuando sobre essa sequência A uma sequência podem associar-se vários iteradores Classes que forneçam iteradores podem ser usadas em ciclos for-each 2009/2010 Programação Orientada por Objectos 30 Mais tarde voltaremos a este assunto.
  • 31. A reter… Interfaces Definem comportamentos (adjectivam) Classes implementam-nas Listas Listas ligadas Operações sobre listas ligadas Introdução aos iteradores 2009/2010 Programação Orientada por Objectos Página 31
  • 32. A ler para a próxima aula… Classes relativas a colecções na API do Java Capítulos 1 a 10 e 16 do livro: Y. Daniel Liang, Introduction to Java Programming, 7.ª edição, Prentice-Hall, 2008.ISBN: 978-0-13-605966-0 2009/2010 Programação Orientada por Objectos Página 32
  • 33. Aula 3: Sumário Interfaces Listas e listas ligadas Iteradores 2009/2010 Programação Orientada por Objectos Página 33