Upload
alden-barrera
View
29
Download
1
Embed Size (px)
DESCRIPTION
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). - PowerPoint PPT Presentation
Citation preview
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
Métodos Programação II 2
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 3
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 4
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 5
Exemplopublic 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());
Variável contador
Método de classe de acesso ao contador
Neste constructor incrementa-se o contador sempre que se o
invoca!
Métodos Programação II 6
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 classesdouble a = Math.pow(raio,2);int x = Integer.MAX_VALUE; // constante da classe Integer
Métodos Programação II 7
Classes sem instâncias
• Class Arrays– int a[] = {3,6,1,2,0,9,7,8,4};
– Arrays.sort(a); Arrays.binarySearch(a,2);
• Class Math– Double d =Math.sqrt(2.3); d = Math.pow(d,2);
– d = Math.log(d);
Métodos Programação II 8
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 9
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 10
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 11
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.