Atributos Pra Classe Professor

  • Uploaded by: fwannmacher
  • 0
  • 0
  • April 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Atributos Pra Classe Professor as PDF for free.

More details

  • Words: 1,584
  • Pages: 26
Atributos e Métodos de Classe

César A. M. Marcon 2009/01

Atributos e Métodos de Classe 2



Java permite declarar duas categorias distintas de atributos e métodos    

Atributos de instância Atributos de classe Métodos de instância Métodos de classe

Atributos e Métodos de Classe 3

Cada objeto de uma classe possui sua própria cópia de todos os atributos de instância da classe  Em certos casos, entretanto, é interessante que apenas uma cópia de um atributo em particular seja compartilhada por todos os objetos de uma classe  Exemplo: constantes da classe Math 



As constantes matemáticas E e PI são armazenadas em uma única cópia e então compartilhadas

Atributos e Métodos de Classe 4

public class TestaMath { public static void main(String args[]) {

Math.PI); System.out.println("E = " + Math.E); System.out.println("PI = " + } } 

Note que os atributos E e PI não foram acessados a partir de um objeto! Foram acessados pelo nome da classe

Atributos e Métodos de Classe 5



Atributos de Instância  



Cada objeto possui uma cópia particular com seus valores Representam o estado de um objeto em particular

Atributos de Classe 

  

Cada classe possui uma única cópia do atributo, independente do número de objetos instanciados a partir da classe Objetos compartilham os atributos de classe São declarados pela palavra-chave static Invocação: <nome_classe>.<nome_atributo_público>

Atributos e Métodos de Classe 6



Exemplo: classe Circulo 





Nos métodos de cálculo de área e circunferência, percebe-se a presença de um valor importante em cálculos geométricos que se repete para todas as instâncias: constante PI Pode ser desejado manter somente uma cópia desse valor, com a aproximação desejada no número de suas casas decimais de uma forma consistente, impedindo que em um método seja utilizado o valor 3,14 e em outro 3,1415 PI será declarado como atributo de classe (static) e constante (final)

Atributos e Métodos de Classe 7

public class Circulo {

public static final double PI = 3.14; private int centrox; private int centroy; private int raio; ... public double area() { return (PI * raio * raio); } public double circunferencia() { return (2 * PI * raio); } ... }

Atributos e Métodos de Classe 8

Em muitos exemplos de classes pode-se notar alguns métodos que não acessam nenhum atributo de uma instância  Exemplo: funções trigonométricas da classe Math 



Os métodos sin, cos e tan recebem o valor do ângulo (em radianos) por parâmetro e devolvem o seno, cosseno ou a tangente correspondente, calculados unicamente a partir do valor recebido

Atributos e Métodos de Classe 9

public class Trigonometria { public static void main(String args[]) { System.out.println("Seno(45) = " + Math.sin(Math.PI/4)); System.out.println("Cosseno(45) = " + Math.cos(Math.PI/4)); System.out.println("Tangente(45) = " + Math.tan(Math.PI/4)); } }

Note que os métodos de cálculo não são executados sobre um objeto!  Os métodos são acessados pelo nome da classe 

Atributos e Métodos de Classe 10



Métodos de Instância 





Fornecem o comportamento dos objetos instanciados a partir de uma classe Trabalham sobre os atributos de um objeto dessa classe

Métodos de Classe 



  

Fornecem um comportamento que é independente da existência de objetos de uma classe. Pertencem à classe e são compartilhados por todas as instâncias da classe. Trabalham sobre os atributos de classe. Indicados pela palavra-chave static. Invocação: <nome_classe>.<nome_método>(<parâmetros>)

Atributos e Métodos de Classe 11



Exemplo: classe Professor  

Contador para o número de objetos instanciados Método para saber o valor do contador

Professor

public class Professor {

private static int contador=0; ... public Professor(String n, int m, int c) { setNome(n); setMatricula(m); setCargaHoraria(c); contador++; }

public static int getTotalInstancias() { return (contador); } }

-

nome: String matricula: int cargaHoraria: int contador: int

+ setNome (n: String) + getNome ( ): String + setMatricula (m: int) + getMatricula( ): int + setCargaHoraria (c: int) + getCargaHoraria( ): int +

Atributos e Métodos de Classe Professor

12



Exemplo: classe Professor

-

nome: String matricula: int cargaHoraria: int contador: int

+ setNome (n: String) + getNome ( ): String + setMatricula (m: int) + getMatricula( ): int + setCargaHoraria (c: int) + getCargaHoraria( ): ... int Professor p3 = new Professor("Fulano", 777, 12); System.out.println("Total Objetos = " + + Professor.getTotalInstancias()); getCargaHorariaMensal ( ): float Professor p4 = new Professor("Beltrano", 888, 20); + getTotalInstancias( ): System.out.println("Total Objetos = " + p4.getTotalInstancias()); int ...

Atributos e Métodos de Classe 13



Estudo de caso 1 

A “famosa” aplicação “Alô Mundo”:

public class AloMundo { public static void main(String args[]) { System.out.println("Alo Mundo!"); } }

