Atributos e Métodos de Classe

Documentos relacionados
Sobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga

Algoritmos e Programação II. Sobrecarga

Classes, instâncias e métodos de acesso. prática

Aula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):

Programação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno

Atributos e Métodos Estáticos

Linguagem de Programação III

Linguagem de Programação II Implementação

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

Vetores Unimensionais

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Aula 6 POO 1 Construtores. Profa. Elaine Faria UFU

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Programação de Computadores I. Aula - Vetores. Professor Ilaim Costa Junior.

Linguagem de Programação III

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.

Análise de Programação

Vetores Unimensionais

final class UltimosDiasMeses{ static final int[] DIAS_DO_MES = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; }

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Programação Orientada a Objetos em Java

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

INSTRUÇÕES DE REPETIÇÃO

Dados armazenados em um objeto podem ser tanto primitivos, tais como inteiros ou caracteres, ou referências para outros objetos.

Lógica de Programação e Algoritmos

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

Linguagem de Programação II Implementação

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Classes e Objetos. Sintaxe de classe em Java

Conceitos Básicos da Programação OO

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

Introdução a Programação. Tipos Estruturados de Dados

Lição 7 Array em Java

Aula 2 POO 1 Prática. Profa. Elaine Faria UFU

Arrays em Java. Introdução à Programação. Bruno Cartaxo

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Arrays em Java. Prof. Renato Pimentel. GGI030 Programação Orientada a Objetos. Universidade Federal de Uberlândia Faculdade de Computação

Exercícios com arrays unidimensionais

Fundamentos de Programação. Linguagem C++ aula II - Variáveis e constantes. Prof.: Bruno Gomes

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Vetores Unimensionais

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Programação por Objectos. Java

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Algoritmos II prof. Daniel Oliveira

Programação Orientada a Objetos (DPADF 0063)

1 Introdução e Conceitos básicos

Java Variáveis e Controle Fluxo

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Construtores. Introdução

Variáveis primitivas e Controle de fluxo

Relacionamentos entre objetos

Técnicas de Programação II

Linguagem de programação métodos/funções

AULA 11 PROGRAMAÇÃO ORIENTADA A OBJETOS (INTRODUÇÃO) Disciplina: Programação Orientada a Objetos Professora: Alba Lopes

Operadores e Estruturas de Decisão. Vanessa Braganholo

POO fundamentos Parte II. Professor Vicente Paulo de Camargo

Polimorfismo e Ligação Dinâmica. Alcides Pamplona Polimorfismo e Ligação Dinâmica

Aula 7 Modularização. Processamento da Informação. Universidade Federal do ABC

Exercícios sobre repetição. 1. Escreva um método que lê via teclado 8 números e retorna a quantidade de negativos.

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Quinta aula

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

DIRETORIA ACADÊMICA DE GESTÃO E TECNOLOGIA DA INFORMAÇÃO DIATINF TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TADS

Aula teórica 11. Tema 11. Repetição. Ciclo while Ciclo do-while Ciclo for

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Aula teórica 14. Tema 12. Subprogramas (cont)

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Operadores e Estruturas de Decisão

Transcrição:

Algoritmos e Programação II Aula 5 Atributos e Métodos de Carga *Adaptado do material do Prof. Júlio Machado e Profa. Isabel Manssour Atributos e Métodos de Classe 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 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 1

public class TestaMath { public static void main(string args[]) { System.out.println("PI = " + Math.PI); System.out.println("E = " + Math.E); Note que os atributos públicos não foram acessados a partir de um objeto! Os atributos foram acessados pelo nome da classe 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> Exemplo: classe Circulo Nos métodos de cálculo da á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) 2

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

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>) Exemplo: classe Professor Contador para o número de objetos instanciados Método para saber o valor do contador 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); Exemplo: Classe Professor Professor p3 = new Professor("Fulano", 777, 12); System.out.println("Total Objetos = " + Professor.getTotalInstancias()); Professor p4 = new Professor("Beltrano", 888, 20); System.out.println("Total Objetos = " + p4.gettotalinstancias()); 4

Estudo de caso 1 A famosa aplicação Alô Mundo : public class AloMundo { public static void main(string args[]) { System.out.println("Alo Mundo!"); 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 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 5

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 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 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 6

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

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 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 1) 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. 8

2) 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. 3) 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. 9