linguagem java - dei.isep.ipp.pt nfreire/java -  · nelson freire (isep–dei-pprog 2012/13) 1/33...

Download Linguagem JAVA - dei.isep.ipp.pt nfreire/JAVA -  · Nelson Freire (ISEP–DEI-PPROG 2012/13) 1/33 Linguagem…

Post on 19-Jul-2018

212 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 1/33 Nelson Freire (ISEPDEI-PPROG 2012/13) 1/33

    Linguagem JAVA Contentores de Objetos

    Paradigmas da Programao PPROG

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 2/33 Nelson Freire (ISEPDEI-PPROG 2012/13) 2/33

    Noo de Contentor

    Categorias de Contentores

    Conjunto

    Lista

    Fila de Espera

    Pilha

    Mapeamento

    Exemplos

    Array

    ArrayList

    Lista Ligada

    Sumrio Contentores

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 3/33 Nelson Freire (ISEPDEI-PPROG 2012/13) 3/33

    Estrutura de Dados

    Permite armazenar mltiplos objetos

    Objeto X

    Objeto Y

    Objeto Z

    Contentor

    Noo de Contentor Contentores

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 4/33 Nelson Freire (ISEPDEI-PPROG 2012/13) 4/33

    Tipo Caractersticas Exemplo

    Conjunto (Set) Implementa um conjunto matemtico finito:

    No h noo de ordem (posio): 1, 2, n-simo ou ltimo elemento

    No so permitidos elementos repetidos

    Conjunto de artigos cientficos

    Lista (List) Implementa uma sequncia:

    H noo de ordem entre elementos

    So permitidos elementos repetidos

    Pasta de correio electrnico (mensagens guardadas pela ordem de chegada)

    Fila de Espera (Queue) Destinada a guardar elementos espera de serem processados

    A ordem de processamento do tipo FIFO

    Conjunto de pedidos de servio recebidos por um servidor

    Pilha (Stack) Destinada a guardar elementos espera de serem processados

    A ordem de processamento do tipo LIFO

    Conjunto de endereos navegados num browser Web

    Mapeamento (Map) Implementa correspondncias unvocas (1 para 1) entre objetos do tipo chave-valor

    As chaves so o domnio das correspondncias e so nicas

    Lista Telefnica

    Categorias de Contentores Contentores

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 5/33 Nelson Freire (ISEPDEI-PPROG 2012/13) 5/33

    Noo de Contentor

    Categorias de Contentores

    Conjunto

    Lista

    Fila de Espera

    Pilha

    Mapeamento

    Exemplos

    Array

    ArrayList

    Lista Ligada

    Sumrio Contentores

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 6/33 Nelson Freire (ISEPDEI-PPROG 2012/13) 6/33

    Guardar uma lista de objetos

    Objetos todos do mesmo tipo (ou compatveis) // ex: s objetos Automovel ou Livro ou Pessoa

    Lista de dimenso fixa

    Exemplos

    Interesse dos Arrays Arrays

    Objeto 1

    Objeto 2

    Objeto 3

    ...

    Objeto N

    Tabela Unidimensional (Dimenso N)

    Objeto 1,1 ... Objeto 1,M

    Objeto 2,1 ... Objeto 2,M

    Objeto 3,1 ... Objeto 3,M

    ... ... ...

    Objeto N,1 ... Objeto N,M

    Tabela Bidimensional (Dimenso NxM)

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 7/33 Nelson Freire (ISEPDEI-PPROG 2012/13) 7/33

    Unidimensionais

    Multidimensionais

    Bidimensionais

    Tridimensionais

    ...

    Categorias de Arrays Arrays

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 8/33

    Array

    Constitudo por elementos

    N de elementos (comprimento) fixo // Dimenso no modificvel em tempo de execuo

    Elementos

    Organizados de forma linear

    Funcionam como variveis simples

    Podem armazenar objetos

    Todos do mesmo tipo (ou tipos compatveis)

    Acesso atravs de ndices

    ndice

    Indica posio de um elemento

    N inteiro: [0, comprimento -1]

    Indexados // ndice; n inteiro desde 0

    0 1 2 3 ... n-2

    n-1

    objeto objeto objeto X objeto ... objeto objeto

    Elemento: 2 Contedo: Objeto X

    comprimento (ou dimenso) n

    elementos

    ndices

    Noo de Array Unidimensional Array Unidimensional

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 9/33

    Preciso Saber

    Declarar um array

    Java

    Arrays so objetos

    Manipular elementos do array

    Uso Array Unidimensional

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 10/33

    Java

    tipo nomeArray[ ] = new tipo[ dimenso ];

    tipo[ ] nomeArray = new tipo[ dimenso ];

    tipo nomeArray[ ]; nomeArray = new tipo[ dimenso ];

    Exemplos

    Automovel autos[ ] = new Automovel [20];

    Automovel[ ] autos = new Automovel [20];

    Automovel autos [ ]; autos[ ] = new Automovel[20];

    Inicializao dos Elementos

    RAM

    autos[0]

    autos[1]

    autos[2]

    autos[19]

    ...

    19 = 20-1

    Tipo referncia: null (Ex: Automovel)

    Array objeto

    Nome do array referncia de objeto

    Declarao de Array Unidimensional Array Unidimensional

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 11/33

    Java: Array um Objeto

    RAM

    autos[0]

    autos[1]

    autos[2]

    autos[19]

    ...

    ...

    referncia de objeto

    ...

    autos

    ...

    Objeto

    Nome de Array

    uma referncia do objeto que contm os seus elementos // referncia = endereo

    Exemplo

    Automovel[] autos = new Automovel[20];

    Array Unidimensional

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 12/33

    Elemento

    Pode ser manipulado individualmente

    Funciona como uma varivel simples

    Identificado pelo

    Nome do vetor

    ndice respetivo

    Indicar Elemento

    nomeArray[ndice]

    Exemplo

    autos[2]

    Manipulaes Tpicas

    Um elemento

    Todos elementos

    Manipulao de Elementos

    RAM

    autos[0]

    autos[1]

    autos[2]

    autos[19]

    ...

    ...

    referncia de objeto

    ...

    autos

    ...

    Objeto

    Array Unidimensional

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 13/33

    Atribuir objeto a um elemento

    Guardar ou atualizar um elemento

    Sintaxe: nomeArray[ndice] = objeto;

    Ex: autos[5] = new Automovel("Toyota");

    Atribuir contedo de elemento a uma varivel

    Sintaxe: varivel = nomeArray[ndice];

    Ex: Automovel a = autos[5];

    Manipulao de um Elemento Array Unidimensional

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 14/33

    nomeArray.length (atributo)

    Sintaxe da repetio foreach:

    for( Tipo_Elemento varivel: nomeArray ){

    instrues // sobre varivel

    }

    Indicar todos os n elementos (n = comprimento do array)

    for(int i=0; i < nomeArray.length; i++ ){ ... nomeArray[i] ...

    }

    Ex: Guardar no array n instncias Automovel

    for(int i=0; i

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 15/33 Nelson Freire (ISEPDEI-PPROG 2012/13) 15/33

    Noo de Contentor

    Categorias de Contentores

    Conjunto

    Lista

    Fila de Espera

    Pilha

    Mapeamento

    Exemplos

    Array

    ArrayList

    Lista Ligada

    Sumrio Contentores

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 16/33 Nelson Freire (ISEPDEI-PPROG 2012/13) 16/33

    Classe

    Instancivel

    Uma instncia

    Contentor de objetos

    Tipo lista

    H ordem nos objetos (1, 2, ..., N)

    Fornece servios para gerir objetos

    Exemplos

    Adicionar objetos

    Remover objetos

    Tipo coleo

    Implementa interface Collection

    Objeto X

    Objeto Y

    Objeto Z

    Elemento 1

    Elemento 2

    Elemento N

    Contentor

    Noo de ArrayList ArrayList

    Elementos contm Objetos

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 17/33 Nelson Freire (ISEPDEI-PPROG 2012/13) 17/33

    ArrayList Implementa

    Array dinmico // n de elementos pode variar durante execuo de programa

    Cresce // adicionando novos objetos

    Decresce // removendo objetos

    Baseado num array

    E1 E1 E2 E1 E2 E3

    Array Dinmico

    E1 E2

    ArrayList Implementao de um ArrayList 1/2

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 18/33 Nelson Freire (ISEPDEI-PPROG 2012/13) 18/33

    Elementos

    Tipo Object

    Compatvel com todos os tipos

    Armazenam qualquer objeto

    Estrutura de dados indexada

    Semelhante ao array

    ndice

    Indica posio dos elementos

    Nmero inteiro desde zero

    ArrayList Implementao de um ArrayList 2/2

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 19/33 Nelson Freire (ISEPDEI-PPROG 2012/13) 19/33

    RAM

    referncia

    ...

    Elemento m

    ...

    atributo 1

    objeto

    atributo N

    ...

    atributo 1

    atributo M

    ...

    ...

    ...

    objeto

    referncia Elemento 1

    ArrayList

    Modelo de Memria ArrayList

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 20/33 Nelson Freire (ISEPDEI-PPROG 2012/13) 20/33

    ArrayList

    Construtores

    Mtodos de Instncia

    API (Application Programming Interface) 1/6

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 21/33 Nelson Freire (ISEPDEI-PPROG 2012/13) 21/33

    Construtores

    public ArrayList() // tamanho inicial zero ( n de objetos adicionados )

    // capacidade inicial 10 (n de elementos alocados)

    // primeiras 10 adies rpidas (s/ custos realocao)

    public ArrayList(int capacidade_inicial); // tamanho inicial zero

    public ArrayList(Collection

  • Nelson Freire (ISEPDEI-PPROG 2012/13) 22/33 Nelson Freire (ISEPDEI-PPROG 2012/13) 22/33

    Mtodos para adicionar objetos