AULA TEÓRICA 7 Tema 7. Colecções (cont.) Vector Ø Criação Ø Manipulação

Documentos relacionados
AULA TEÓRICA 4. Tema 2. Introdução a programação em Java (Continuação) Tema 3. Instruções básicas de entrada e saída

AULA TEÓRICA 5 Tema 3. Instruções básicas de entrada e saída (continuação)

Tipos, Literais, Operadores

5 Arrays. 5.1 Criando um array. 5.2 Inicializando arrays. c:\>java Array Janeiro tem 31 dias.

Vetores Unimensionais

modelagem do negócio (processos e objetos do negócio) modelagem de requisitos alocados ao software modelagem da solução de software

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o.

5 Caso de estudo O cartão fidelidade

JAVA. Professor: Bruno Toledo

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Aula teórica 3. Tema 3.Computadores e linguagens Linguagens de Programação Compilação e linkagem LP Java. Preparado por eng.

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Classe. Objeto é uma instância de uma classe. Classe é onde conceituamos o objeto É a essência do objeto Define os atributos e métodos

AULA TEÓRICA 10 Tema 9. Introdução à programação. Desenho de Algoritmos

Introdução à Programação

Java na Prática. Célio Silva Aula 3

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Exercício de Estrutura de dados. Java Fila

Orientação a Objetos e Java

Instituto Superior de Engenharia de Lisboa

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.

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

Ambientação com a Sintaxe de Java: parte 1

Programação de Computadores para GI

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Dados armazenados em um objeto podem ser tanto primitivos, tais como inteiros ou caracteres, ou referências para outros objetos.

Aula 08 Estruturas de Condição. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Conceitos Básicos da Programação OO

9 Classes Abstractas e Interfaces

EXERCICIO DE JAVA PARA FIXAÇÃO DE CONTEÚDO - Introdução a Prática de Programação Docente Pedro F. Carvalho /

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

4 TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Olhando as Classes de Perto

Programação Estruturada e Orientada a Objetos. Objetos e Métodos

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Linguagem C Princípios Básicos (parte 1)

Paradigmas de Programação

3 Classes e instanciação de objectos (em Java)

Algoritmia e Programação APROG. Vetores. Algoritmia e Java. Nelson Freire (ISEP DEI-APROG 2012/13) 1/32

Escola Náutica Infante Dom Henrique. Grupo I (7.5 valores)

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

Polimorfismo: aprendendo a prever o futuro. Polimorfismo: aprendendo a prever o futuro. Definições (2/5) Definições Tipos de Polimorfismo

UNIVERSIDADE DO ESTADO DE SANTA CATARINA - UDESC DCC Departamento de Ciência da Computação Joinville-SC

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

Professora Jeane Melo

1 Considere o seguinte código e responda às questões enunciadas.

Programação: Vetores

Aula 08 Relacionamento entre Objetos. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

Programação Orientada a Objetos I

Interfaces e Classes Abstratas

Métodos. Utilizados para dividir o programa em subprogramas

Classe Funcionario tem Endereco

Resumo das Propriedades de UDP e de TCP

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

Programação Orientada a Objetos

Curso: Técnico em Informática Integrado Disciplina: POO Carga horária: 60h Período: 2º Ano Professor: Edmilson Barbalho Campos Neto LISTA 02.

Programação com genéricos

Algoritmos I Aula 13 Linguagem de Programação Java

Universidade Estadual de Santa Cruz

Programação para GI. Subprogramas

CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA A F B G C H D I

6. Escreva a classe ConversaoDeUnidadesDeTempo com métodos estáticos para conversão aproximada das unidades de velocidade segundo a lista abaixo.

Strings e Arrays. Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB

Linguagem Java Parte I. Sintaxe. Algumas características

PROGRAMAÇÃO E PYTHON. Laboratórios de Informática João Paulo Barraca, André Zúquete, Diogo Gomes

Um Exemplo de Refatoração. Prof. Alberto Costa Neto DComp/UFS

Introdução à Programação Orientada a Objetos em C++

Linguagens de Programação

Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 12 Out/2016.

Capturando Entrada de Dados Através do Teclado

Simulado de Linguagem de Programação Java

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

Módulo 10 Listas Encadeadas

Introdução a Linguagem

