110 likes | 193 Views
Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre. Elementos de Classe, class wrappers. Classes. Classes : podem ser vistas como objectos especiais. Isto é, podemos enviar mensagens às classes e fazer uso das suas variáveis (de classe).
E N D
Métodos de Programação II(Mestrado Integrado em Engenharia de Comunicações)1º Ano, 2º Semestre Elementos de Classe, class wrappers Métodos Programação II
Classes • Classes: podem ser vistas como objectos especiais. Isto é, podemos enviar mensagens às classes e fazer uso das suas variáveis (de classe). • Estas facilidades fornecem um mecanismo de broadcasting, comunicação com todas as instâncias da classe. • Na definição de classe aparece agora espaço para a definição de variáveis e métodos de classe. • Todas as instâncias têm acesso à estrutura privada da classe. • As variáveis e métodos de classe existem sempre, mesmo quando não existem instâncias dessa classe! Métodos Programação II
Classes como Objectos • Variáveis de classe: visíveis a todas as instâncias da classe, • Métodos de classe: são activados por mensagens enviadas à classe. • Podemos manter os mesmos princípios de encapsulamento: há métodos de classe para aceder às variáveis de classe. • A keyword static é usada para declarar os elementos privados à classe. Métodos Programação II
Variáveis de classe • Constantes especificas de uma classe. Não é razoável ter uma constante repetida em todas as instâncias de uma classe! • Exemplo: valor de π na classe Circulo. • Exemplo clássico: contador de instâncias criadas para uma determinada classe. Métodos Programação II
Exemplo Variável contador public class Circulo { private static int num = 0; public static int getnum() { return num;} //constructor Circulo(double x, double y, double r) { this.centro = new Ponto(x,y); this.raio = r; num++;} } // usar os métodos de classe enviando uma msg à própria classe. System.out.println(“Número de Circulos=“+Circulo.getnum()); Método de classe de acesso ao contador Neste constructor incrementa-se o contador sempre que se o invoca! Métodos Programação II
Outros exemplos • Métodos de classe que funcionam como inicializadores: public class ex1 { static int a[] = new int[100]; static { double x; for(int i=0;i < 100; i++;x+=i) a[i] = x; } } // Use de outras classes double a = Math.pow(raio,2); int x = Integer.MAX_VALUE; // constante da classe Integer Métodos Programação II
Classes sem instâncias • Class Arrays • int a[] = {3,6,1,2,0,9,7,8,4}; • Arrays.sort(a); Arrays.binarySearch(a,2); • ClassMath • Double d =Math.sqrt(2.3); d = Math.pow(d,2); • d = Math.log(d); Métodos Programação II
Class Wrappers • O java contém classes que são imagens dos tipos primitivos • Exemplos: • Integer int • Double double • Long long • etc. • Produzem objectos imutáveis. • São wrappers porque “embrulham” os tipos primitivos em objectos. Métodos Programação II
Class Wrappers (cont) • Possuem sempre constantes de classe que especificam o valor max e min. Exemplo Integer.MIN_VALUE • Servem para conversão de Strings em valores numéricos: • String s=“8”; • int i = Integer.parseInt(s); • ou String s = “12.45”; double d = new Double(s); • Há o processamento automático do boxing e unboxing entre os dois níveis: • Integer i = new Integer(12); int x = i; • Double d = new Double(3.14); int x = d.intValue(); Métodos Programação II
Arrays de Objectos • Podemos representar colecções de objectos usando arrays. Exemplo: Circulo c[] = new Circulo[10]; c[0] = new Circulo(0,0,10); c[1] = new Circulo(1,6,18); …. // encontra circulo com maior área. double max = c[0].area(); Circulo m = null; for(Circulo x:c) { double temp = x.area(); if(temp> max) { max = temp; m = x; } } A var m vai conter a referência para o circulo de maior área. Métodos Programação II
Exercícios • Definir a classe Conta Bancária • Um conta é representada por um: • Titular • Número da conta e saldo • Uma lista de movimentos • Criar várias contas. Criar classe Banco. Esta classe guarda todas as contas num array. • Implementar métodos para débitos e créditos de movimentos • Deve ser possível contabilizar o número de contas bem como o montante de capital depositado no banco (total de saldos das contas). • Implementar um método para debitar despesas bancárias em todas as contas. Métodos Programação II