Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Estrutura Geral de uma Classe class < nome da classe > extends < nome da super classe > implements interface1, ... ,interfaceN { < tipo1 > atributo1; < tipo2 > atributo 2, atributo 3; ... construtores ... void mtodo1(){...} void mtodo2(<parmetros>){...} < tipo > mtodo3(<parmetros>){...} 2 }
Instanciao de Classes Instanciao uma operao que permite evidenciar elementos (objetos) de uma classe. Instanciao uma operao na classe, no uma operao da instncia da classe (objeto). Por conveno em Java, a operao new cria instncias de uma classe, responsvel pela alocao dos objetos, mas no pela inicializao dos atributos.
3
Construtores Como um mtodo de classe no pode acessar diretamente os atributos na nova instncia, um mtodo de instncia(construtor) precisa ser escrito para inicializar os atributos. Em Java, o nome do construtor o mesmo nome da classe. Numa mesma classe, podem existir construtores sobrecarregados. O nome do construtor(e possveis parmetros) aparece junto com a operao new.
4
Exemplo class Funcionario{ String nome,RG; float salario; Funcionario(String nomef,String ident,float sal){ nome=nomef; RG=ident; salario=sal; } ... }
Exemplo cont. class admissao{ public static void main(String args[]){ Funcionario ze=new Funcionario("Z","15.000",150); ... } }
6
Construtores Implcitos class Funcionario{ String nome,RG; float salario; void admite(String nomef,String ident,float sal){ nome=nomef; RG=ident; salario=sal; }... } class admissao{ public static void main(String args[]){ Funcionario ze=new Funcionario(); ze.admite("Z","15.000",150); } }
Construtores Sobrecarregados class Funcionario{ String nome,RG; float salario; Funcionario(){ nome=" "; RG=" "; salario=0.0; } Funcionario(String nomef,String ident,float sal){ nome=nomef; RG=ident; salario=sal; } void admite(String nomef,String ident,float sal){...}... }
Construtores Sobrecarregados Usando a classe anterior, poderamos inicializar as instncias de dois modos: class admisso{ public static void main(String args[]){ Funcionario ze=new Funcionario(); Funcionario maria=new Funcionario("Maria","0",300); ze.admite("Z","15.000",150); .... } }
Garbage Collection De tempos em tempos, o interpretador java dispara um processo de recuperao de reas de memria alocadas, porm no mais referenciadas ( processo de garbage collection (coleta de lixo)). Isto, eventualmente, pode afetar o desempenho da aplicao.
10
Operador de Autoreferncia This this um "apontador" para o objeto em questo. Usando este apontador, um mtodo pode acessar todas os atributos das classe a que pertence. Ele criado automaticamente quando um objeto chama um mtodo e "aponta" para o prprio objeto que chamou o mtodo.
11
Exemplo class Funcionario{ String nome, RG; float salario; Funcionario(String nome,String RG,float salario){ this.nome=nome; this.RG=RG; Acesso aos this.salario=salario; atributos } Funcionario(){ this(" "," ",0.0); // Construtor que chama construtor } ... } 12
Atributos Estticos Um atributo com o modificador static tem o seu valor compartilhado por todos os objetos da classe, ou seja, s haver uma cpia dele para todos os objetos da classe. Por exemplo: static float valor_dolar;
Mtodos Estticos Um mtodo esttico um mtodo que pode ser invocado, mesmo que no haja nenhuma instncia da classe, isto , pode ser referenciado independentemente de qualquer objeto. Por exemplo: static void cambio(float valor){...} Como independe da instncia, no tem autoreferncia ( operador this ). Mtodos estticos podem referenciar somente atributos estticos.
13 14
Exemplo de Atributos e Mtodos Estticos class produtoexportacao{ String nome; float preco_venda,preco_compra; static float valor_dolar; produtoexportacao(String nome,float precov,float precoc){ this.nome=nome; this.preco_venda=precov; this.preco_compra=precoc; }
Herana Herana um relacionamento do tipo generalizao/ especializao, onde uma classe pode ser derivada (subclasse) de outra mais geral (superclasse), absorvendo todas as caractersticas fundamentais e adicionando outras novas caractersticas, de tal modo a torn-la mais especializada.
Exemplo
17
18
Exemplo Implementao da Subclasse Chefe class Chefe extends Funcionario{ float contas, gastos_extra,adicional_chefia; Chefe(String nomef,String RG, float sal, float contas, float gastos_extra, float adicional) { super(nomef,RG,sal); // Construtor da superclasse (Funcionario) this.contas=contas; this.gastos_extra=gastos_extra; this.adicional_chefia=adicional;
19
Exemplo Implementao da Superclasse Funcionario class Funcionario{ String nome,RG; float salario; Funcionario(String nomef,String ident,float sal){ nome=nomef; RG=ident; salario=sal; } void aumenta(float pouco){ salario=salario+pouco; } float pagamento(){ return (salario); } }
Exemplo Implementao da Subclasse Chefe float pagamento(){ float recebe; recebe=this.salario; recebe=recebe+contas+gastos_extra+adicional_chefia ; return(recebe); } }
21
Exemplo Instanciao da Subclasse class ganhando{ public static void main(String args[]){ Chefe joao=new Chefe("Joo","320",11150,1250,680, 5000); joao.aumenta(300); System.out.println("Joo ganha" + joao.pagamento() ); } }
22
Operador de Referncia Super super um operador para acessar atributos e mtodos das superclasses, a partir das subclasses.
Este operador deve ser usado com bastante cuidado, principalmente na presena de modificadores de acesso.
23
Exemplo - Implementao da Subclasse Aula 04 Estrutura de Classe em Java Chefe com Super class Chefe extends Funcionario{ float contas, gastos_extra,adicional_chefia; Chefe(String nomef,String RG, float sal, float contas, float gastos_extra, float adicional){ super(nomef,RG,sal); // Construtor da superclasse (Funcionario) this.contas=contas; this.gastos_extra=gastos_extra; this.adicional_chefia=adicional; }
24
Exemplo - Implementao da Subclasse Aula 04 Estrutura de Classe em Java Chefe com Super float pagamento() { float recebe; recebe=super.pagamento(); // Chamada de pagamento() da superclasse recebe=recebe+contas+gastos_extra+adicional_che fia; return(recebe); } }
25
Polimorfismo Habilidade de uma ou mais classes responder a uma mesma mensagem de forma diferente.
26
27
Exemplo Implementao da Superclasse Aula 04 Estrutura de Classe em Java Funcionario class Funcionario{ String nome,RG; float salario; Funcionario(String nomef,String ident,float sal){ nome=nomef; RG=ident; salario=sal; } void aumenta(float pouco){ salario=salario+pouco; } float pagamento(){ return (salario); } }
28
Exemplo Implementao da Subclasse Chefe class Chefe extends Funcionario{ float contas, gastos_extra,adicional_chefia; Chefe(String nomef,String RG, float sal, float contas, float gastos_extra, float adicional) { super(nomef,RG,sal); // Construtor da superclasse (Funcionario) this.contas=contas; this.gastos_extra=gastos_extra; this.adicional_chefia=adicional; }
Exemplo Implementao da Subclasse Chefe float pagamento() { float recebe; recebe=super.pagamento(); // Chamada no contexto da superclasse recebe=recebe+contas+gastos_extra+adicional_che fia; return(recebe); }
29
30
Exemplo - Chamadas na Superclasse e Subclasse class ganhando{ public static void main(String args[ ]){ Chefe joao=new Chefe("Joo","320",11150,1250,680, 5000); Funcionario maria=new Funcionario("Maria","16.000",2000); System.out.println("Joo ganha"+joao.pagamento() ); Chamada no contexto da subclasse 31
32
Modificador final O modificador final tem comportamentos diferentes, dependendo do local onde aplicado: Atributo: uma vez que inicializado, no pode mais sofrer alterao (constante). Mtodo: nas classes descendentes no pode mais haver polimorfismo com o mtodo. Classes: no podem mais ser estendidas.
33
Exemplo de Uso de Final class classe1{ // Inicializao de pi ( funciona como constante ) final double pi=3.1415926535; final void calcula(){ pi=2.718; // ERRO DE COMPILAO! pi j foi inicializado! ... } }
34
Exemplo de Uso de Final final class classe2 extends classe1{ ... void calcula(){...}; //ERRO! calcula() final na superclasse. }