Orientação a Objetos e a Linguagem Java

JAVA. José de Siqueira UFMG - ICEx - DCC

Licenciatura em Informática

JAVA 1.5 na plataforma J2SE 5.0 Tiger Novas Construções, Sintaxe, Tipos e Polimorfismo

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

Estruturas de dados. IPC2 1999/2000 F. Nunes Ferreira

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

UNIVERSIDADE FEDERAL DO PARANÁ

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

Atributos e Métodos de Classe

Encapsulamento de Dados

Torneio Estudantil de Computação Multi-Linguagem de Aveiro. Escola Superior de Tecnologia e Gestão de Águeda Universidade de Aveiro TECLA 2009

Linguagem de Programação Introdução a Orientação a Objetos

Introdução a Programação de Jogos

Lista Encadeada (Linked List)

Introdução à Linguagem C++

Fabiano Moreira.

Tipos Abstractos de Dados (TADs) e Java

Capítulo 2 Operadores. A função scanf()

Programação Java. Linguagem de Programação Java

Agenda. O que é um array. Declaração de um array. Instanciação de um array. Acessando os elementos de um array. O tamanho de um array (length)

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Módulo 04 Expressões, Estruturas de Seleção e Controle de Fluxo. Última atualização: 09/06/2010

Transcrição:

AULA TEÓRICA 7 Tema 7. Colecções (cont.) Vector Ø Criação Ø Manipulação 1

Vector Os vectores são semelhantes aos arrays, pois também podem conter um conjunto de objectos aos quais é atribuído um índice. Três diferenças fundamentais entre arrays e vectores: v Os vectores podem crescer ou decrescer de tamanho em função das necessidades do programa; v Os vectores apenas podem armazenar objectos, pelo que não é possível ter um vector contendo apenas tipos simples (int, double, etc...). Só transformando estes valores em objectos é que possível armazená-los num vector; v Os elementos de um array têm que ser todos do mesmo tipo, que é indicado no momento da sua criação. Pelo contrário, um vector pode conter elementos de diversos tipos, que sejam objectos. Os vectores são objectos da classe predefinida Vector, que está incluída na biblioteca java.util. Qualquer programa que utilize vectores tem que importar esta biblioteca. 2

Criação e manipulação de um vector Para criar um vector utiliza se seguinte instrução: Vector nomedereferencia = new Vector(); Um valor de tipo primitivo pode ser facilmente convertido em um objecto e posteriormente adicionado em um vector. Uma grande vantagem de um vector dinâmico em relação aos arrays é que ele possui vários métodos para facilitar a realização de importantes operações, entre eles são: add(objecto) adiciona o objecto no fim do vector. Devolve true add(indice,objecto) insere o objecto na posição do vector indicada por índice; addelement(objecto) adiciona um objecto ao vector, aumentando o seu tamanho. elementat(indice) devolve o objecto colocado na posição indicada por índice; indexof(objecto) devolve o índice da 1a posição onde se encontra um objecto igual ao fornecido ou -1 se não encontrar; isempty() verifica se o vector se encontra vazio; remove(indice) remove o objecto armazenado na posição dada por índice; setelementat(objecto,indice) define o elemento na posição especificada pelo índice pelo objecto fornecido; size() devolve o número de elementos do vector. 3

Depois de adicionar todos os elementos desejados a um vector, é aconselhável invocar seu método trimtosize(),que ajusta a sua capacidade para o seu tamanho actual, liberando o espaço que estiver sendo ocupado desnecessariamente. Um valor de tipo primitivo pode ser facilmente convertido em um objecto e posteriormente adicionado em um vector. Vector v = new Vector(); v.add (new Boolean(true)); v.add (new Integer(1234)); v.add (new Double(123.4)); v.add (new Character('A')); Não há necessidade de qualquer conversão para variáveis de tipo String: v.add ("um texto"); Vamos criar uma nova versão do programa Turma (visto anteriormente), que poderá funcionar com qualquer número de estudantes e sem ter que pedir esse número ao utilizador. Nesta nova versão, a classe Estudante fica inalterada, pois apenas se pretende alterar a forma como os objectos desta classe vão ser armazenados, antes num array de objectos, agora num vector. A nova classe EstVector terá agora um atributo da classe Vector e o construtor da classe vai mudar, pois vai criar o vector, guardando o seu endereço em lista: 4

