Como passar usar um método com parâmetro sendo um objeto

Olá, pessoal estou com uma dúvida, tenho 2 classes uma delas estende uma outra para que eu possa usar os métodos “set” e “get”, mas gostaria de acessar um método que está em outra classe, eu vi em alguns tópicos que teria que passa no método que gostaria de usar ele como Objeto, mas o problema é que esse método que passei o parâmetro como objeto eu vou usá-lo novamente e não pode ter parâmetro e agora o que eu faço.

1º - Classe Custos: (que tem os métodos set e get)

public class Custos {

	private double impressao;
	private double fatorLucro;
	private boolean tipoAcabamento = false;
	private String papel;

	private double pags = 0;
	private double formatoLarg = 0;
	private double formatoAlt = 0;
	private double quant;

	private double acabCanoa = 0;
	private double acabLomb = 0;
	private double acabWireEspiral = 0;

	private double contatos = 0;

	private String acabCanoa2 = null;
	private String acabLomb2 = null;
	private String acabWireEspiral2 = null;

	private double valorCapa = 0;
	private double contatoCapa = 0;

	private String capaFrente = null;
	private String capaFrenteVerso = null;	
	

	public Custos() {		

	}



	public double getAcabWireEspiral() {
		return acabWireEspiral;
	}




	public void setAcabWireEspiral(double acabWireEspiral) {
		this.acabWireEspiral = acabWireEspiral;
	}




	public String getAcabWireEspiral2() {
		return acabWireEspiral2;
	}




	public void setAcabWireEspiral2(String acabWireEspiral2) {
		this.acabWireEspiral2 = acabWireEspiral2;
	}




	public String getCapaFrenteVerso() {
		return capaFrenteVerso;
	}


	public void setCapaFrenteVerso(String capaFrenteVerso) {
		this.capaFrenteVerso = capaFrenteVerso;
	}


	public String getCapaFrente() {
		return capaFrente;
	}


	public void setCapaFrente(String capaFrente) {
		this.capaFrente = capaFrente;
	}


	public double getContatoCapa() {
		return contatoCapa;
	}




	public void setContatoCapa(double contatoCapa) {
		this.contatoCapa = contatoCapa;
	}




	public double getValorCapa() {
		return valorCapa;
	}




	public void setValorCapa(double valorCapa) {
		this.valorCapa = valorCapa;
	}




	public String getAcabCanoa2() {
		return acabCanoa2;
	}




	public void setAcabCanoa2(String acabCanoa2) {
		this.acabCanoa2 = acabCanoa2;
	}




	public String getAcabLomb2() {
		return acabLomb2;
	}




	public void setAcabLomb2(String acabLomb2) {
		this.acabLomb2 = acabLomb2;
	}




	public double getContatos() {
		return contatos;
	}



	public void setContatos(double contatos) {
		this.contatos = contatos;
	}



	public double getAcabCanoa() {
		return acabCanoa;
	}

	public void setAcabCanoa(double acabCanoa) {
		this.acabCanoa = acabCanoa;
	}

	public double getAcabLomb() {
		return acabLomb;
	}

	public void setAcabLomb(double acabLomb) {
		this.acabLomb = acabLomb;
	}

	public double getImpressao() {
		return impressao;
	}

	public void setImpressao(double impressao) {
		this.impressao = impressao;
	}

	public double getFatorLucro() {
		return fatorLucro;
	}

	public void setFatorLucro(double fatorLucro) {
		this.fatorLucro = fatorLucro;
	}


	public String getPapel() {
		return papel;
	}

	public void setPapel(String papel) {
		this.papel = papel;
	}

	public boolean getTipoAcabamento() {
		return tipoAcabamento;
	}

	public void setTipoAcabamento(boolean tipoAcabamento) {
		this.tipoAcabamento = tipoAcabamento;
	}

	public double getPags() {
		return pags;
	}

	public void setPags(double pags) {
		this.pags = pags;
	}

	public double getFormatoLarg() {
		return formatoLarg;
	}

	public void setFormatoLarg(double formatoLarg) {
		this.formatoLarg = formatoLarg;
	}

