A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aula Sobre uso de Classes e Objetos Renata Pontin de Mattos Fortes 2006.

Apresentações semelhantes


Apresentação em tema: "Aula Sobre uso de Classes e Objetos Renata Pontin de Mattos Fortes 2006."— Transcrição da apresentação:

1 Aula Sobre uso de Classes e Objetos Renata Pontin de Mattos Fortes renata@icmc.usp.br 2006

2 2 Roteiro Criar Objetos A classe String Packages Formatando Saída Tipos Enumerados Classes Wrapper

3 3 Programas interativos os programas geralmente precisam de entrada de dados para rodar a classe Scanner fornece métodos convenientes para ler valores de entrada de vários tipos um objeto Scanner pode ser setado par ler a entrada de diversas origens, incluindo o usuário digitando valores do teclado a entrada do teclado é representada pelo objeto System.in

4 4 Ler da entrada a seguinte linha cria um objeto Scanner que lê do teclado: Scanner scan = new Scanner (System.in); o operador new cria o objeto Scanner, chamado scan após criado, o objeto Scanner pode ser usado para chamar vários métodos de entrada, como por exemplo: answer = scan.nextLine();

5 5 Ler da entrada a classe Scanner é parte da biblioteca java.util, e deve ser importada no programa para ser usada o método nextLine lê todas as entradas até que o fim-de-linha seja encontrado

6 6 Tokens de entrada a menos que especificado de outra forma, os espaços em branco são usados para separar elementos (chamados tokens) de entrada espaços em branco incluem: o caracter de espaço, tabs, caracter de new line o método next da classe Scanner lê o próximo token de entrada e o retorna como um string os métodos como nextInt e nextDouble lêem os dados de tipos particulares

7 7 Criando Objetos uma variável armazena ou um tipo primitivo ou uma referência para um objeto Um nome de classe pode ser usado como um tipo para declarar uma variável de referencia a objeto String title; Nenhum objeto é criado com esta declaração Uma variável de referencia a objeto armazena o endereço de um objeto. O objeto em si deve ser criado separadamente

8 8 Criando Objetos Geralmente, usamos o operador new para criar um objeto String title = new String ( Oi ""); chama o construtor de String, que é um Método especial que inicializa o objeto Criar um objeto é também conhecido por instanciar um objeto é uma instância de uma certa classe

9 9 Chamada de métodos Uma vez que um objeto esteja instanciado, podemos usar o operador PONTO para chamar seus métodos count = title.length() Um método pode retornar um valor, que pode ser usado em um atribuição ou expressão Uma chamada de método pode ser pensada como um pedido pra um objeto realizar um serviço

10 10 Referências Note que uma variável primitiva pode conter o valor em si, mas uma variável de objeto contém o endereço do objeto Uma referência a objeto pode ser pensada como um ponteiro para a localização do objeto "Silvia Silva" nome1 num1 38

11 11 Atribuição A ação de atribuição toma uma cópia de um valor e o armazena em uma variável Para tipos primitivos: num1 38 num2 96 antes: num2 = num1; num1 38 num2 38 depois:

12 12 Atribuição por referência Para referência a objetos, a atribuição copia o endereço: nome2 = nome1; nome1 nome2 antes: "Silvia Silva" "Saulo Saul" nome1 nome2 depois: "Silvia Silva"

13 13 Apelidos (aliases) Duas ou mais referências que se referem ao mesmo objetos são denominados de aliases entre si Assim, temos uma situação interessante: um objeto pode ser acessado usando múltiplas variáveis de referencia. Aliases podem ser úteis, mas devem ser utilizados cuidadosamente Modificar um objeto através de um referência modifica para todos os seus aliases, porque existe realmente somente um objeto

14 14 Coleta de lixo – (Garbage Collection) Quando um objeto deixa de possuir referências válidas para ele, ele não pode ser mais acessado pelo programa o objeto é inútil, e portanto é chamado de lixo (garbage) Java realiza periodicamente coleta de lixo automática, retornando uma memória de objeto para o sistema para uso futuro Em outras linguagens, o programador é responsável por realizar a coleta de lixo.

15 15 A classe String porque strings são MUITO comuns, não temos que saur o operador new para criar um objeto String String titulo = "Aula POO!"; Esta sintaxe especial funciona somente para strings Cada literal string (delimitada por aspas duplas) representa um objeto String

16 16 Métodos de String Uma vez que um objeto String tenha sido criado, o seu valor nem seu tamanho podem ser modificados Portanto, dizemos que um objeto da classe String é imutável porém, vários métodos da classe String retornam novos objetos String que são versões modificadas do original

17 17 Índices de String Algumas vezes é útil referenciar um determinado caractere de uma string Isso pode ser feito especificando-se o índice numérico do caractere na string Os índices começam no ZERO em cada string Na string "Hello", o caractere 'H' está no índice zero, 0, e o 'o' está no índice 4

