Baixe o app para aproveitar ainda mais
Prévia do material em texto
MODIFICADOR STATIC E PRÁTICA Thaís Alves Burity Rocha Agenda Modificador static Exercícios Encapsulamento static Introdução Cada objeto possui seus próprios atributos, com valores próprios Estado do objeto Objetos executam métodos Atributos devem ser acessados apenas por métodos (encapsulamento) Apesar disso, existem informações que podem ser comuns à todos os objetos Também existem operações que não dependem do estado dos objetos Exemplo public class Conta{ private String numero; private double saldo; public int totalContas; public Conta(String n, double s){ totalContas = totalContas + 1; this.numero = n + “-” + totalContas; this.saldo = s; } ... } Registra o total de contas existentes Dessa forma, cada objeto vai ter seu próprio atributo totalContas, que vai valer 1 Modificador static Sinaliza que o atributo ou método pertence à classe e não à uma instância específica Acesso pode ser feito usando o nome da classe ou mesmo usando uma referência para um objeto da classe O ponto-chave aqui é que o acesso não requer uma instância da classe Atributo static: Exemplo public class Conta{ private String numero; private double saldo; public static int totalContas = 0; public Conta(String n, double s){ totalContas = totalContas + 1; this.numero = n + “-” + totalContas; this.saldo = s; } } totalContas é um atributo de toda a classe Agora, o atributo totalContas é compartilhado por todos os objetos da classe, que recebeu 0 apenas quando criado Atributo static: Exemplo c d Conta c = new Conta(“11139”, 1240.55); System.out.println(c.totalContas); System.out.println(Conta.totalContas); Conta d = new Conta(“11140”, 265); System.out.println(d.totalContas); System.out.println(c.totalContas); Conta.totalContas = Conta.totalContas + 1; System.out.println(Conta.totalContas); Método static: Exemplo public class Conta{ private String numero; private double saldo; private static int totalContas = 0; ... public static int getTotalContas(){ return totalContas; } } Se o método getTotalContas() não for static, será necessário ter um objeto Conta para chamá-lo. Sendo static, o método pode ser executado sem um objeto! Método static: Exemplo c d Conta c = new Conta(“11139”, 1240.55, cliente); System.out.println(c.getTotalContas()); System.out.println(Conta.getTotalContas()); ... Conta d = new Conta(“11140”, 265, cliente); System.out.println(d.getTotalContas()); System.out.println(c.getTotalContas()); Modificador static: Regras Membros static podem ser acessados por métodos não static Métodos static não podem acessar atributos e nem métodos que não sejam static //método a ser chamado no construtor de Conta private void configNumero(String n){ numero = n +“-”+ getTotalContas(); } public static int getTotalContas(){ numero = null; //não faz sentido return totalContas; } Modificador static: Utilidade Manter controle sobre processamento Exemplo: Saber quantos objetos de uma dada classe foram instanciados Construir classes “utilitárias” Exemplo: java.lang.Math Operações numéricas básicas (raiz quadrada, logaritmo, funções trigonométricas, etc…) A lógica é que o comportamento dos métodos não depende do estado de um objeto Modificador static: Exemplo da API Método main Método de impressão no console public static void main (String[] args){ } System.out.println(<mensagem>); Variável static Método não static Exercícios Lista 2: Questão 1 A) Crie os pacotes entidade e main. B) Mova as classes Conta, Cliente e Endereco para o pacote entidade. C) Mova a classe Main para o pacote main. D) Atualize a classe Conta utilizando modificadores de acesso para os atributos e métodos. E) Atualize a classe Conta incluindo métodos getters e setters (que façam sentido). J) Atualize a classe Conta para incluir a variável contador (static, int). Essa variável deverá ser inicializada com 0 e sempre que um objeto for instanciado ela deverá ser incrementada. A classe Conta deverá proteger o acesso a essa variável, de maneira que seu valor nunca possa ser alterado fora da classe. Lista 2: Questão 3 Utilizando a classe Math (java.lang.Math) da API de Java, crie uma classe denominada TesteMath, adicione o método main e então, utilizando a saída padrão, exiba o resultado das seguintes operações: Math.pow(x, y) Math.sqrt(x) Math.round(x) Math.max(x,y) Math.random() Para entender o que é cada método, consulte a documentação da classe Math. Entrega Diretrizes Gerais Prazo e pontuação Até 12h do dia seguinte, vale 100% Entre 12h e 23h59 do dia seguinte, vale 50% A partir daí, não vale nada Diretrizes Gerais Formato Criar um arquivo .jar com todo o código-fonte (arquivos .java) e enviar por e-mail Assunto do e-mail: POO_AP2_NomeCompletoCaptalizado E-mail de destino: thais.burity@uag.ufrpe.br Nome do arquivo: POO_AP2_NomeCompletoCaptalizado.jar Exemplo: Se o nome do aluno é José Alves, o assunto do e- mail deverá ser “POO_AP2_ JoseAlves” e o arquivo em anexo deverá ser “POO_AP2_JoseAlves.jar” Entregas que não seguirem o formato serão desconsideradas
Compartilhar