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

Slides:



Advertisements
Apresentações semelhantes
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Advertisements

1 Java: Tratamento de Exceções Alcides Calsavara.
While While Condição // comandos End While. Exemplos While Var contador As Integer contador = 0 While (contador < 10) contador += 1 console.ConsoleWrite(contador)
Listas Encadeadas Circulares Listas Duplamente Encadeadas
Listas Encadeadas Circulares Listas Duplamente Encadeadas
2008 LCG/UFRJ. All rights reserved. 1 Standard Template Library STL Claudio Esperança Paulo Roma Cavalcanti.
1 Estruturas de Controle Márcia J. N. Rodrigues Lucena Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento.
Capítulo 10 Arrays. 2Capítulo 10 – Arrays Arrays Introdução Tipo do array Tamanho do array Preenchendo o array Varrendo um array Array com 2 dimensões.
PROGRESSÃO ARITMÉTICA P.A.
Grupo Paralelismo – Unesp RC
FORTRAN 90 Denise Yumi Takamura.
Introdução ao Fortran 4/abril/2006. Pseudocódigo Compreensão do problema Elaboração da lógica de resolução Tradução da lógica para pseudocódigo.
Treinamento GP3 USP – GEFIM Abril de 2004 Alcides Pietro, PMP.
Prof. Dr. Helder Anibal Hermini
Arquiteturas de 4, 3, 2, 1 e 0 endereços.
Utilização do montador Daedalus
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço OXManager Treinamento no GRADEp Serviço OXManager OXManagerDemo.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - julho 2005 Serviço Worb Treinamento no GRADEp Serviço Worb WorbDemo.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço Collector Treinamento no GRADEp Serviço Collector CollectorDemo e.
Introdução à Orientação a Objetos Prof. Ricardo Linden
Classes Internas e Anônimas
Mais sobre classes Baseada no Livro: Deitel&Deitel - C++ How To program Cap. 7 Prentice Hall 1994 SCE 213 Programação Orientada a Objetos, ICMC - USP 2.
Profa. Graziela Santos de Araújo Algoritmos e Programação II, 2010
O Fluxo de Testes © Alexandre Vasconcelos
Agregado Homogêneo e Heterogêneo
CT-300 – Seminário de Tese 1/25 Um Framework Padrão para Simulação de Modelos de Robôs Móveis de Robôs Móveis Juliano A. Pereira Prof. Carlos H. C. Ribeiro.
CES-11 LAB 03 Bitmap Quadtree
Capítulo VII – Tipos Enumerativos e Estruturas 7.1 – Tipos enumerativos 7.2 – A necessidade de estruturas 7.3 – Manipulação dos campos de uma estrutura.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo VII Variáveis Indexadas Numéricas.
Capítulo I – Conceitos Primários 1.1 – Estrutura de um computador 1.2 – Informações manipuladas por um computador 1.3 – Evolução das linguagens de programação.
Curso Técnico em Informática La Salle - Canoas
FUNDAÇÃO CARLOS CHAGAS
Implementação Do JXTA Como Protocolo De Transporte Do JacORB
TE 043 CIRCUITOS DE RÁDIO-FREQÜÊNCIA
Organização de Sistemas de Computadores
Desempenho A rápida taxa de melhoria na tecnologia de computadores veio em decorrência de dois fatores: avanços na tecnologia utilizada na construção.
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Listas Encadeadas.
Tecnologia para Web JavaScript Enrique Pimentel Leite de Oliveira
Recursividade Estrutura de Dados.
Comandos básicos do MS-DOS
Marco Antonio Montebello Júnior
Introdução à Probabilidade
Entendendo as definições de classe
The Data Warehouse Toolkit
Frações Professor: Graciano Pianezzer Beletti.
Curso de Programação em C++
Curso de Programação em C++ Universidade Federal do Ceará Departamento de Engenharia Estrutural e Construção Civil Prof: Evandro Parente Junior Monitor:
Baseado no documento do Prof. Ronaldo Martins da Costa
LINGUAGENS DE PROGRAMAÇÃO
04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream.
Sistemas de Informação Prof. Me. Everton C. Tetila Modelo de dados relacional Banco de Dados I.
Programação Concorrente com Thread Java
1 Seja o resultado de um experimento aleatório. Suponha que uma forma de onda é associada a cada resultado.A coleção de tais formas de ondas formam um.
8. Uma Função de duas Variáveis Aleatórias
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação JAVA
Provas de Concursos Anteriores
Linguagens de Programação
Anália Lima (alc5) Bruno Gentilini (bgda) Eduardo Souza (efs) Ivan França (ilfn) Infra-Estrutura de comunicação Aula Prática Programação de Sockets TCP.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 – CIn/UFPE Davi Duarte Cynthia Raphaella Ivan França Jéssica Barbalho Larissa Paz Paulo Fernando.
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 30 (1) Empacotamento de Dados em MPI Tópicos: Buffer de Mensagem Empacotamento/Desempacotamento.
1 António Arnaut Duarte. 2 Sumário: primeiros passos;primeiros passos formatar fundo;formatar fundo configurar apresentação;configurar apresentação animação.
Linguagem técnica de programação I Java
Aula Gráfica de LP2 Professor: André Santos Monitor: José Edson.
1 2 Observa ilustração. Cria um texto. Observa ilustração.
MATRICIAL CONSULTORIA LTDA. PREFEITURA MUNICIPAL DE GARIBALDI 23/10/ : ATENÇÃO Os locais descritos nas planilhas anexas não correspondem ao total.
Java Generics Adeline de Sousa Silva.
ArrayList e Genéricos Profs. PROG2 - UNISINOS.
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Transcrição da apresentação:

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

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

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 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 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 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 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 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 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 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 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 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 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 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 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 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 Í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 //************************************************************* 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 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 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 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 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 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 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 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 num1 = (int)num2 + 1; System.out.println (de 1 a 6: " + num1); }

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 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 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 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 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 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 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 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 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 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 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 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 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 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 fim.