18 18 //************************************************************* public class StringMutation { public static void main (String[] args) { String frase = Change is inevitable"; String mutation1, mutation2, mutation3, mutation4; System.out.println (Original : \"" + frase + "\""); System.out.println (tamanho da string " + frase.length()); mutation1 = frase.concat (", except from vending machines."); mutation2 = mutation1.toUpperCase(); mutation3 = mutation2.replace ('E', 'X'); mutation4 = mutation3.substring (3, 30); System.out.println ("Mutation #1: " + mutation1); System.out.println ("Mutation #2: " + mutation2); System.out.println ("Mutation #3: " + mutation3); System.out.println ("Mutation #4: " + mutation4); System.out.println ("Mutated length: " + mutation4.length()); } //************************************************************* public class StringMutation { public static void main (String[] args) { String frase = Change is inevitable"; String mutation1, mutation2, mutation3, mutation4; System.out.println (Original : \"" + frase + "\""); System.out.println (tamanho da string " + frase.length()); mutation1 = frase.concat (", except from vending machines."); mutation2 = mutation1.toUpperCase(); mutation3 = mutation2.replace ('E', 'X'); mutation4 = mutation3.substring (3, 30); System.out.println ("Mutation #1: " + mutation1); System.out.println ("Mutation #2: " + mutation2); System.out.println ("Mutation #3: " + mutation3); System.out.println ("Mutation #4: " + mutation4); System.out.println ("Mutated length: " + mutation4.length()); }

19 19 Bibliotecas de Classes Uma biblioteca de classes (class library) é uma coleção de classes que podem ser usadas quando desenvolvendo programas; a biblioteca padrão de Java é parte de qualquer ambiente de desenvolvimento Java Suas classes não são parte da linguagem Java por si, mas contamos bastante com elas System e String estão na biblioteca padrão Java Outras bibliotecas de classes podem ser obtidas de vendedores ou você pode criar

20 20 Pacotes - Packages as classes da biblioteca padrão Java estão organizadas em packages Alguns dos packages da biblioteca padrão são : Package java.lang java.applet java.awt javax.swing java.net java.util javax.xml.parsers Propósito Suporte geral Criar applets para web Gráficos e interfaces gráficas com usuário Capacidades gráficas adicionais Comunicação de rede Utilidades Processamento de documentos XML

21 21 A declaração import Quando se quer usar uma classe de um package, você pode usar seu nome qualificado completamente: java.util.Scanner Ou pode importar a classe, e então simplesmente usar o seu nome de classe import java.util.Scanner; Para importar todas as classes de um pacote, deve-se usar o caractere * import java.util.*;

22 22 A declaração import Todas as classes do package java.lang são importadas automaticamente em todos os programas. Como se todos os programas contivessem a linha: import java.lang.*;

23 23 Classe Random A classe Random é parte do package java.util Fornece métodos para gerar números pseudo-randômicos Um objeto Random executa cálculos complicados baseados em um valor inicial (seed value) para produzir uma série de valores randômicos sem significado

