Orientação a Objetos AULA 09

Documentos relacionados
Coleções em Java. Prof. Gustavo Willam Pereira ENG10082 Programação II. Créditos: Prof. Clayton Vieira Fraga Filho

Coleções. João Paulo Q. dos Santos

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções

PCC104 - Projeto e Análise de Algoritmos

Coleções. Prof. Marcelo Roberto Zorzan

Programação Orientada a Objetos

API e Coleções Java. Sérgio Luiz Ruivace Cerqueira

Desenvolvimento e Projeto de Aplicações Web

Programação Orientada a Objetos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Linguagem de Programação Orientada a Objeto Coleções

Algoritmos e Programação II. Coleções. Coleções. Baseado no material do Prof. Julio

ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA (ABORDAGEM RECURSIVA)

Programação Orientada a Objetos

Tema 7. Colecções AULA TEÓRICA 6. Listas: ArrayList, LinkedList, Vector Ø Criação Ø Manipulação

A classe ArrayList. IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Programação com genéricos

Paradigmas da Programação PPROG. Linguagem JAVA. Contentores de Objetos

Apêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são:

Prof. Fernando V. Paulovich 8 de novembro de SCC Programação Orientada a Objetos

Collections Framework

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

UFCG - CEEI DSC Grupo PET Computação Ciclo de Seminários

Java API. Giuliana Silva Bezerra

ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

Lista Ligada. Nó de Lista Ligada

FILAS. As coisas de que uma fila é feita serão chamadas itens. Os itens podem ser números, strings, structs, etc., etc.

Programação II Java Collections Framework (JCF) Christopher Burrows

Programação por Objectos. Java

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins

