Objeto de tipo objeto

5 respostas
java-se
C

Olá, pessoal.

Estou aprendendo POO em java e cheguei no tópico construtores mas estou com dificuldades na implementação dos métodos get e set para um dos meus atributos.

No código abaixo segue minha classe DadosTitular:

class DadosTitular {

private String nome;

private String rg;

private String cpf;

private String endereco;

Agora segue minha outra classe DadosDaConta:

class DadosDaConta {
private DadosTitular titular;
private int agencia = 280;
private int numeroConta;
private double saldo;
private String dataDeAbertura;
private double limiteChequeEspecial = 500;

Estou com dificuldade em criar um construtor SET e outro GET para o atributo titular visto que o tipo de dado dele é uma classe. Alguém sabe como posso atribuir um valor para o titular utilizando set? Em qual classe coloco na DadosDaConta ou DadosTitular?

Obs.: Os demais construtores para os atributos da classe DadosDaConta consegui fazer e rodou certinho.

Desde já agradeço as contribuições. :slight_smile:

5 Respostas

Jothar_Aleksander

Construtor SET, construtor GET? Acho que tu precisa estudar mais sobre POO e Java. Os termos corretos são métodos modificadores (setters) e métodos acessores (getters).
Distinguindo…

1 - Construtor: não é propriamente um método. Sempre tem o mesmo nome da classe (e, portanto, começa com letra maiúscula); nunca retornam um valor, nem mesmo null, logo não tem um tipo de retorno; tem por função inicializar os ‘atributos’ da classe no momento da instanciação de um objeto

Exemplo:

public class DadosDaConta {
	private int agencia;
	
	public DadosDaConta(double valor){// Construtor da classe DadosDaConta
		this.agencia = valor;
	}
}

2 - Método: é grafado com a primeira letra minúscula; Sempre tem um tipo de retorno, mesmo que seja null (void); tem por função descrever um comportamento dos objetos da classe. No caso dos métodos setters e getters, destinam-se a possibilitar operar com propriedades (‘atributos’) privadas, logo sempre são métodos públicos (ou em alguns raros casos, protegidos).

public class DadosDaConta {
	private DadosTitular titular;
	private int agencia = 280;
	private int numeroConta;
	private double saldo;
	private String dataDeAbertura;
	private double limiteChequeEspecial = 500;
	
	/*
	* Métodos modificadores e acessores do titular de DadosDaConta
	*/
	public void setTitular(DadosTitular titular){
		this.titular = titular;
	}
	
	public DadosTitular getTitular(){
		return titular;
	}
	
	[...]
}
Fabio_Dos_Reis

Olá @Caio3015, você tem que entender que a classe que você cria nada mais é do que um tipo de dado que serve para agrupar outros tipos de dados(além de possuir métodos).

Sendo assim para criar os métodos de encapsulamento set e get basta retornar o tipo de dado correto que é a sua classe

public void setEndereco(Endereco endereco){}
public Endereco getEndereco(){}

A sintaxe é a mesma coisa substituir o tipo Endereço pelo tipo String por exemplo

C

Então, estou tendo dificuldade na hora de fazer a referência:

public class Agencia {
public static void main(String[] args) {
	Conta conta1 = new Conta();
	Cliente cliente1 = new Cliente();
	
	
	
	conta1.titular.setNome("Joaquim");
	conta1.titular.setIdade(32);
}

}

Quando vou executar dá um erro de referência, isso pq eu não fiz referência para a conta1 receber os atributos de cliente1. Eu precisava que a classe Conta recebesse os atributos de Cliente.

public class Cliente {
private String nome;
private int idade;


public class Conta {
Cliente titular;
private int numeroConta;
private int agencia;
Fabio_Dos_Reis
Para setar o titular seria algo como

Cliente cliente = new Cliente();

cliente.setNome(Nome do Cliente);

Conta conta = new Conta();
conta.setCliente(cliente);

para acessar o cliente da conta

Cliente clienteDaConta = conta.getCliente();

Jothar_Aleksander

Exemplo:

1 - DadosDaConta:

class DadosDaConta {
	private DadosTitular titular;
	private Agencia agencia;
	private int numeroConta;
	private double saldo;
	private String dataDeAbertura;
	private double limiteChequeEspecial = 500;
	
	/*
	* Métodos acessores e modificadores
	*/
	public void setTitular(DadosTitular titular){
		this.titular = titular;
	}
	
	public DadosTitular getTitular(){
		return titular;
	}
	
	public void setAgencia(Agencia agencia){
		this.agencia = agencia;
	}
	
	public Agencia getAgencia(){
		return agencia;
	}
	
	public void setNumeroConta(int numeroConta){
		this.numeroConta = numeroConta;
	}
	
	public int getNumeroConta(){
		return numeroConta;
	}
	
	public void setSaldo(double saldo){
		this.saldo = saldo;
	}
	
	public double getSaldo(){
		return saldo;
	}
	
	public void setDataDeAbertura(String dataDeAbertura){
		this.dataDeAbertura = dataDeAbertura;
	}
	
	public String getDataDeAbertura(){
		return dataDeAbertura;
	}
	
	public void setLimiteChequeEspecial(double limiteChequeEspecial){
		this.limiteChequeEspecial = limiteChequeEspecial;
	}
	