	public double getFormatoAlt() {
		return formatoAlt;
	}

	public void setFormatoAlt(double formatoAlt) {
		this.formatoAlt = formatoAlt;
	}

	public double getQuant() {
		return quant;
	}

	public void setQuant(double quant) {
		this.quant = quant;
	}



}

2º - Classe Dorso (onde tem o método Dorso2() que gostaria de usar em outras classes.

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Dorso extends Custos{
	
	private double folhas = 0;
	private double total = 0;
	
	private BigDecimal bTotal;
	private BigDecimal bTotal2;
	
	public double dorso2() {			

		double conversao = 0;

		String papelGram [] = {"CB115", "CF115", "CB150", "CB170"};		


		if (papelGram[0] == getPapel()) {
			folhas = getPags() / 2;
			total = folhas * 0.11;				

			bTotal = new BigDecimal(total).setScale(1, RoundingMode.FLOOR);
			bTotal2 = bTotal.setScale(0, RoundingMode.CEILING);	
			
			conversao = bTotal2.doubleValue();				

		} else if (papelGram[1] == getPapel()) {
			folhas = getPags() / 2;
			total = folhas * 0.14;

			bTotal = new BigDecimal(total).setScale(1, RoundingMode.FLOOR);
			bTotal2 = bTotal.setScale(0, RoundingMode.CEILING);

			conversao = bTotal2.doubleValue();

		} else if (papelGram[2] == getPapel()) {
			folhas = getPags() / 2;
			total = folhas * 0.14;

			bTotal = new BigDecimal(total).setScale(1, RoundingMode.FLOOR);
			bTotal2 = bTotal.setScale(0, RoundingMode.CEILING);

			conversao = bTotal2.doubleValue();
			
		} else if (papelGram[3] == getPapel()) {
			folhas = getPags() / 2;
			total = folhas * 0.15;

			bTotal = new BigDecimal(total).setScale(1, RoundingMode.FLOOR);
			bTotal2 = bTotal.setScale(0, RoundingMode.CEILING);

			conversao = bTotal2.doubleValue();			

		} else {
			System.out.println("Campo vazio, ou nome inválido");	
		}	

		return conversao;
	}

}

3º Classe Contatos2: (essa que eu usaria o método dorso2() em outro método, que coloco abaixo e depois esse método seria usado dentro de outro método para checar os resultados. Vou colocar só os métodos que vou usar pq o código ficou grande.

public double corteDuploLombada() {
	
	double multContatos = 0;	
	//Dobrar o tamanho da largura do miolo para usar no cálculo de contatos da capa
	double tamCorteDuploLar = (((getFormatoLarg() * 2) + (dorso2() / 10)) + (getCorteDuplo() / 10));
	double contatosDuploLar = tamMaxLar / tamCorteDuploLar;
	BigDecimal bcontatosDuploLar = new BigDecimal(contatosDuploLar).setScale(0, RoundingMode.DOWN);
	double convContatosDuploLar = bcontatosDuploLar.doubleValue();

	double tamCorteDuploAlt = getFormatoAlt() + (getCorteDuplo() / 10);
	double contatosDuploAlt = tamMaxAlt / tamCorteDuploAlt;
	BigDecimal bcontatosDuploAlt = new BigDecimal(contatosDuploAlt).setScale(0, RoundingMode.DOWN);
	double convContatosDuploAlt = bcontatosDuploAlt.doubleValue();

	multContatos = ((convContatosDuploLar) * (convContatosDuploAlt));

	return multContatos;

}

public double contatosCapa1() {		
	double num = 0;

	if (verificarTamMaxDuplo1() && getCorteDuplo() > 0) {
		if (acabCanoa() == true) {
			num = corteDuploCanoa();
					
		} else if (acabLombQuadrada() == true) {
			num = corteDuploLombada();
			
		} 

	} else {
		System.out.println("Tamanho não suportado");			
	}

	return num;

}

No método que deseja, na classe que deseja

Dorso dorso = new Dorso();
double resultado = dorso.dorso2();

Qual a dificuldade?

Herança não é pra isso.

1 curtida

Desculpe pessoal sou iniciante de java!
Então eu fiz o que o Luis escreveu mais quando eu crio o método main ele retorna como 0.0 no resultado no dorso
como se eu não estivesse colocado nada, vou explicar melhor:
Esse programa verdade é um orçamento que usa como atributos algumas variáveis que tem String e double e boolean eles conversam entre sim, por exemplo esse dorso tem relação com as quantidade de paginas e o papel que será usado dependendo o que colocar ele dará um numero.

veja o método main:
Antes eu fiz o que o Luis disse veja:

public double testeDorso() {
	Dorso d = new Dorso();
	double resultado = d.dorso2();
	return resultado;
}

agora o método main

public static void main(String[] args) {
	Contatos2 c = new Contatos2();		
	

	c.setQuant(2);
	c.setPags(120);
	c.setPapel("CB150");
	c.setFormatoLarg(5);
	c.setFormatoAlt(9);
	
	c.setAcabCanoa2("");
	c.setAcabLomb2("X");
	

	c.setCorteDuplo(3);		
		
	System.out.println(c.testeDorso() + " mm dorso");
	
	System.out.println(c.checkContatosMiolo() + " contato miolo");
	System.out.println(c.checkContatosCapa() + " contato capa");
	

}

Criou um tópico novo com o mesmo problema:


De novo usando herança???

Sim criei, pois não obtive resposta, ae tentei usar o que você disse e fiquei com mais outras dúvidas.

Deixa eu te lembrar algumas coisas: Você está num fórum onde as pessoas respondem, ninguém aqui ganha nada (além de conhecimento e informação) para responder, logo, não são funcionários e não vivem disso. Aliás, possuem vida, estudam, trabalham, tem amigos, parentes, filhos, esposas, pais, mães, etc.
Se você não teve a resposta que queria, é sua obrigação ir atrás de mais informação. Dificilmente alguém fará o código para ti ou mesmo trará respostas prontas.
Falando nisso, boa parte do que você vai fazer na vida de desenvolvedor é pegar pedaços de coisas distintas e juntar para ter um frankenstein funcional, que resolva um ou mais problemas.
Logo, se quiser respostas prontas, saiba que tudo tem preço (e nem sempre é barato). Como você quer pagar, você decide, se estudando e aprendendo ou se prefere ficar sentado sobre o problema e pagar alguém que saiba para fazer.

Dito isso, eu te dei um caminho, pelo visto você se perdeu na floresta depois disso.
Entenda, quando você faz isso

Dorso dorso = new Dorso();
double resultado = dorso.dorso2();

Está, apenas, declarando, instanciando e obtendo o retorno de um método.
Em que momento você definiu os valores que são (ou deveriam) ser utilizados no desenvolvimento da lógica dentro do método dorso2() (aliás, por que desse nome esdrúxulo para o método?)

1 curtida

Boa tarde!
Então eu consegui resolver o problema pensando que para tal precisaria criar novos atributos na classe que estava que faziam referência com o método que estava em outra classe usando parte do que vocês me passaram “seria um construtor com atributos” mas até então eu não estava conseguindo descobrir que "teria que criar também os mesmos atributos na classe que ia usá-los. por exemplo:

na classe que estava com o “dorso” (e detalhe esse nome “dorso” é usando em indústria gráfica onde quem conhece o sistema saberia identificar do que se trata – seria a lombada de um livro em milímetros)

public Dorso(String papel, double pags) {		
	this.setPapel(papel);
	this.setPags(pags);

Agora na classe q eu vou usar eu fiz isso:

public double dorso() {
	Dorso d = new Dorso(getPapel(), getPags());
	double dorso = d.dorso2();
	return dorso;
	
}

Me desculpe pelo meu desespero, eu compreendo tudo isso que você disse, mas como recebi uma explicação que não tinha entendido muito bem, aí eu perguntei e passou alguns dias e nada, tentei e tentei fiz uma nova pergunta um pouco diferente para que outras pessoas pudesse me ajudar. Na verdade foi isso que aconteceu, mas enfim eu consegui não sei se de uma maneira correta, mais deu certo, se puderem me ajudar eu agradeço!

Obrigado