Lista encadeada class No { Coleções. Enumeration. Lista encadeada (continuação) Enumeration Exemplo usando a classe Lista anterior

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objetos

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

4 Conceito de Herança

4. Listas, Pilhas, e Filas

4. Listas, Pilhas, e Filas

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:

Análise e Projeto Orientados por Objetos

Estruturas de Dados Encadeadas

Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 20 Jan/2017.

Linguagem de Programação III

Collections. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

1. Por que não utilizar a notação de composição da UML para mostrar que um cachorro é composto de altura, peso, cor e data de nascimento?

Java para Desktop. Programação Orientada à Objetos 2 JSE

JAVA COLLECTIONS API: LISTAS

Programação orientada a objetos em Java

Java Collections Framework II

Exame de Admissão. Instituto Nacional de Pesquisas Espaciais 18 de setembro de 2018 A: GABARITO

Programação Orientada a Objetos. Collections - Java

Linguagem de Programação II Implementação

Algoritmos e Estruturas de Dados. Lição n.º 3 Coleções: sacos, pilhas e filas

Exercício de Estrutura de dados. Java Fila

Instituto Federal de Educação, Ciência e Tecnologia da Bahia Campus Irecê Disciplina: Linguagem Técnica II Prof o Jonatas Bastos

Genéricos. Profa. Thienne Johnson EACH/USP

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Grupo 2 - Implementação de uma Classe Simples

Programação Orientada a Objetos

Coleções. Leonardo Gresta Paulino Murta.

Vetores Unimensionais

Programação Java (nível intermediário) 4. Polimorfismo

Prof. Jesus José de Oliveira Neto

Atividade 08 - Utilizando Collections - List

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Tabelas de Dispersão. Tabela de Dispersão

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Computação II Orientação a Objetos

Iterator. Professor: Hyggo Almeida

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Paradigmas de Programação

Computação II Orientação a Objetos

Métodos Genéricos. Prof.: Michele Nasu Tomiyama Bucci

p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco

Nome: Número: Primeira Parte (7 valores) Segunda Parte (3 valores)

Notas de Aula 07: vetores de objetos e coleções

01/06/2016 INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS. Programa Capítulo 15. Coleções. A Interface List. A Classe LinkedList. Exercício.

// quando o estado do Sujeito muda

Listas Ligadas, Pilhas e Filas

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

PROJETO DE DADOS PROJETO ARQUITETURAL BÁSICO. Projeto de Programas PPR0001

Departamento de Ciência de Computadores Estruturas de Dados (CC114)

Prova 2 PMR2300 1o. semestre 2015 Prof. Thiago Martins

Herança e Polimorfismo

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

AULA 6 - ARRAYS. Array de 10 elementos

if (umobjecto!= null && umobjecto instanceof CartaoFidelidade){ titular.equals(((cartaofidelidade) umobjecto).titular) &&

Aula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Segunda Parte (3 valores) Primeira Parte (7 valores) Nome: Número: PERGUNTA NOTA PERGUNTA RESPOSTA

Listas Ligadas, Pilhas e Filas

Algoritmos e Estruturas de Dados. Lição n.º 3 Coleções: sacos, pilhas e filas

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Transcrição:

Orientação a Objetos AULA 09 Prof. Fabrício Martins Mendonça

Conteúdo da Aula ü Coleções ü Coleções lista de objetos ü Coleções conjuntos 2

Coleções Podemos armazenar vários objetos em um array e este array será visto como uma única entidade. Um array pode ser encapsulado dentro de uma classe, possibilitando que seja manipulado por métodos da classe. Apesar da flexibilidade de um array em uma classe, algumas características não podem ser implementadas de forma trivial nesta estrutura. 3

Coleções Limitações no uso de um array em Java: O tamanho do array não pode ser modificado depois que o mesmo é criado. Um array pode conter apenas elementos de um mesmo tipo, a não ser que consideremos os recursos de herança e polimorfismo. Algumas operações não podem ser feitas de maneira simples: Inserção ou exclusão de elementos - Devemos deslocar elementos para isto. 4

Coleções Muitas linguagens de programação orientadas a objeto já possuem classes e interfaces para processamento de objetos em conjunto. Conjuntos de objetos são frequentemente chamados de coleções. Classes e interfaces podem ser usadas para manipulação de coleções de objetos onde o uso de arrays poderia não ser viável ou ser complicado. Muitas classes implementam estruturas de dados relativamente complexas, mas de uso transparente para o programador. Exemplos: Listas Encadeadas, Pilhas, Filas, Árvores etc. 5

Coleções Essas classes de estruturas de dados, que representam coleções de objetos, são herdadas da classe Object. No Java, elementos de tipos nativos deverão estar encapsulados em objetos para serem incluídos nas coleções. Algumas classes que manipulam coleções de objetos podem ter funcionalidades (métodos) semelhantes - possuem mesmos nomes mas as implementações são diferentes. Exemplos: Inserir, Excluir etc. Classes de coleções da linguagem Java encontram-se no pacote java.util. 6

São coleções onde elementos repetidos são permitidos. Os elementos de uma lista têm posição definida. Podemos considerar que uma lista é um array com algumas capacidades adicionais. Uma das capacidades de uma lista que a diferencia do array é a possibilidade de alteração de acordo com a necessidade. Para a implementação de listas em Java existe: Uma interface List que declara quais métodos podem ser usados; Duas classes que implementam a interface List. 7

Classes para manipulação de listas em Java: ArrayList: Implementa a lista como um array. LinkedList: Implementa a lista como um array, mas apresenta melhor desempenho para operações de inserção e exclusão de elementos do que a classe ArrayList. As classes ArrayList e LinkedList têm métodos básicos para adicionar e recuperar elementos da lista. 8

Para adicionar elementos ao final da lista usamos o método add. O método add recebe como parâmetro uma instância de qualquer classe. Podemos também definir a posição onde o objeto será inserido na lista. Basta usar o método add que recebe como parâmetros um inteiro (posição) e o objeto a ser inserido na referida posição. Não pode ser definida qualquer posição: As posições de uma lista são identificadas com índices de 0 a N - 1, onde N é o tamanho da lista. 9

Para recuperar elementos da lista usamos o método get que recebe como parâmetro um inteiro correspondente à posição do objeto na lista. Atentar para os valores a serem definidos para a posição ao usar o método get. O método size retorna o número de elementos contidos em uma instância de ArrayList ou LinkedList. 10

As classes ArrayList e LinkedList contêm o método set que recebe dois parâmetros: Um valor inteiro correspondente à posição - entre 0 e N - 1, N = tamanho da lista; Um objeto a ser inserido na posição. O método set substitui o objeto na referida posição e retorna o objeto que ocupava a mesma. 11

As classes ArrayList e LinkedList permitem verificar se um objeto existe na lista através dos métodos contains e indexof. O método contains recebe como parâmetro a instância de uma classe e retorna true ou false dependendo de o objeto estar ou não na lista. O método indexof recebe como argumento uma instância de uma classe e retorna a posição da primeira ocorrência da instância na lista. Caso o objeto não exista na lista, será retornado o valor -1. O método lastindexof procura o objeto a partir do final da lista. As classes ArrayList e LinkedList contêm ainda o método isempty que retorna true ou false se a lista estiver vazia ou não respectivamente. 12

Para remover elementos de uma lista podemos usar o método remove de duas maneiras: Uma que recebe um inteiro correspondente à posição do elemento a ser removido. Uma que recebe um objeto de qualquer classe e remove a primeira ocorrência se houver. Retorna true se remover e false caso contrário. Após a remoção de um elemento da lista os índices dos demais e o tamanho da lista serão ajustados. 13

Exemplo 1: LinkedList public class Teste { public static void main(string[] args) { Aluno maria = new Aluno(); maria.setnome("maria"); Aluno manoel = new Aluno(); manoel.setnome("manoel"); Aluno joaquim = new Aluno(); joaquim.setnome("joaquim"); LinkedList listaligada = new LinkedList(); listaligada.add(maria); listaligada.add(manoel); listaligada.add(1, joaquim); for (int i = 0; i < listaligada.size(); i++) { System.out.println(listaLigada.get(i)); } } } 14

Exemplo 2: fila public class Fila { private List<Object> objetos = new LinkedList<Object>(); public void insere(object objeto) { this.objetos.add(objeto); } public Object remove() { return this.objetos.remove(0); } public boolean vazia() { return this.objetos.size() == 0; } } 15

Exemplo 2 (continuação): fila public class Fila<T> { private List<T> objetos = new LinkedList<T>(); public void insere(t t) { this.objetos.add(t); } public T remove() { return this.objetos.remove(0); } public boolean vazia() { return this.objetos.size() == 0; } } 16

Exemplo 2 (continuação): fila public class Teste { public static void main(string[] args) { Fila<Aluno> fila = new Fila<Aluno>(); Aluno aluno = new Aluno(); fila.insere(aluno); Aluno alunoremovido = fila.remove(); if (fila.vazia()) { System.out.println("A fila está vazia"); } Fila<String> filadestring = new Fila<String>(); filadestring.insere("adelaide"); filadestring.insere("carolina"); String carolina = filadestring.remove(); String adelaide = filadestring.remove(); System.out.println(carolina); System.out.println(adelaide); } } 17

Exemplo 3: interface Queue para Fila public class Teste { public static void main(string[] args) { Queue fila = new LinkedList(); Aluno aluno = new Aluno(); fila.offer(aluno); } } Aluno alunoremovido = (Aluno)fila.poll(); if(fila.isempty()){ System.out.println("A fila está vazia"); } 18

Exemplo 4: pilha public class Pilha<T> { private LinkedList<T> objetos = new LinkedList<T>(); } public void insere(t t) { this.objetos.add(t); } public T remove() { return this.objetos.remove(this.objetos.size() - 1); } public boolean vazia() { return this.objetos.size() == 0; } 19

Exemplo 4 (continuação): pilha public class Teste { public static void main(string[] args) { Pilha<Peca> pilha = new Pilha<Peca>(); Peca peca = new Peca(); pilha.insere(peca); Peca pecaremove = pilha.remove(); if (pilha.vazia()) { System.out.println("A pilha está vazia"); } Pilha<String> pilha2 = new Pilha<String>(); pilha2.insere("adalberto"); pilha2.insere("maria"); String maria = pilha2.remove(); String adalberto = pilha2.remove(); System.out.println(maria); System.out.println(adalberto); } } 20

Exemplo 5: interface Stack para Pilha public class Teste { public static void main(string[] args) { Stack pilha = new Stack(); Peca pecainsere = new Peca(); pilha.push(pecainsere); Peca pecaremove = (Peca)pilha.pop(); if(pilha.isempty()){ System.out.println("A pilha está vazia"); } } } 21

Exercício: Implementar a classe Votação A classe deverá processar os votos de uma eleição sem conhecimento prévio de quem são os candidatos; A cada novo candidato votado, este deverá ser inserido numa lista; A votação será encerrada quando informado o valor -1 para candidato votado; Ao final da votação deverá ser exibido o número total de votos bem como a votação de cada candidato. 22

Diferenças entre ArrayList e LinkedList: Apesar das classes ArrayList e LinkedList implementarem a interface List, LinkedList é mais conveniente do que ArrayList. Em especial para elaborar estruturas de dados como pilhas e filas. O que permite a implementação facilitada de pilhas e filas através da classe LinkedList são os métodos adicionais disponíveis na classe. Evidentemente cada uma tem suas vantagens e desvantagens. De forma geral, a classe ArrayList é mais rápida para operações de pesquisa e a classe LinkedList é mais rápida em operações de inserção e remoção de elementos (principalmente nas pontas). 23

Diferenças entre ArrayList e LinkedList: O que permite a implementação facilitada de pilhas e filas através da classe LinkedList são os métodos adicionais disponíveis na classe. addfirst; addlast; getfirst; getlast; removefirst; removelast; etc; 24

Coleções - Conjuntos Uma alternativa para implementação de Coleções no Java são os conjuntos (set). Os conjuntos são coleções em que não é permitida duplicação de objetos. Alguns exemplos: Uma turma pode ser considerada um conjunto de alunos, os números de uma loteria pode ser considerado um conjunto de inteiros. 25

Coleções - Conjuntos Os conjuntos podem ser vazios. O tamanho de conjuntos pode variar dinamicamente. Os objetos em um conjunto não são mantidos na mesma ordem que foram inseridos. Classes para manipulação de conjuntos em Java implementam a interface Set. HashSet, TreeSet. 26

Coleções - Conjuntos Alguns métodos das classe HashSet e TreeSet: add; remove; contains; isempty Os elementos de um conjunto não têm posições indexadas. Para percorrer os elementos de um conjunto podemos usar a interface Iterator. A classe Iterator cria uma lista de elementos a partir de um objeto que represente uma coleção. Métodos de interesse: hasnext; next; remove. 27

Coleções - Conjuntos Exemplo: 28

Coleções - Conjuntos Exemplo: 29