CRIANDO OBJETOS EM JAVA LP II Professora Lucélia Instanciação de um objeto: Construtor • Objetos são criados através do operador new, seguido de um método construtor. – Exemplo: Automovel gol = new Automovel( ); • Um construtor recebe sempre o mesmo nome da sua classe; • Se o programador não definir um construtor, o compilador fará isso automaticamente. Instanciação de um objeto: Construtor • O método construtor gera uma instância do objeto em memória e o seu código é executado imediatamente após a criação do objeto provendo-lhe um estado inicial; • Uma classe pode ter construtores especializados ou somente o construtor default(gerado pelo compilador); Instanciação de um objeto: Construtor • Valores de parâmetros podem ser passados no momento da criação; • Considerando o exemplo: Automovel gol = new Automovel( ); ? String modelo; ? String cor; ? int ano; Construtores sem argumentos • Ao instanciar objetos utilizando construtores sem argumentos, por exemplo: Pessoa Victor = new Pessoa( ); inicializamos objetos com seus valores default. • Variáveis numéricas recebem zero, valores lógicos recebem false e objetos recebem null. • Dependendo da necessidade, uma classe pode conter vários construtores declarados, todos devem ter o mesmo nome (o nome da . classe) • O construtor é responsável por alocar espaço na memória para a manipulação do novo objeto que está sendo criado. • O construtor pode conter a chamada para outros métodos, possibilitando a criação de objetos mais complexos. Exemplo: public class Automovel{ String modelo, cor; int ano; public Automovel( ){ } public Automovel (String modelo){ this.modelo = modelo; } public Automovel(int ano){ this.ano = ano; } public Automovel(String modelo, String cor){ this.modelo = modelo; this.cor = cor; this.ano = 2007; } } • O primeiro construtor não recebe nenhum argumento, inicializando as variáveis com valores default: public Automovel( ){ } • Este construtor recebe o argumento modelo, inicializando a variável modelo com o valor fornecido e as demais variáveis com o valor default: public Automovel (String modelo){ this.codigo = modelo; } • Este construtor recebe o argumento ano, inicializando a variável ano com o valor fornecido e as demais variáveis com o valor default: public Automovel(int ano){ this.ano = ano; } • Este construtor recebe os argumentos modelo e cor, inicializando os valores fornecidos e as variável ano com o conteúdo 2007. • O uso da palavra this em “this.ano = 2007;” é opcional, uma vez que não existe nenhuma variável local ao método com o nome cidade. public Automovel(String modelo, String cor){ this.modelo = modelo; this.cor = cor; this.ano = 2007; } Exemplo public class UsaAutomovel{ public static void main (String args[ ]){ Automovel fusca = new Automovel(); Automovel gol = new Automovel(“Gol”); Automovel monza = new Automovel(1990); Automovel siena = new Automovel(“siena”, “Prata”); System.out.println(fusca.modelo+” - ”+fusca.ano+” - ”+fusca.cor); System.out.println(gol.modelo+” - ”+ gol.ano+” - ”+gol.cor); System.out.println(monza.modelo+” - ”+ monza.ano+” - ”+monza.cor); System.out.println(siena.modelo+” - ”+ siena.ano+” - ”+siena.cor); } } Continuação do exemplo anterior utilizando outro método: import javax.swing.JOptionPane; public class Automovel{ String modelo, cor; int ano; boolean estadoMotor = false; public void ligaMotor( ) { estadoMotor = true; } public void informaDados( ){ String motorString; if (estadoMotor){ motorString = "ligado"; } else{ motorString = "desligado"; } JOptionPane.showMessageDialog(null, "Automóvel "+ modelo+ " " +ano+ " "+cor+" "+motorString); } } public class AgenciaAutomoveis{ public static void main (String args[]){ Automovel fusca = new Automovel(); Automovel gol = new Automovel(); Automovel monza = new Automovel(); fusca.modelo = "Fusca"; fusca.cor = "Preto"; fusca.ano = 69; gol.modelo = "Gol"; gol.cor = "Vermelho"; gol.ano = 70; monza.modelo = "Monza"; monza.cor = "Prata"; monza.ano=94; //Ligando os motores fusca.ligaMotor(); monza.ligaMotor(); //Mostrando as informações fusca.informaDados(); gol.informaDados(); monza.informaDados(); }} Exercício 1: 1. Construa uma classe chamada Pessoa com as variáveis: cpf, nome e telefone. 2. Crie três tipos de métodos construtores diferentes para esta classe. 3. Construa outra classe com o nome: UsaPessoa e instancie três objetos da classe Pessoa. 4. Mostre as informações dos objetos instanciados. 5. Faça alterações nos atributos dos objetos e mostre as informações alteradas. Exercício 2: 1. Construa uma classe com o nome Operacoes, crie, nesta classe quatro métodos estáticos: somar, multiplicar, subtrair e dividir. Todos os métodos deverão ter dois argumentos do tipo inteiro e deverá mostrar o resultado dentro do próprio método. Neste caso, os métodos não precisarão retornar nada (void). 2. Crie uma classe que contenha o método main para executar a classe Operacoes. 3. Faça a leitura de dois números e mostre os resultados das quatro operações para estes quatro números lidos, chamando os métodos da classe Operacoes. Exercício 3: 1. 2. 3. Construa uma classe com o nome Operacoes2, crie, nesta classe quatro métodos estáticos: somar, multiplicar, subtrair e dividir. Todos os métodos deverão retornar o resultado da operação efetuada. Neste caso, os métodos precisarão retornar um valor int ou double. Crie uma classe chamada MostraResultados que contenha o método main para executar a classe Operacoes2 e mostrar os valores retornados pelos métodos implementados na classe Operacoes2. Faça a leitura de dois números e mostre os resultados das quatro operações para estes quatro números lidos. OBS: o código para mostrar os valores deverá estar na classe MostraResultados public class ExemplosMetodos{ int ano; //Construtor padrão public ExemplosMetodos(){ } //Outro exemplo de construtor public ExemplosMetodos(int ano){ this.ano = ano; } //Método sem argumento e sem retorno public void soma(){ } //Método com argumento e sem retorno public void soma(int n1, int n2){ } //Método com argumento e com retorno public int soma(int n1, int n2){ return n1 + n2; } //Método sem argumento e com retorno public String le(){ return nome; } } Exemplos de Construtores e Métodos