	public double getLimiteChequeEspecial(){
		return limiteChequeEspecial;
	}
}

2 - DadosTitular:

class DadosTitular {
	private String nome;
	private String rg;
	private String cpf;
	private String endereco;
	
	/*
	* Métodos acessores e modificadores
	*/
	public void setNome(String nome){
		this.nome = nome;
	}
	
	public String getNome(){
		return nome;
	}
	
	public void setRG(String rg){
		this.rg = rg;
	}
	
	public String getRG(){
		return rg;
	}
	
	public void setCPF(String cpf){
		this.cpf = cpf;
	}
	
	public String getCPF(){
		return cpf;
	}
	
	public void setEndereco(String endereco){
		this.endereco = endereco;
	}
	
	public String getEndereco(){
		return endereco;
	}
}

3 - Agencia

public class Agencia {
	private int codigoAgencia;
	private String enderecoAgencia;
	private String cidade;
	private String uf;
	
	public static void main(String[] args){
		Agencia agencia = new Agencia();
		DadosDaConta conta1 = new DadosDaConta();
		DadosDaConta conta2 = new DadosDaConta();
		DadosTitular cliente1 = new DadosTitular();
		DadosTitular cliente2 = new DadosTitular();
		
		cliente1.setNome("Fulano de Beltrano da Silva");
		cliente1.setRG("43.608.660-8");
		cliente1.setCPF("[CPF removido]");
		cliente1.setEndereco("Travessa dos Bandeirantes, 109, Centro, Loanda-PR");
		
		cliente2.setNome("Beltrano de Sicrano de Souza");
		cliente2.setRG("37.483.916-5");
		cliente2.setCPF("[CPF removido]");
		cliente2.setEndereco("Rua Gustavo Brigagão, 37, Alto da Glória, Porto Rico-PR");
		
		agencia.setCodigoAgencia(0520);
		agencia.setEnderecoAgencia("Avenida São Paulo, 1478, Centro");
		agencia.setCidade("Loanda");
		agencia.setUF("PR");
		
		conta1.setTitular(cliente2);
		conta1.setAgencia(agencia);
		conta1.setNumeroConta(3859);
		conta1.setSaldo(285.16);
		conta1.setDataDeAbertura("23/02/2019");
		
		conta2.setTitular(cliente1);
		conta2.setAgencia(agencia);
		conta2.setNumeroConta(137008);
		conta2.setSaldo(1017.28);
		conta2.setDataDeAbertura("30/09/2019");
		conta2.setLimiteChequeEspecial(850.00);
		
		
		System.out.println("======================================================================");
		System.out.println("\t\t\t\tResumo");
		System.out.println("----------------------------------------------------------------------");
		System.out.println("Titular: " + conta1.getTitular().getNome());
		System.out.println("RG: " + conta1.getTitular().getRG());
		System.out.println("CPF: " + conta1.getTitular().getCPF());
		System.out.println("Endereço: " + conta1.getTitular().getEndereco());
		System.out.println("Conta: " + conta1.getNumeroConta() + "\n");
		System.out.println("Agencia: " + conta1.getAgencia().getCodigoAgencia());
		System.out.println("\t" + conta1.getAgencia().getEnderecoAgencia());
		System.out.println("\t" + conta1.getAgencia().getCidade() + "-" + conta1.getAgencia().getUF());
		System.out.println("Saldo: " + conta1.getSaldo());
		System.out.println("Abertura: " + conta1.getDataDeAbertura());
		System.out.println("Cheque Especial: " + conta1.getLimiteChequeEspecial());
		System.out.println("\n----------------------------------------------------------------------");
		System.out.println("Titular: " + conta2.getTitular().getNome());
		System.out.println("RG: " + conta2.getTitular().getRG());
		System.out.println("CPF: " + conta2.getTitular().getCPF());
		System.out.println("Endereço: " + conta2.getTitular().getEndereco());
		System.out.println("Conta: " + conta2.getNumeroConta() + "\n");
		System.out.println("Agencia: " + conta2.getAgencia().getCodigoAgencia());
		System.out.println("\t" + conta2.getAgencia().getEnderecoAgencia());
		System.out.println("\t" + conta2.getAgencia().getCidade() + "-" + conta1.getAgencia().getUF());
		System.out.println("Saldo: " + conta2.getSaldo());
		System.out.println("Abertura: " + conta2.getDataDeAbertura());
		System.out.println("Cheque Especial: " + conta2.getLimiteChequeEspecial());
		System.out.println("======================================================================");
		
		System.out.println();
	}
	
	/*
	* Métodos acessores e modificadores
	*/
	public void setCodigoAgencia(int codigoAgencia){
		this.codigoAgencia = codigoAgencia;
	}
	
	public int getCodigoAgencia(){
		return codigoAgencia;
	}
	
	public void setEnderecoAgencia(String enderecoAgencia){
		this.enderecoAgencia = enderecoAgencia;
	}
	
	public String getEnderecoAgencia(){
		return enderecoAgencia;
	}
	
	public void setCidade(String cidade){
		this.cidade = cidade;
	}
	
	public String getCidade(){
		return cidade;
	}
	
	public void setUF(String uf){
		this.uf = uf;
	}
	
	public String getUF(){
		return uf;
	}
}

Rodando…

Criado 30 de setembro de 2019
Ultima resposta 30 de set. de 2019
Respostas 5
Participantes 3