Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º...

11
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

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

Transcript of Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º...

Page 1: Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre

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

Page 2: Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre

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!

Page 3: Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre

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.

Page 4: Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre

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.

Page 5: Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre

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!

Page 6: Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre

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

Page 7: Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre

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);

Page 8: Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre

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.

Page 9: Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre

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();

Page 10: Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre

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.

Page 11: Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre

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.