Beruflich Dokumente
Kultur Dokumente
Mtodos
Classes
Declarao:
class Ponto { ... }
Mtodos
Instanciao de Objetos
Dada uma classe, pode ser criada uma nova instncia desta classe usando o comando new. Exemplo:
Ponto p = new Ponto();
Atribuio de valores
As propriedades dos objetos podem ser manipuladas diretamente:
Ponto p1 = new Ponto(); p1.x = 1; p1.y = 2; // p1 representa o ponto (1,2) Ponto p2 = new Ponto(); p2.x = 3; p1.y = 4; // p2 representa o ponto (3,4)
P1
Tipos de Mtodos
class Exemplo { int a; MinhaClasse b; Exemplo () { } float Exemplo (int a) { } }
Mtodos
Define o comportamento da classe. Declarao:
class Ponto { int x, y; void mover ( int dx, int dy) { x += dx; y += dy; } }
Chamadas de Mtodo
A troca de mensagens entre os objetos realizada atravs da chamada de mtodos com passagem de parmetros Exemplo
... p1.mover(10,l0); //deslocou p1 dez unidades, nos dois eixos ...
Mtodos Operacionais
Implementam as funes de uma classe Possuem sintaxe semelhante sintaxe de definio das funes de um programa procedural Determinam o comportamento da classe e a troca de mensagens com outras classes
Mtodos Operacionais
Class Funcionario { String nomefunc; float salario;
...
float CalcularSalario (int horas) { if (horas < 220) { salario = (salario/220)*horas; } return salario; } ... }
Assinatura
Corpo Retorno
Assinatura de um mtodo
Exemplo
Class ProgramaPrincipal { public void main (String arg[]) { Funcionario func; func = new Funcionario(Juca,102); func.CalcularSalario(20); } }
Executando o Mtodo
Mtodos Construtores
Devemos usar os mtodos construtores quando queremos atribuir valores aos atributos de um objeto no momento de sua criao
class Ponto { int x=0; int y=0; Ponto (int x, int y) { this.x = x; this.y = y; }
Uso de Construtores
Deve ser usado no momento da criao do objeto:
Ponto p1 = new Ponto(1,2); Ponto p2 = new Ponto(3,4);
Construtor Padro
A linguagem Java declara um construtor padro, vazio, que no recebe nenhum parmetro Quando declaramos um novo construtor, esse construtor padro deixa de existir e substitudo pelo novo construtor
Mtodos Construtores
Usados na criao de um objeto atravs do comando new Possuem o mesmo nome da classe Podem receber parmetros que serviro para incializao dos atributos da classe Uma classe pode ter vrios mtodos construtores
Mtodo Construtor
Outros Mtodos
Exemplo
Class ProgramaPrincipal { public void main (String arg[]) { Funcionario func; func = new Funcionario(Juca,102); } }
Mtodo Construtor
Mtodo Finalizador
Quando um objeto vai ser detrudo, ele tem seu mtodo finalize chamado O mtodo finalize usado para a executar operaes antes da destruio do objeto. A linguagem Java possui um coletor de lixo, que possui a funo de destruir objetos que no esto sendo usados pelo programa
Membros de Classe
Pode-se definir num classe membros (atributos e mtodos) que sejam compartilhados por todas instncias daquela classe. Esses membros so chamados de membros de classe Todo membro de classe deve usar o qualificador static.
Membros de Classe
Exemplo:
class Pessoa { static int num_pessoa = 0; int id; Pessoa () { id = num_pessoa; num_pessoa++; } ... }
Membros de Classe
Membro de Classe Pessoa Num_pessoas
Membros de Classe
Exemplo:
Pessoa joao = new Pessoa (); // joao.id = 0; // joao.num_pessoa = 1; Pessoa ana = new Pessoa(); // ana.id = 1; // ana.num_pessoa = 2;
Membros de Classe
Os membros de classe podem ser acessados diretamente, sem necessidade da existncia de um objeto.
Pessoa.num_pessoas = 100; // Prxima pessoa criada ser 101
Encapsulamento
a caracterstica de definir os atributos e mtodos de uma classe. No entanto, necessrio definir o controle de acesso aos atributos e mtodos desta classe, de forma que no interfira no seu funcionamento.
Controle de Acesso
Os membros de uma classe podem ser protegidos de acessos indevidos Mtodos de acesso: public e private public: membros podem ser acessados livremente private: membros s podem ser acessados pela prpria classe
Controle de Acesso
Exemplo:
class Pessoa { private nome; private idade; public obs; Pessoa (String nome, int idade) { this.nome = nome; } }
Controle de Acesso
Exemplo:
Pessoa p1 = new Pessoa(Joao,10); p1.nome = Raul;//ERRO DE COMPILACAO p1.obs = bom garoto; //OK
Sobrecarga de Mtodos
Sobrecarregar um mtodo significa definir dois ou mais mtodos com o mesmo nome, porm com assinaturas diferentes: Assinatura diferente pode ser: tipo de retorno, nmero ou tipos de parmetros diferentes.
Implementao de Pacotes
Pacotes so implementados como diretrios Os arquivos das classes pertencentes ao pacote devem ficar em seu diretrio Hierarquias de pacotes so construdas atravs de hierarquias de diretrios
Empacotamento de Classes
Para criarmos uma classe como pertencente a um pacote, devemos:
declar-la em um arquivo dentro do diretrio que representa o pacote declarar, na primeira linha, que a classe pertence ao pacote
Empacotamento de Classes
Exemplo:
/* A classe Ponto pertence ao pacote MeuPacote O arquivo Ponto.java deve estar dentro do diretrio MeuPacote */ package MeuPacote; Class Ponto { ... }
Importao de Pacotes
Para usarmos uma classe que est dentro de um pacote precisamos referenciar o nome desse pacote:
java.awt.buttom a = new java.awt.button(Alo);
Podemos usar o comando import, o que permite usarmos somente o nome da classe:
import java.awt.*; buttom a = new button(Alo);
Herana e Polimorfismo
Uma classe pode herdar propriedades e mtodos de outra classe Em Java, podemos ter herana de cdigo ou herana de interface Herana de Interface: herda todos mtodos declarados que no sejam privados Herana de Cdigo: herda mtodos com implementaes e campos que no so privados
Resumo de Visibilidade
Resumindo:
private: membros que so vistos s pela prpria classe e no so herdados por nenhuma outra package: membros que so vistos e herdados pelas classes do pacote protected: membros que so vistos pelas classes do pacote e herdados por qualquer outra classe public: membros so vistos e herdados por qualquer classe
Herana em Java
Quando uma classe A herda de B, diz-se que A a sub-classe e estende B, a superclasse Uma classe Java estende apenas uma outra classe- a essa restrio damos o nome de herana simples Para criar uma sub-classe, usamos a palavra reservada extends
Exemplo de Herana
Podemos criar uma classe PontoColorido a a partir da classe Ponto.
Class PontoColorido extends Ponto { int cor; PontoColorido(int x, int y, int c) { super(x,y); cor = c; } }
Herana de Cdigo
A classe PontoColorido herda a interface e o cdigo da classe Ponto. Ou seja, PontoColorido passa a ter tanto os campos quanto os mtodos (com suas implementaes) de Point.
PontoColorido p1 = new PontoColorido(1,2,0); p1.mover(1,0);
Modelo de Herana
Java adota o modelo de rvore A classe Object a raiz da hierarquia de classes qual todas as classes existentes pertencem Quando no declaramos que uma classe estende outra, ela, implicitamente, estende Object
Especializao x Extenso
Uma classe pode herdar de outra para especializ-la redefinindo mtodos, sem ampliar sua interface Uma classe pode herdar de outra para estend-la declarando novos mtodos e, dessa forma, apliando sua interface. Ou as duas coisas podem acontecer simultaneamente
Polimorfismo
a capacidade de um objeto tomar vrias formas A capacidade polimrfica decorre diretamente do mecanismo de herana Ao estendermos ou especializarmos uma classe, no perdemos compatibilidade com a superclasse
Polimorfismo
A sub-classe de Ponto, PontoColorido, compatvel com ela, ou seja, um PontoColorido, alm de outras coisas, um Ponto Isso implica que, sempre que precisarmos de um Ponto, podemos usar um PontoColorido em seu lugar
Polimorfismo
Podemos criar um array de pontos. O array de pontos poder conter PontosColoridos:
Ponto[] pontos = new Ponto[5]; pontos[0] = new Ponto(); pontos[1] = new PontoColorido(1,2,0);
Polimorfismo
Polimorfismo o nome formal para o fato de que, quando precisamos de um objeto de determinado tipo, podemos usar uma verso mais especializada dele. Esse fato pode ser bem entendido analisando-se a rvore de hierarquia de classes.
Late Binding
a capacidade de adiar a resoluo de um mtodo at o momento no qual ele deve ser efetivamente chamado. A resoluo do mtodo ocorrer em tempo de execuo, ao invs de em tempo de compilao No momento da chamada, o mtodo utilizado ser o definido pela classe real do objeto
Mtodos Constantes
Mtodos cujas implementaes no podem ser redefinidas nas sub-classes. Objetivo evitar o processamento do Late Binding Devemos usar o modificador final
public class A{ public final int f ( ) {
... }
Classes Constantes
Uma classe constante no pode ser estendida.
public final class A{ ... }
Converso de Tipo
Podemos usar uma verso mais especializada quando precisamos de um objeto de certo tipo mas o contrrio no verdade. Por isso, se precisarmos fazer a converso de volta ao tipo mais especializado, teremos que faz-lo explicitamente.
Type Casting
A converso explcita de um objeto de um tipo para outro chamada de type casting.
Ponto pt = new PontoColorido(0,0,1); PontoColorido px = (PontoColorido)pt; pt = new Ponto(); px = (PontoColorido)pt; //ERRO pt = new PontoColorido(0,0,0); px = pt; //ERRO
Classes Abstratas
Ao criarmos uma classe para ser estendida. s vezes codificamos alguns mtodos para os quais no sabemos dar uma implementao, ou seja, um mtodo que s sub-classes sabero implementar Uma classe deste tipo no pode ser instanciada pois sua funcionalidade est incompleta. Tal classe dita abstrata.
Classes Abstratas
public abstract class Figura { Ponto pOrigem; public abstract void desenhar(); public abstract void apagar(); public abstract float calcularArea(); public abstract void mover(Ponto p) { origem.mover(pOrigem.x,pOrigem.y); } }
Interfaces
Java no permite herana mltipla com herana de cdigo Java implementa o conceito de interface possvel herdar mltiplas interfaces Em Java, uma classe estende uma outra classe e implementa zero ou mais interfaces Para implementar uma interface em uma classe, usamos a palvra implements
Exemplo de Interface
interface Localizavel { boolean ehVoce (Ponto p); void desenharMarcas (); } class Circulo extends figura implements Localizavel { Boolean ehVoce (Ponto p){ //procedimento de localizao } void desenharMarcas () { //procedimento desenhar marcas } }
Interfaces
Uma vez que uma interface no possui implementao, devemos notar que:
seus campos devem ser pblicos, estticos e constantes seus mtodos devem ser pblicos e abstratos
Verificao de Tipos
Java mantm informaes de tipo em tempo de execuo e nos permite consult-las atravs do comando instanceof
Ponto pt = new Ponto(); boolean b = pt instanceof PontoColorido; // b = false