Atributos e Métodos de Classe 14



Estudo de caso 1 

A classe AloMundo possui um método de classe, o método main 



O método main é automaticamente invocado pela máquina virtual Java quando se executa a classe AloMundo Ele é um método de classe, pois não depende de nenhum objeto da classe AloMundo na qual ele está declarado

Atributos e Métodos de Classe 15



Estudo de caso 1 

A classe AloMundo referencia também um atributo de classe 

A construção System.out.println() é na verdade o atributo de classe out da classe System, o qual guarda uma instância da classe PrintStream que possui um método de instância chamado println

Atributos e Métodos de Classe 16



Estudo de caso 2 



A classe Media é capaz de manter informações sobre um acumulador de valores inteiros, apresentando a funcionalidade de calcular a média, a qualquer momento, dos valores que foram adicionados ao acumulador Adicionalmente, a classe Media também é capaz de informar a média de todas as instâncias já criadas dessa classe

Atributos e Métodos de Classe 17



Estudo de caso 2 

Atributos de instância: 





acum guarda a soma de todos os valores adicionados ao acumulador qtd é um contador do número de valores adicionados ao acumulador

Métodos de instância: 



somaAcum fornece a funcionalidade de adicionar um valor ao acumulador media é utilizado para calcular a média do acumulador

Atributos e Métodos de Classe 18



Estudo de caso 2 

Atributos de classe: 





acumGlobal guarda a soma de todos os valores adicionados a todos os acumuladores qtdGlobal guarda o número de valores adicionados a todos os contadores

Métodos de classe: 

mediaGlobal é utilizado para calcular a média de todos os acumuladores

Atributos e Métodos de Classe 19

public class Media { private int acum,qtd; private static int acumGlobal,qtdGlobal; public int somaAcum(int a) { acum = acum + a; qtd++; acumGlobal = acumGlobal + a; qtdGlobal++; return(acum); } public double media() { return((double) acum/qtd); } public static double mediaGlobal() { if (qtdGlobal == 0) return 0; return((double) acumGlobal/qtdGlobal); } }

Atributos e Métodos de Classe 20



Estudo de caso 2 



Note no exemplo, que um método de instância (somaAcum) pode acessar atributos de instância (acum, qtd) e atributos de classe (acumGlobal, qtdGlobal) Mas um método de classe (mediaGlobal) só pode acessar atributos de classe (acumGlobal, qtdGlobal)

Atributos e Métodos de Classe 21

public class TesteMedia { public static void main(String args[]) { Media var1 = new Media(); var1.somaAcum(1); var1.somaAcum(3); var1.somaAcum(5); System.out.println("Media da instancia var1: "+var1.media()); System.out.println("Media das instancias da classe Media: " + Media.mediaGlobal()); Media var2 = new Media(); var2.somaAcum(1); var2.somaAcum(1); System.out.println("Media da instancia var2: "+var2.media()); System.out.println("Media das instancias da classe Media: " + Media.mediaGlobal()); } }

Atributos e Métodos de Classe 22



Inicialização de atributos de classe 

Convém destacar que a forma de inicialização dos atributos de classe é usualmente no momento de sua declaração, pois eles não pertencem às instâncias e portanto não dependem do construtor para serem inicializados 

Se a inicialização com valores padrão for suficiente, não é necessário inicializar o atributo explicitamente

Atributos e Métodos de Classe 23



Para inicializar atributos de classe que necessitam de uma forma mais complexa, Java fornece um bloco de inicialização estático  



Não possui nome e não possui tipo de retorno Começa pela palavra-chave static, seguido de um bloco de código entre parênteses Executa somente uma vez quando a classe é carregada em memória

public class UmaClasse { ... public static int atributo; static { //código para inicializar atributo } }

Exercícios 24



Utilizando a classe Ponto exemplificada em aulas anteriores, introduza um atributo de classe para contar o número de objetos criados. Acrescente também um método de classe para retornar o valor deste atributo. Depois implemente uma classe CriaInstancias que tenha o método main e dentro dele crie e inicialize um array de 10 pontos e depois apresente o conteúdo do atributo de classe

Exercícios 25



Acrescente à classe Ponto desenvolvida no exercício 1, um método para calcular a distância entre dois pontos recebidos como parâmetro (a fórmula é apresentada abaixo). Como tal método não utiliza nenhum atributo de classe, ele pode ser criado como um método de classe. Altere o método main da classe CriaInstancias para testar a utilização deste método

( x2 − x1 ) + ( y2 − y1 ) 2

2

Exercícios 26



Crie uma classe Funcionario para armazenar os seguintes dados de um funcionário: código, nome, RG, salário. Note que o código dos funcionários deve ser criado automaticamente. Agora implemente uma classe Cadastro que possua um ArrayList de funcionários e métodos para incluir, excluir e consultar dados de funcionários. Teste a utilização destas classes criando uma classe que implemente o método main e crie um cadastro de funcionários

Related Documents

Atributos
June 2020 15
Atributos Deus
November 2019 20
Pra
November 2019 64
Pra
June 2020 43
Pra
November 2019 67

More Documents from ""