24 24 import java.util.Random; public class RandomNumbers { public static void main (String[] args) { Random generator = new Random(); int num1; float num2; num1 = generator.nextInt(); System.out.println (um inteiro randomico: " + num1); num1 = generator.nextInt(10); System.out.println (de 0 a 9: " + num1); num1 = generator.nextInt(10) + 1; System.out.println (de 1 a 10: " + num1); num1 = generator.nextInt(15) + 20; System.out.println (de 20 a 34: " + num1); num1 = generator.nextInt(20) - 10; System.out.println (de -10 a 9: " + num1); num2 = generator.nextFloat(); System.out.println ( um float randomico (entre 0-1): " + num2); num2 = generator.nextFloat() * 6; // 0.0 to 5.999999 num1 = (int)num2 + 1; System.out.println (de 1 a 6: " + num1); } import java.util.Random; public class RandomNumbers { public static void main (String[] args) { Random generator = new Random(); int num1; float num2; num1 = generator.nextInt(); System.out.println (um inteiro randomico: " + num1); num1 = generator.nextInt(10); System.out.println (de 0 a 9: " + num1); num1 = generator.nextInt(10) + 1; System.out.println (de 1 a 10: " + num1); num1 = generator.nextInt(15) + 20; System.out.println (de 20 a 34: " + num1); num1 = generator.nextInt(20) - 10; System.out.println (de -10 a 9: " + num1); num2 = generator.nextFloat(); System.out.println ( um float randomico (entre 0-1): " + num2); num2 = generator.nextFloat() * 6; // 0.0 to 5.999999 num1 = (int)num2 + 1; System.out.println (de 1 a 6: " + num1); }

25 25 A classe Math é parte do package java.lang Contém métodos que realizam várias funções matemáticas, por ex: Valor absoluto Raiz quadrada Exponenciação Funções trigonométricas

26 26 A classe Math Os métodos da classe Math são static (também chamados métodos de classe) Os static methods podem ser chamados pelo nome da classe – nenhum objeto da classe Math é necessário value = Math.cos(90) + Math.sqrt(delta);

27 27 Formatando Saída A biblioteca padrão Java contém classes que fornecem capacidades de formatação A classe NumberFormat permite formatar valores como moedas ou porcentagens A classe DecimalFormat permite formatar valores baseados em um padrão Ambas estão no package java.text

28 28 Formatando Saída A classe NumberFormat tem métodos estáticos que retornam um objeto formatado getCurrencyInstance() getPercentInstance() Cada objeto formatado tem um método chamado format que retorna uma string com a informação especificada no formato desejado

29 29 Formatando Saída A classe DecimalFormat pode ser usada para formatar um valor em ponto-flutuante de várias formas É possível especificar que o número seja truncado para três casas decimais, por exemplo. O construtor da classe DecimalFormat pega uma string que representa um padrão para o número formatado

30 30 Tipos enumerados Java permite definir um tipo enumerado, que pode ser usado para declarar variáveis. Um tipo enumerado estabelece todos os possíveis valores para uma variável daquele tipo. Os valores são identificados arbitrariamente. Assim, a seguinte declaração cria um tipo enumerado Season enum Season {winter, spring, summer, fall}; Qualquer número de valores pode ser listado

31 31 Tipos enumerados A partir de um tipo ser definido, uma variável daquele tipo pode ser declarada Season time; e pode ser atribuído um valor time = Season.fall; Os valores são especificados através do nome do tipo Tipos enumerados são seguros, ou seja, não é possível atribuir qualquer outro valor diferentes dos da lista definida

32 32 Valores Ordinais Internamente, cada valor de um tipo enumerado é armazenado como um inteiro, chamado seu valor ordinal O primeiro valor é zero, o segundo um e assim por diante Porém, não se pode atribuir um valor numérico a um tipo enumerado, mesmo se ele corresponde a um valor ordinal válido

33 33 Tipos enumerados A declaração de um tipo enumerado é um tipo especial de classe, e cada variável daquele tipo é um objeto o método ordinal retorna o valor ordinal do objeto O método name retorna o nome do identificador correspondente ao valor do objeto

34 34 public class IceCream { enum Sabor {creme, chocolate, morango, crocante, cafe, pistache, menta, amendoas} public static void main (String[] args) { Sabor cone1, cone2, cone3; cone1 = Sabor.pistache; cone2 = Sabor.chocolate; System.out.println ("cone1 vale: " + cone1); System.out.println ("cone1 ordinal: " + cone1.ordinal()); System.out.println ("cone1 nome: " + cone1.name()); System.out.println (); System.out.println ("cone2 vale: " + cone2); System.out.println ("cone2 ordinal: " + cone2.ordinal()); System.out.println ("cone2 nome: " + cone2.name()); cone3 = cone1; System.out.println (); System.out.println ("cone3 vale: " + cone3); System.out.println ("cone3 ordinal: " + cone3.ordinal()); System.out.println ("cone3 nome: " + cone3.name()); } public class IceCream { enum Sabor {creme, chocolate, morango, crocante, cafe, pistache, menta, amendoas} public static void main (String[] args) { Sabor cone1, cone2, cone3; cone1 = Sabor.pistache; cone2 = Sabor.chocolate; System.out.println ("cone1 vale: " + cone1); System.out.println ("cone1 ordinal: " + cone1.ordinal()); System.out.println ("cone1 nome: " + cone1.name()); System.out.println (); System.out.println ("cone2 vale: " + cone2); System.out.println ("cone2 ordinal: " + cone2.ordinal()); System.out.println ("cone2 nome: " + cone2.name()); cone3 = cone1; System.out.println (); System.out.println ("cone3 vale: " + cone3); System.out.println ("cone3 ordinal: " + cone3.ordinal()); System.out.println ("cone3 nome: " + cone3.name()); }

35 35 Classes Wrapper O package java.lang contém wrapper classes que correspondem a cada tipo primitivo: Voidvoid Booleanboolean Characterchar Doubledouble Floatfloat Longlong Integerint Shortshort Bytebyte ClasseWrapperTipo Primitivo

36 36 Classes Wrapper A seguinte declaração cria um objeto Integer que representa o inteiro 40 como um objeto Integer age = new Integer(40); Um objeto de uma classe wrapper pode ser usado em qualquer situação onde um valor primitivo não seria possível por exemplo, alguns objetos servem como contêiners de outros objetos Valores primitivos não poderiam ser armazenados em tais contêiners, mas objetos wrapper podem

37 37 Classes Wrapper As classes wrapper podem conter métodos estáticos que ajudam a gerenciar o tipo associado por exemplo, a classe Integer contém um método para converter um inteiro armazenado em um valor String para um valor int : num = Integer.parseInt(str); As classes wrapper sempre contém constantes úteis também por exemplo, a classe Integer contém MIN_VALUE e MAX_VALUE que são os menor e maior valores int

38 38 Autoboxing Autoboxing é conversão automática de um valor primitivo para um correspondente objeto wrapper: Integer obj; int num = 42; obj = int; A atribuição cria o objeto Integer apropriado A conversão reversa (unboxing) também ocorre automaticamente quando necessário

39 39 fim.


Carregar ppt "Aula Sobre uso de Classes e Objetos Renata Pontin de Mattos Fortes 2006."

Apresentações semelhantes


Anúncios Google