Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.

Slides:



Advertisements
Apresentações semelhantes
Programação orientada a objetos
Advertisements

Programação em Java Prof. Maurício Braga
Recursividade Inhaúma Neves Ferraz
Programação Orientada a Objetos*
Programação em Java Prof. Maurício Braga
Estruturas de Repetição
Prof. Thiago Pereira Rique
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Generalização, Especialização e Conceitos
Programação Básica em Java
Walfredo Cirne walfredo.dsc.ufpb.br
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Wagner Santos C. de Jesus
Membros estáticos.
Orientação a Objetos Classes
A linguagem C#.
Métodos Programação II 1 Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre Elementos de Classe, class wrappers.
Classes e objetos Arrays e Sobrecarga
Estrutura de Dados em Java
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
Tópicos Tipos de Dados Variáveis por Valor Variáveis por Referência
CRIANDO OBJETOS EM JAVA
Tipos Agregados Homogêneos e Listas
Programação Orientada a Objetos com Java
Programação I Aula 2 (Métodos)
Linguagem técnica de programação I Java
Entendendo as definições de classe
Introdução à Programação Orientada a Objetos com Java
Classes, Objetos, Atributos e Métodos JAVA
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Classes Abstratas e Interfaces.
Aula 3 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.
Orientação a Objetos e Java Graduação em Ciência da Computação
Paulo Borba Centro de Informática Universidade Federal de Pernambuco
Pilhas Profa. Nádia Félix.
Listas Simplesmente Encadeadas
Wagner Santos C. de Jesus
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
Programação Orientada a Objetos - Java
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Programação Orientada a Objetos - Java
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Orientação a Objetos usando Java
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Aula Prática 4 Monitoria IP/CC (~if669).
Implementação Orientada a Objetos – Aula 05 Construtores e sobrecarga de métodos Prof. Danielle Martin Universidade de Mogi das Cruzes
Polimorfismo.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Estrutura de Controle em JAVA
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
M ÉTODOS DA C LASSE S TRING. FUNÇÕES COM STRING Uma string é um tipo texto que corresponde à união de um conjunto de caracteres. Em Java, as strings são.
Linguagem I Strings.
Programação I Aula 4 (Expressões Booleanas e Expressões de Seleção) Prof. Gilberto Irajá Müller Última atualização 17/3/2009.
Aula Prática 5 05/05/2010. //Estrutura do método public int subtrair (int a, int b){ //Calcule a operação desejada. int resultado = a – b; //Retorne o.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Programação I Aula 11 (Arrays de Objetos) Prof. Gilberto Irajá Müller Última atualização 27/5/2009.
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Bruno Inojosa MCP .NET Framework
Prof. Marcos LABORATÓRIO DE PRÁTICA DE PROGRAMAÇÃO 06.
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Laboratório de Programação II Método main Dados e Métodos de Classes.
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Noções de projeto orientado a objetos - camadas Prof. Gustavo Wagner (alterações) Prof. Tiago Massoni (Slides originais) Desenvolvimento de Sistemas FATEC-PB.
Strings e Arrays Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Transcrição da apresentação:

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de parâmetros, Arrays e Listas

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis estáticas versus atributos Enquanto cada instância da classe (objeto) tem seus próprios atributos, variáveis estáticas (ou de classe) são compartilhadas por todas as instâncias da classe

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Exemplo: classe Contas com um gerador de números de conta prox_num = 132

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Em Java... class ContaComGerador { private int numero; private double saldo; private static int prox_num = 1; void credito... ContaComGerador () { numero = prox_num; saldo = 0; prox_num = prox_num + 1; } }

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Métodos estáticos e mensagens Da mesma forma que há variáveis estáticas (de classe) e variáveis de instância (atributos), há métodos estáticos (de classe) e métodos de instância (mensagens) Um exemplo de mensagem é o método que retorna o atributo saldo na classe Conta Mesmo que presente na mesma classe dos atributos, um método estático não tem acesso a estes Um método estático pode ser acrescentado à classe ContaComGerador para retornar o valor corrente de prox_num

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Os métodos de um “programa” são sempre estáticos class Maior { private static int maior (int x, int y) { if (x > y) return x; else return y; } public static void main (String [] args) { int m, x, y; x = Util.readInt(); y = Util.readInt(); m = maior (x,y); System.out.println(m); }

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Passagem de parâmetro Em Java, a passagem é por valor, ou seja, o valor (e não o endereço) da variável é passado. Conseqüências: - Modificações no parâmetro formal não são refletidas no parâmetro real. - Uma expressão pode ser usada como argumento - Ineficiência em alguns casos (cópia)

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Exemplo class PassagemPorValor { private static void incrementa (int x) { x = x + 1; System.out.println (“x = ” + x); } public static void main (String [] args) { int y = 1; System.out.println(“y = ” + y); incrementa (y); System.out.println(“y = ” + y); }

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. O resultado desejado pode ser obtido assim... class PassagemPorValor { private static int incrementa (int x) { x = x + 1; System.out.println (“x = ” + x); return x; } public static void main (String [] args) { int y = 1; System.out.println(“y = ” + y); y = incrementa (y); System.out.println(“y = ” + y); }

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Aliasing Aliasing ocorre quando mais de um identificador está associado a um mesmo endereço de memória Apesar da passagem de parâmetros em Java ser por valor, pode-se ter aliasing quando um objeto é passado como parâmetro É sempre a referência ao objeto que é passada (por valor) e não o objeto em si

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Exemplo de aliasing em Java class Aliasing { private static void credita (Conta a, Conta b) { a.credito(100); b.credito(100); } public static void main (String [] args) { Conta c = new Conta(“ ”); credita (c, c); System.out.println(c.saldo()); }

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Aliasing também pode ocorrer em Java como conseqüência de uma atribuição... Atribuição de um identificador de objeto a um outro de mesmo tipo é permitido, mas o endereço (e não o valor) é atribuído. Exemplo... Conta a = new Conta(“123-4”); Conta b; b = a; \\ a e b passam a referenciar a mesma conta b.credito (100); System.out.println (a.saldo());...

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Mas a referência é passada por valor... class Referencia { private static void redefine(Conta a) { Conta b = new Conta(“567-8”); a.credito(100); a = b; a.credito(100); } public static void main (String [] args) { Conta c = new Conta(“123-4”); redefine (c); System.out.println(c.numero() + c.saldo()); }

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Arrays Estrutura de dados que permite agrupar variáveis de um mesmo tipo Declaração [] exemplo: int [] a; Criação = new [ ]; exemplo: a = new int [12]; (Indexado de 0 a 11) Combinando declaração e criação [] = new [ ]; exemplo: int [] a = new int [12];

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Inicialização de arrays Arrays podem ser inicializados no momento de sua declaração: [] = {e 1,..., e n }; Exemplo: a declaração String [] cores = { “verde”, “azul”, “preto” }; equivale a String [] cores = new String [3]; cores [0] = “verde”; cores [1] = “azul”; cores [2] = “preto”;

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Tamanho de um array Se a é um identificador de array, a.length dá o tamanho de a Exemplo: o método a seguir imprime um array de inteiros de tamanho arbitrário static void imprime (int [] a) { for (int i = 0; i < a.length; i = i + 1) System.out.println (a[i]); }

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Classe de Bancos: Operações cadastro de uma nova conta crédito débito saldo transferência entre contas

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Classe de Bancos: Descrição class Banco { private Conta[] contas; private int indice = 0; void cadastro(Conta c) { contas[indice] = c; indice = indice + 1; }

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. private Conta procura(String n) { int i = 0; boolean achou = false; while ((! achou) && (i < indice)) { if (contas[i].numero().equals(n)) achou = true; else i = i + 1; } if (achou) return contas[i]; else return null; }

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. void debito(String num, double val) { Conta c; c = this.procura(num); if (c != null) c.debito(val); else System.out.println("Conta inexistente!"); } A operação credito é similar

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Exercício Completar a implementação da classe Banco com o construtor e os métodos transfere e saldo. Acrescente um novo método para remover uma conta

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Exercício Desenvolva um sistema simples de eleição, usando a classe já implementada para modelar um candidato. Definir uma outra classe para agrupar candidatos (usando arrays). Elabore um programa que lê um número arbitrário de nomes de candidatos e efetua a contagem; no final, indique o vencedor e o total de votos.

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Exercício Desenvolva um sistema simples para controle de estoque, contendo pelo menos as classes Produto e Estoque, e as seguintes operações: alterar as propriedades dos produtos (nome, preço, quantidade em estoque), retirar um produto do estoque, e verificar que produtos precisam ser repostos.

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Leitura Livro texto (Programming in Java) Capítulos 2 (2.9) e 5 ( )

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Listas e Banco Usando Listas

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Lista Encadeada de Contas null

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Listas de Contas: Operações inserir retirar procura

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Listas de Contas: Descrição class Lista { private Conta conta; private Lista prox; void inserir (Conta c) { if (this.conta == null) { this.conta = c; prox = new Lista(); } else prox.inserir(c); }

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. void retirar (Conta c) { if (conta != null) { if (conta == c) { this.conta = prox.conta; this.prox = prox.prox; } else prox.retirar(c); } else System.out.println(“Conta Inexistente”); }

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Conta procura (String num) { if (conta == null) return null; else { if (conta.numero().equals == num) return conta; else return prox.procura(num) }

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Banco: Descrição Modular class BancoModular { private Lista contas = new Lista(); void cadastro(Conta c) {contas.inserir(c);} void debito(String num, double val) { Conta c; c = contas.procura(num); if (c != null) c.debito(val); else System.out.println("Conta inexistente!"); }

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Exercícios Completar a implementação da classe BancoModular com os métodos transfere e saldo. Compare as duas implementações de bancos: Banco e BancoModular. Um usuário perceberia alguma diferença entre elas? Quais as vantagens e desvantagens de cada abordagem?

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Exercício Suponha que, por questões de eficiência, temos que modificar a maneira como as contas são armazenadas no banco. Qual implementação de bancos seria mais facilmente modificada: Banco ou BancoModular?

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Exercício Modifique o sistema de eleição para agrupar candidatos em uma lista (ao invés de em um array). Modifique o sistema de estoque de forma análoga

Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Leitura Livro texto (Programming in Java) Capítulos 2 (2.9) e 5 ( )