Algoritmos e Estruturas de Dados. Lição n.º 3 Coleções: sacos, pilhas e filas
|
|
- Ana Laura Godoi Corte-Real
- 6 Há anos
- Visualizações:
Transcrição
1 Algoritmos e Estruturas de Dados Lição n.º 3 Coleções: sacos, pilhas e filas
2 Coleções: sacos, pilhas e filas Especificação das coleções Classes iteráveis Sacos (em inglês bags) Implementação com arrays Pilhas (em inglês stacks) Implementação com listas Filas (em inglês queues) Implementação como exercício. Estudaremos hoje os sacos. As pilhas e as filhas ficam para uma das próximas lições. 2/8/17 Algoritmos e Estruturas de Dados 2
3 Coleções Coleções são... coleções! Às coleções podemos acrescentar objetos, removêlos e iterá-los. Podemos ainda perguntar-lhes se estão vazias e quantos objetos têm. Em Java teremos coleções genéricas, parametrizadas pelo tipo dos objetos que contêm. Por exemplo: public class Bag<T> //... As coleções apenas guardam os objetos. Por isso não há restrições sobre o tipo de objetos que podem conter. 2/8/17 Algoritmos e Estruturas de Dados 3
4 Classes iteráveis Queremos que as nossas coleções sejam iteráveis, isto é, que permitam aceder sequencialmente a cada um dos objetos da coleção. Programaremos isso fazendo cada coleção dispor de um método iterator que devolve um iterador. Paralelamente, declaramos a classe como implementando a interface Iterable<T>: public class Bag<T> implements Iterable<T> //... 2/8/17 Algoritmos e Estruturas de Dados 4
5 APIs public class Bag<T> implements Iterable<T> public Bag() public void add(t x) public boolean isempty() public int size() public Iterator<T> iterator() public class Stack<T> implements Iterable<T> public Stack() public void push(t x) public boolean isempty() public int size() public T pop() public Iterator<T> iterator() public class Queue<T> implements Iterable<T> public Queue() public void enqueue(t x) public boolean isempty() public int size( public T dequeue() public Iterator<T> iterator() 2/8/17 Algoritmos e Estruturas de Dados 5
6 Capacidade? Como indicamos a capacidade das coleções? Não indicamos! Há apenas um construtor, sem argumentos. Logo, as coleções têm de ser capazes de aumentar a capacidade, se necessário (e, porventura, de diminuir a capacidade, se desejável). Para isso, implementamo-las à base de listas ligadas ou à base de arrays redimensionáveis. Um array redimensionável é um array cuja capacidade pode mudar durante a execução do programa. Aparentemente a expressão array redimensionável é um oximoro, pois habituámo-nos a que a capacidade de um array é fixada na sua criação e não muda mais. 2/8/17 Algoritmos e Estruturas de Dados 6
7 Sacos, implementação Vamos implementar a classe Bag<T> usando arrays redimensionáveis. Haverá um campo items, que é o array, e um campo size, que representa o número de elementos presentes no array: public class Bag<T> implements Iterable<T> private T[] items; private int size; //... Recorde que a capacidade do array está registada no membro length do array. 2/8/17 Algoritmos e Estruturas de Dados 7
8 Sacos, construtor Inicialmente, o array terá capacidade 1 e tamanho 0: public class Bag<T> implements Iterable<T> private T[] items; private int size; public Bag() items = (T[]) new Object[1]; size = 0; //... Note bem: criamos um array de objetos, e forçamos a conversão para array de T. 2/8/17 Algoritmos e Estruturas de Dados 8
9 Questão técnica: arrays genéricos Nós gostaríamos de ter programado a criação do array genérico items assim: items = new T[1]; No entanto, por razões técnicas, aceitáveis mas complicadas, o Java não permite a criação de arrays genéricos. Remedeia-se criando um array de objetos Object e forçando a conversão para o tipo de arrays pretendido. Em geral, forçar conversões de tipo é mau estilo. 2/8/17 Algoritmos e Estruturas de Dados 9
10 Supressão de avisos Como, forçar conversões é uma operação arriscada, o Java emite um warning: Evitamos o warning com uma public Bag() items = (T[]) new Object[1]; size = 0; Só usaremos o SuppressWarnings neste caso da construção de arrays genéricos! 2/8/17 Algoritmos e Estruturas de Dados 10
11 Redimensionamento Na verdade, não redimensionamos o array: criamos outro array com a capacidade pretendida e fazemos a com que a variável que apontava para o array original passe a apontar para o array novo: private void resize(int T[] temp = (T[]) new Object[capacity]; for (int i = 0; i < size; i++) Atenção: isto presume temp[i] = items[i]; que size <= capacity. items = temp; A memória do array original fica inacessível e será libertada automaticamente pelo garbage collector dentro em pouco. 2/8/17 Algoritmos e Estruturas de Dados 11
12 Método add Se, ao acrescentar um elemento ao saco, notarmos que já não há espaço no array, redimensionamo-lo para o dobro: public void add(t x) if (size == items.length) resize(2 * items.length); items[size++] = x; 2/8/17 Algoritmos e Estruturas de Dados 12
13 Métodos size e isempty Estes são muito simples: public int size() return size; public boolean isempty() return size == 0; 2/8/17 Algoritmos e Estruturas de Dados 13
14 O iterador Optamos por iterar pela ordem de entrada. Usamos uma classe interna: public class Bag<T> implements Iterable<T> //... private class BagIterator implements Iterator<T> private int i = 0; public boolean hasnext() return i < size; public T next() return items[i++]; public void remove() O método remove throw new UnsupportedOperationException(); não é suportado. 2/8/17 Algoritmos e Estruturas de Dados 14
15 O método iterator O método iterator apenas cria e retorna um objeto de tipo BagIterator: public Iterator<T> iterator() return new BagIterator(); Mais tarde, para, por exemplo, mostrar o conteúdo de saco de inteiros, b, faremos: for (int x: b) StdOut.println(x); 2/8/17 Algoritmos e Estruturas de Dados 15
16 Exemplo: problema dos estádios A federação tem a lista dos estádios, com nome, comprimento do relvado e largura do relvado. Pretende saber quais são os estádios com relvado de área máxima, de entre aqueles cujo relvado tem as dimensões regulamentares. Para a FIFA, o comprimento do relvado deve estar entre 90 e 120 metros e a largura entre 45 e 90 metros. Cada linha do ficheiro tem o nome (um cadeia de carateres sem espaços) o comprimento e a largura (ambos números inteiros). drag alg_arv light saintlouis alv_xxi Variante do problema usado em Laboratório de Programação 13/14. 2/8/17 Algoritmos e Estruturas de Dados 16
17 Classe Stadium Uma classe imutável, para representar estádios: public class Stadium private final String name; private final int length; private final int width; public static final int MIN_LENGTH = 90; public static final int MAX_LENGTH = 120; public static final int MIN_WIDTH = 45; public static final int MAX_WIDTH = 90; Stadium(String name, int length, int width) this.name = name; Note bem: por opção de desenho, os this.length = length; valores destes membros não podem this.width = width; mudar após a construção. //... 2/8/17 Algoritmos e Estruturas de Dados 17
18 Classe Stadium, continuação public class Stadium //... public int area() return length * width; public boolean islegal() return MIN_LENGTH <= length && length <= MAX_LENGTH && MIN_WIDTH <= width && width <= MAX_WIDTH; public static Stadium read() String s = StdIn.readString(); int u = StdIn.readInt(); int w = StdIn.readInt(); return new Stadium(s, u, w); Note bem: método estático. public String tostring() return name + " " + length + " " + width; Note bem: método redefinido. 2/8/17 Algoritmos e Estruturas de Dados 18
19 Classe do problema Usamos um saco de estádios. O saco é criado vazio (como todos os sacos) e depois é preenchido por leitura: public class StadiumProblem private Bag<Stadium> stadiums = new Bag<Stadium>(); public void read() while (!StdIn.isEmpty()) stadiums.add(stadium.read()); //... 2/8/17 Algoritmos e Estruturas de Dados 19
20 Estádios selecionados Os estádios selecionados também formam um saco: public class StadiumProblem //... public Bag<Stadium> selected() Bag<Stadium> result = new Bag<Stadium>(); int maxarea = -1; for (Stadium x: stadiums) if (x.islegal()) if (maxarea < x.area()) maxarea = x.area(); result = new Bag<Stadium>(); if (x.area() == maxarea) result.add(x); return result; De cada vez que surge uma nova área máxima, recomeça-se com um novo saco. //... 2/8/17 Algoritmos e Estruturas de Dados 20
21 Método solve Resolvemos o problema no método solve: public void solve() Bag<Stadium> solution = selected(); if (solution.isempty()) StdOut.println("(empty)"); else for (Stadium x : selected()) StdOut.println(x); A função de teste cria o objeto, lê e resolve: public static void testsolve() StadiumProblem sp = new StadiumProblem(); sp.read(); sp.solve(); A função main chama a função de teste: public static void main(string [] args) testsolve(); 2/8/17 Algoritmos e Estruturas de Dados 21
22 Diretoria work Tipicamente, guardaremos os nosso ficheiros de dados numa diretoria work, dentro do projeto, ao lado das diretorias bin e src (estas duas criadas pelo Eclipse). Nesse caso, podemos correr o programa a partir da diretoria work, redirigindo o input, assim, por exemplo: $ pwd /Users/pedro/Dropbox/AED_1516/ws2/Stadium $ ls bin src work $ cd work $ ls lz_in_01.txt lz_in_03.txt lz_in_05.txt lz_in_07.txt lz_in_02.txt lz_in_04.txt lz_in_06.txt lz_in_08.txt $ java -cp../../algs4.jar:../bin StadiumProblem < lz_in_01.txt saintlouis $ Também podemos redirigir o output, de maneira análoga, claro. 2/8/17 Algoritmos e Estruturas de Dados 22
23 Correndo na diretoria bin Alternativamente, podemos correr o programa na diretoria bin, como antes, tendo o cuidado de ir buscar o ficheiro à diretoria work: $ pwd /Users/pedro/Dropbox/AED_1516/ws2/Stadium $ ls bin src work $ cd bin $ java -cp../../algs4.jar:. StadiumProblem <../work/lz_in_07.txt (empty) $ java -cp../../algs4.jar:. StadiumProblem <../work/lz_in_08.txt arena stade_france millenium camp_nou bernabeu $ 2/8/17 Algoritmos e Estruturas de Dados 23
24 Custo do redimensionamento? Redimensionar o array que suporta o saco parece ser um grande trabalho suplementar. Será que é? Quando redimensionamos de N para 2N, quantos acessos se fazem aos arrays items e temp? O array temp é criado com 2N elementos e cada um deles tem de ser inicializado com null. Logo 2N acessos. A afectação temp[i] = items[i] faz-se N vezes. Logo, ao todo, mais 2N acessos. Portanto, ao redimensionar de 1 para 2, foram 4 acessos; de 2 para 4 foram 8 acessos;...; de N/2 para N foram 2N acessos. Portanto, se o array tiver N elementos e N for uma potência de 2, teremos usado N acessos só para o redimensionamento. Ora N = 4N 4. A estes há que somar os N acessos normais, para acrescentar no novo elemento ao saco. Logo, ao todo teremos tido 5N 4 acessos, para N elementos no array. Note que se tivéssemos alocado logo N elementos na criação, teria havido 2N acessos ao array, ao todo, mas em geral não sabemos o número de elementos exato, por isso, ao dimensionar por excesso logo de início pode acontecer trabalharmos mais do que ir redimensionando aos poucos. 2/8/17 Algoritmos e Estruturas de Dados 24
Algoritmos e Estruturas de Dados. Lição n.º 3 Coleções: sacos, pilhas e filas
Algoritmos e Estruturas de Dados Lição n.º 3 Coleções: sacos, pilhas e filas Coleções: sacos, pilhas e filas Especificação das coleções Classes iteráveis Sacos (em inglês bags) Implementação com arrays
Leia maisAlgoritmos e Estruturas de Dados. Lição n.º 4 Pilhas
Algoritmos e Estruturas de Dados Lição n.º 4 Pilhas Pilhas Implementação com arrays redimensionáveis. Implementação com listas ligadas. Aplicação: avaliação de expressões aritméticas usando o algoritmo
Leia maisOrientação a Objetos AULA 09
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
Leia maisIteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções
Implementação de Genéricos, Iteradores Isabel Harb Manssour Porto Alegre, maio de 2006 Roteiro Implementação de Genéricos Coleções Conceito de Genérico Implementação Iteradores Conceito Utilização ForEach
Leia mais2 Vectores de objectos
2 Vectores de objectos Agenda de contactos 3 Objectivo Manipular uma agenda de contactos. Descrição e Funcionalides Cada contacto na agenda caracteriza-se por um nome, um telefone e um e-mail. Na agenda,
Leia maisColeções. João Paulo Q. dos Santos
Coleções João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro Conceitos sobre coleções; Tipos de coleções; Como são classificadas; Exemplos. 04/02/14 2 Coleções Classes e interfaces do pacote java.util
Leia maisUNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas
UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
Variáveis e Métodos de Classe Em Java, quer as classes quer as instâncias das classes são objectos. Onde está o estado da classe? Com que operações é manipulado? UBI, Departamento de Informática T04-1
Leia maisExercício de Estrutura de dados. Java Fila
Exercício de Estrutura de dados Java Fila Obs.: Esse projeto foi um exercício realizado em sala de aula da matéria de Estrutura de dados com o Profº Frederico Augusto Siqueira Gentil Aqui está sendo relatado
Leia maisIterator. Professor: Hyggo Almeida
Professor: Hyggo Almeida Utilização de estruturas de dados Vector, ArrayList, HashSet,... Vector collection; public void classexusando(vector col){... ArrayList collection; public void classewusando(arraylist
Leia mais4 Conceito de Herança
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Leia maisEstruturas de Dados Encadeadas
CURSO: Ciência da Computação DATA: / / 2016 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 14 APRESENTAÇÃO Na aula de hoje vamos apresentar e discutir conceitos
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
Java Collections Framework (JCF) Uma coleção (collection) é um objeto que agrupa vários elementos. A JCF consiste numa arquitetura para representação e manipulação de coleções. Contém: - Um conjunto de
Leia maisProva 2 PMR2300 1o. semestre 2015 Prof. Thiago Martins
Prova PMR00 o. semestre 0 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço.. ( pontos) Um heap binário é uma árvore binária completa (todos os níveis exceto o último
Leia maisCollections Framework
Collections Framework 1 Arrays p Manipular array é bastante trabalhoso. p Dificuldades aparecem em diversos momentos: n não podemos redimensionar um array em Java; n é impossível buscar diretamente por
Leia maisProva 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins
Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. Os códigos fornecidos na seção Códigos-fonte de apoio podem ser referenciados
Leia maisGenerics POO. Prof. Marcio Delamaro
Generics POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/39 O que são Tipos genéricos São uma forma de definir e utilizar classes de forma genérica Dá flexibilidade
Leia maisAPI e Coleções Java. Sérgio Luiz Ruivace Cerqueira
API e Coleções Java Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Java API Introdução API Endereço http://download.oracle.com/javase/6/docs/api/ API - Descrição API - Resumo API - Detalhes Coleções
Leia maisGenéricos. Profa. Thienne Johnson EACH/USP
Genéricos Profa. Thienne Johnson EACH/USP Java, como programar, 6ª edição Deitel & Deitel Capítulo 18 Material complementar http://wps.prenhall.com/br_deitel_comoprogra_6/ Todas as classes em Java herdam,
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos Engenharia da Computação Professor: Rosalvo Ferreira de Oliveira Neto Dados Pessoais Rosalvo Ferreira de Oliveira Neto MSc. em ciência da computação (UFPE) rosalvo.oliveira@univasf.edu.br
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Leia maisGrupo 2 - Implementação de uma classe simples
Exame Modelo Estruturas de Dados 2018/2019 Junho de 2019 Duração: 2h30m + 30m Número mecanográco: Nome completo do estudante: Grupo 1 - Fundamentos de Java 1.1. Escreva pequenos excertos de código para
Leia maisLinguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Criando objeto Definindo valores para os atributos do objeto Método construtor Definindo valores padrão para os atributos dos
Leia maisParadigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
Leia maisA classe ArrayList. IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
A classe ArrayList Java oferece uma classe chamada ArrayList, que permite a criação e manipulação de objetos; Um objeto ArrayList é semelhante a um vetor de objetos, mas oferece inúmeras vantagens em relação
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Leia maisParadigmas de Programação
Tipos Abstractos de Dados (ADT) Estruturas construídas para armazenar determinados tipos de dados e que especificam operações que permitem a manipulação desses dados. Estudaremos duas das mais simples
Leia maisProgamaçãoOrientada pelos Objetos B. Vectores
ProgamaçãoOrientada pelos Objetos B Vectores 2 Introdução aos vectoresem Java Os slidesseguintes são utilizados na disciplina de Introdução à Programação da LEI 3 Estação Meteorológica Vectores 4 Neste
Leia maisApêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são:
Apêndice A Classe Vector A classe Vector permite a representação de um vetor de dados de maneira similar à de um array, visto na disciplina Programação Orientada a Objetos I, mas com maior flexibilidade.
Leia maisInterfaces POO. Prof. Marcio Delamaro
Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso
Leia maisProf. Fernando V. Paulovich 8 de novembro de SCC Programação Orientada a Objetos
Coleções a Tipos Genéricos em Java SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação
Leia maisLista encadeada class No { Coleções. Enumeration. Lista encadeada (continuação) Enumeration Exemplo usando a classe Lista anterior
Coleções Retirado do Tutorial Java class Lista { No inicio = null; Lista encadeada class No { void insereinicio(object obj) { No n = new No(obj, inicio); inicio = n; Object obj; No prox; No(Object obj,
Leia maisProgramação Orientada pelos Objetos B. Desenvolvimento orientado pelos objectos
Programação Orientada pelos Objetos B Desenvolvimento orientado pelos objectos 2 Slides elaborados pelos Professores Miguel Goulão e Adriano Lopes, no âmbito do ensino da programação orientada pelos objectos
Leia maisExame de Estruturas de Dados 2010.Junho.26
Exame de Estruturas de Dados 2010.Junho.26 Duração: 2:30 horas Valorização: 12 valores. 1. Responda às seguintes questões: a) Faça o estudo da complexidade do seguinte método: 1. void fun2(int n, int v[])
Leia maisAlgoritmos e Estruturas de Dados 2009/2010
Listas Algoritmos e Estruturas de Dados 2009/2010 Tipo de Dados Abstracto TDA conjunto de objectos + conjuntos de operações constituem uma abstracção matemática em C++ são implementados por classes; as
Leia maisProgramação Java Aula 04
Programação Java Aula 04 Tópicos da aula Declarar e instanciar arrays. Popular e percorrer arrays. 2 Vetor (array) (1) Declarando um vetor de inteiros: int[] idades = new int[10]; O int[] é um tipo. Uma
Leia maisProva 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins
Prova PMR0 o semestre 0 Prof Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço ( pontos) Uma árvore binária de busca é uma árvore binária na qual para qualquer sub-árvore
Leia maisAlgoritmos e Estruturas de Dados. Lição n.º 1 Algoritmos e Estruturas de Dados
Algoritmos e Estruturas de Dados Lição n.º 1 Algoritmos e Estruturas de Dados Algoritmos e Estruturas de Dados Logística Tecnologia Aulas Avaliação Programa da cadeira O ambiente de programação 20140210
Leia maisNotas de Aula 07: vetores de objetos e coleções
Notas de Aula 07: vetores de objetos e coleções Objetivos da aula: Entender a sintaxe de vetores em Java Compreender o uso do vetor como um objeto Uso das coleções em Java Recordando... Na aula passada
Leia maisJAVA. José de Siqueira UFMG - ICEx - DCC
ESTRUTURAS DE DADOS JAVA BÁSICAS EM José de Siqueira UFMG - ICEx - DCC 1 o semestre de 2005 O Tipo Abstrato de Dados Pilha O TAD pilha tem quase as mesmas operações apresentadas anteriormente: 1. empilha(o):
Leia maisListas Ligadas, Pilhas e Filas
Listas Ligadas, Pilhas e Filas Pedro Ribeiro DCC/FCUP 2017/2018 (baseado e/ou inspirado parcialmente nos slides de Luís Lopes e de Fernando Silva) Pedro Ribeiro (DCC/FCUP) Listas Ligadas, Pilhas e Filas
Leia maisImplementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação
Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação Introdução Além de utilizar as classes presentes na biblioteca padrão, programadores podem definir suas próprias
Leia maisPCC104 - Projeto e Análise de Algoritmos
PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 31 de outubro de 2017 Marco Antonio
Leia maisPilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I
Pilhas e Filas Encadeadas Algoritmos e Estruturas de Dados I Pilha Lista linear: pilha Represente graficamente o funcionamento da pilha, representando a pilha vazia, a entrada e a saída de elementos Quais
Leia maisInput / Output na linguagem java. Para isso usamos um dos construtores da classe java.io.file:
Input e Output 1 A classe File Input / Output na linguagem java Antes de podermos ler/escrever de/para um ficheiro temos que criar um objecto do tipo File e associar esse objecto ao ficheiro a que queremos
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem
Leia maisAnálise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 05 Padrões GoF (Singleton e Iterator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype
Leia maisProgramação com genéricos
Programação com genéricos Laboratório de Programação Pedro Vasconcelos, DCC/FCUP Fevereiro 2015 Tipos genéricos tipos genéricos permitem definir classes ou interfaces que são parameterizadas por outras
Leia maisTipos de Dados Abstratos
Tipos de Dados Abstratos Algoritmos e Estruturas de Dados Verão 2012 1 Tipos Abstratos Um tipo abstrato é: um tipo genérico de dados, dos quais não se conhece os valores uma interface que define os acessos
Leia maisConstrutores e Especificadores de Acesso
Construtores e Especificadores de Acesso Professora: Fátima L. S. Nunes 1 1 1 Orientação a Objetos Conceitos do Paradigma de Orientação a Objetos já vistos: Classes atributos e métodos Objetos instanciação
Leia maisUNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o.
CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 07 APRESENTAÇÃO Nesta aula vamos discutir como implementar um tipo abstrato
Leia maisAlgoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):
Algoritmos e Programação 2 Baseado no material do Prof. Júlio Machado Objetos e Classes em Java Revisão Classes: encapsulam dados (atributos) e operações sobre os dados (métodos) Objetos: instâncias de
Leia maisLinguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa
Leia maisRecursividade UFOP 1/48
BCC 201 - Introdução à Programação I Recursividade Guillermo Cámara-Chávez UFOP 1/48 Introdução I Recursividade: é um método de programação no qual uma função pode chamar a si mesma Muitas estruturas têm
Leia maisProgramação Imperativa. Lição n.º 16 A pilha de execução
Programação Imperativa Lição n.º 16 A pilha de execução A pilha de execução Registos de execução. Arrays locais. Caso da alocação dinâmica. Segmento de dados. 11/17/16 Programação Imperativa 2 A pilha
Leia maisTabelas de Dispersão. Tabela de Dispersão
Tabelas de Dispersão Sumário Definição. Características. Resolução de colisões: dispersão aberta e dispersão fechada. Teste quadrático. Desempenho de tabelas de dispersão. Interface de tabela de dispersão.
Leia maisPedro Vasconcelos DCC/FCUP. Programação Funcional 17 a Aula Tipos abstratos
Programação Funcional 17 a Aula Tipos abstratos Pedro Vasconcelos DCC/FCUP 2014 Tipos concretos Até agora definimos um novo tipo de dados começando por listar os seus construtores. data Bool = False True
Leia maisRecapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }
Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação
Leia maisEspecificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)
Mecanismos de controlo de acesso Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a cada classe e cada membro da classe (dados e métodos) Modificadores de acesso: public protected private
Leia maisProgramação Orientada a Objetos com Java. Prof. Júlio Machado
Programação Orientada a Objetos com Java Prof. Júlio Machado julio.machado@pucrs.br HERANÇA Herança Herança é uma relação de generalização/especialização entre classes A ideia central de herança é que
Leia maisDesenvolvimento e Projeto de Aplicações Web
Desenvolvimento e Projeto de Aplicações Web cecafac@gmail.com Coleções Conteúdo 1 Introdução Desde a versão 1.2 do JDK, a plataforma J2SE inclui um framework de coleções (Collections) Uma coleção é um
Leia maisProgramação Funcional 13 a Aula Tipos abstratos
Programação Funcional 13 a Aula Tipos abstratos Sandra Alves DCC/FCUP 2018/19 Tipos concretos Até agora definimos um novo tipo de dados começando por listar os seus construtores. data Bool = False True
Leia mais9 Classes Abstractas e Interfaces
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisColeções. Prof. Marcelo Roberto Zorzan
Coleções Prof. Marcelo Roberto Zorzan Coleções Aula de Hoje Introdução Coleções podem representar estruturas de dados complexas de forma transparente para o programador. Exemplos: Músicas favoritas armazenadas
Leia maisAnálise de Programação
Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou
Leia maisAlgoritmos e Estruturas de Dados
Pilhas e Filas Algoritmos e Estruturas de Dados 009/00 Obs: slides marcados com (*) não foram apresentados na aula teórica, mas são parte da bibliografia a estudar! Pilhas Pilha estrutura de dados linear
Leia maisProgramação por Objectos. Java
Programação por Objectos Java Parte 5: Associações LEEC@IST Java 1/32 Associação revisão Uma associação representa uma referência entre objectos. Numa associação são definidos: Identificador termo descritivo
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Subtipagem e Coringas Lista é subtipo de Lista para qualquer T Não podemos chamar métodos em Lista
Leia maiscapta a noção elementar de ordemde chegada no processamento de tarefas, além da ordem de chegada é típico atender à prioridade
Fila de Prioridade (1) Fila capta a noção elementar de ordemde chegada no processamento de tarefas, além da ordem de chegada é típico atender à prioridade Fila de prioridade objectos na fila têmum número
Leia maisColeções em Java. Prof. Gustavo Willam Pereira ENG10082 Programação II. Créditos: Prof. Clayton Vieira Fraga Filho
Coleções em Java Prof. Gustavo Willam Pereira ENG10082 Programação II Créditos: Prof. Clayton Vieira Fraga Filho Introdução O que é uma coleção? Um objeto que agrupa múltiplos elementos em uma única unidade
Leia maisJava API. Giuliana Silva Bezerra
Java API Giuliana Silva Bezerra Leitura e escrita de arquivos Java.io.file Escrita de arquivos Java.io.PrintWriter 1. Criar instância de Java.io.PrintWriter PrintWriter saida = new PrintWriter( Diretorio
Leia maisJava Collections Framework II
Java Collections Framework II Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4 Gilad Bracha, Generics in the Java Programming Language a.k.a The
Leia maisTipos Abstractos de Dados (TADs) e Java
Tipos Abstractos de Dados (TADs) e Java Neste capítulo apresentamos a metodologia de desenvolvimento dos TADs em Java, introduzimos o conceito de estrutura linear e sua implementação utilizando a estrutura
Leia maisListas Ligadas, Pilhas e Filas
Listas Ligadas, Pilhas e Filas Pedro Ribeiro DCC/FCUP 2017/2018 (baseado e/ou inspirado parcialmente nos slides de Luís Lopes e de Fernando Silva) Pedro Ribeiro (DCC/FCUP) Listas Ligadas, Pilhas e Filas
Leia maisDepartamento de Ciência de Computadores Estruturas de Dados (CC114)
1. Cotação de cada pergunta: 1. 32 / 2. 36 / 3. 32 (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame distribuídas. 1. (Valorização: 32%) Responda às seguintes questões:
Leia maisPolimorfismo: aprendendo a prever o futuro. Polimorfismo: aprendendo a prever o futuro. Definições (2/5) Definições Tipos de Polimorfismo
Polimorfismo: aprendendo a prever o futuro BSI Bacharelado em Sistemas de Informação LOO Linguagens Orientadas a Objetos Sumário Definições Tipos de Polimorfismo Dicas para o Polimorfismo Eficaz Armadilhas
Leia maisif (umobjecto!= null && umobjecto instanceof CartaoFidelidade){ titular.equals(((cartaofidelidade) umobjecto).titular) &&
P. Fazendeiro & P. Prata POO - TP03 / 25 _ [... //classe CartaoFidelidade: alguns métodos adicionais] public boolean equals(object umobjecto){ if (umobjecto!= null && umobjecto instanceof CartaoFidelidade){
Leia maisAlgoritmos e Estruturas de Dados 2005/2006
Pilhas e Filas Algoritmos e Estruturas de Dados 005/006 Pilhas Pilha estrutura de dados linear em que a inserção e a remoção de elementos de uma sequência se faz pela mesma extremidade, designada por topo
Leia maisESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA (ABORDAGEM RECURSIVA)
ESTRUTURAS DE DADOS E ALGORITMOS 1 LISTA LIGADA (ABORDAGEM RECURSIVA) Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande QUESTÕES DE IMPLEMENTAÇÃO Implementacao
Leia maisProgramação Orientada por Objectos 2007/2008
Programação Orientada por Objectos 2007/2008 Segundo Teste, 30/6/2008, Duração 1h30 (20 valores) 1 [2v] Considere que pretende desenvolver uma função num jogo que trata uma colisão entre dois objectos
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisAlgoritmos e Estruturas de Dados. Lição n.º 22 Árvores binárias de busca
Algoritmos e Estruturas de Dados Lição n.º 22 Árvores binárias de busca Árvores binárias de busca Árvores binárias de busca. Árvores equilibradas Outras classes de árvores. 20140521 Algoritmos e Estruturas
Leia maisDepartamento de Ciência de Computadores Estruturas de Dados (CC114)
1. Cotação de cada pergunta: 1. 30 / 2. 40 / 3. 30 (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame distribuídas. 1. (Valorização: 30%) Responda às seguintes questões:
Leia maisAlgoritmos e Estruturas de Dados 2006/2007
Listas Algoritmos e Estruturas de Dados 2006/2007 Tipo de Dados Abstracto TDA conjunto de objectos + conjuntos de operações constituem uma abstracção matemática em C++ são implementados por classes; as
Leia maisGenéricos by Pearson Education do Brasil
1 18 Genéricos 2 OBJETIVOS Neste capítulo, você aprenderá: Como criar métodos genéricos que realizam tarefas idênticas em argumentos de diferentes tipos. Como criar uma classe Stack genérica que pode ser
Leia maisStrings e Arrays POO
Strings e Arrays POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/27 String Uma sequência de caracteres que representa uma informação textual Em Java existe um
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos Aula 11 Collections Professores: Elaine Araújo/ Rhavy Maia Baseado no material de aula do professor Frederico Costa Guedes Pereira Introdução Arrays podem dar trabalho...
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Tipos Parametrizados ou Genéricos Os tipos parametrizados ou genéricos são a solução para esse problema
Leia maisArray em Java. Figura 1 - Exemplo de um array de inteiros
Array em Java 1. Objetivos Nesta lição, abordaremos Array em Java. Primeiro, definiremos o que é array e, então, discutiremos como declará-los e usá-los. Ao final desta lição, o estudante será capaz de:
Leia maisProgramação com Objectos. 2º Teste 2015/2016 1º Semestre
1/7 2015/2016 1º Semestre 13 de Janeiro de 2016, 18:30 (120 minutos) 2º Teste Nome: Número: Primeira Parte (3 valores) PERGUNTA RESPOSTA Segunda Parte (7 valores) PERGUNTA 1.1 2.1 1.2 2.2.1 1.3 2.2.2 1.4
Leia maisTipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Leia maisTipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Leia maisLinguagem de Programação Orientada a Objeto Construtores e Sobrecarga
Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga Professora Sheila Cáceres Sobrecarga (overloading) Na mesma classe podemos definir vários métodos com o mesmo nome Sobrecarga O tipo
Leia maisProgramação Orientada por Objectos 2010/11. 2º Exame 28 de Junho de 2011
Programação Orientada por Objectos 2010/11 2º Exame 28 de Junho de 2011 Instruções (leia com cuidado): Escreva de forma CLARA o seu nome e número em todas as folhas. O exame contém 8 páginas dividido em
Leia maisJava First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.
Java First-Tier: plicações Orientação a Objetos em Java (III) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Herança: Simples Múltipla O tipo de herança que usamos até agora é chamado
Leia maisALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados
ALGORITMOS Professor: Diego Oliveira Aula 06 - Tipos Primitivos de Dados Netbeans Para testar nossos exemplos criaremos uma classe no Netbeans Nesta disciplina não será visto nada de orientação a objetos,
Leia maisTipo de Dados Abstracto
Listas Algoritmos e Estruturas de Dados 2005/2006 Tipo de Dados Abstracto TDA conjunto de objectos + conjuntos de operações constituem uma abstracção matemática em C++ são implementados por classes; as
Leia mais