import java.io.*; public class Validacoes {..... public class Estudante { private Validacoes vv; private String nome; private byte notas[]; private byte media; public Estudante() { vv = new Validacoes(); nome = vv.validarstring((byte)3,(byte)25,"nome de estudante? "); byte numnotas = vv.validarbyte((byte)0,(byte)5,"quantas notas?"); notas = introdnotas(numnotas); media = calcmedia(); //Cria array Notas e preenche com notas do aluno private byte[] introdnotas(byte numn) { notas = new byte[numn]; for (int i = 0; i < numn; i++) { notas[i] = vv.validarbyte((byte)0,(byte)20,(i+1)+"-a nota: "); return notas; 5

//devolve uma String composta pelas notas de um estudante private String vernotas() { String visual=""; for (byte k = 0; k < notas.length; k++) visual += notas[k]+" "; return visual; //Método para cálculo da média de um estudante private byte calcmedia() { byte soma = 0; for (int z=0; z<notas.length; z++) soma += notas[z]; return (byte) Math.round(soma / notas.length); public byte getmedia() { return media; public String tostring() { return nome+", notas: "+vernotas()+", Meida="+media+"\n"; 6

import java.util.vector; public class TurmaVector { private Vector lista; public TurmaVector() { lista = new Vector(); public void adicestudante() { Estudante est = new Estudante(); lista.addelement(est); lista.trimtosize(); public String tostring() { String visualizar=""; int numest = lista.size(); Estudante temp; for (int k=0;k<numest; k++) { temp = (Estudante)lista.elementAt(k); visualizar += temp.tostring(); //.tostring() é opcional return visualizar; public void ordenar() { Ordenacao or = new Ordenacao(); or.ordenaturma(lista); 7

import java.util.vector; public class Ordenacao { public Ordenacao() { public void ordturma(vector lst) { //ordena por ordem decresc. da média Estudante aux1,aux2; int i_maior, numest = lst.size(); for (int i=0; i < numest-1; i++) { i_maior = localizarmaior(lst,i); aux1 = (Estudante)lst.elementAt(i); aux2 = (Estudante)lst.elementAt(i_maior); lst.setelementat(aux2,i); lst.setelementat(aux1,i_maior); private int localizarmaior(vector x,int inicio) { int i_max = inicio; Estudante t1,t2; for (int k = inicio+1; k < x.size(); k++) { t1 = (Estudante)x.elementAt(k); t2 = (Estudante)x.elementAt(i_max); if (t1.getmedia() > t2.getmedia()) i_max = k; return i_max; 8

public class GereTurma { public static void main(string arg[]) { TurmaVector est = new TurmaVector(); Validacoes v = new Validacoes(); byte opcao; do { System.out.println("\tEscolha uma das opcoes:\n" ); System.out.println("\t1. Adicionar estudante"); System.out.println("\t2. Ordenar estudantes pela media"); System.out.println("\t3. Visualizar Lista de estudantes"); System.out.println("\t4. Terminar\n"); opcao = v.validarbyte((byte)1,(byte)4,"escolha opcao"); switch (opcao) { case 1: est.adicestudante(); break; case 2: est.ordenar(); System.out.println("Ordenado com sucesso!"); break; case 3: System.out.println(est.toString()); break; while (opcao!= 4); O método elementat()permite obter cada um dos objectos do vector. Como o vector pode conter objectos de diversas classes, é necessário indicar explicitamente de que tipo de objecto se trata. Usa-se um cast que indica que os objectos são desta classe. 9

Referência bibliográfica: António José Mendes; Maria José Marcelino. Fundamentos de programação em Java 2. FCA. 2002. Elliot Koffman; Ursula Wolz. Problem Solving with Java. 1999. F. Mário Martins; Programação Orientada aos objectos em Java 2, FCA, 2000, John Lewis, William Loftus; Java Software Solutions: foundation of program design, 2nd edition, Addision-Wesley John R. Hubbard. Theory and problems of programming with Java. Schaum s Outline series. McGraw-Hill. H. Deitel; P. Deitel. Java, como programar. 4 edição. 2003. Bookman. Rui Rossi dos Santos. Programando em Java 2 Teoria e aplicações. Axcel Books. 2004 10