métodos de programação ii (mestrado integrado em engenharia de comunicações) 1º ano, 2º...
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 PresentationTRANSCRIPT
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.