Como criar um método com 3 classes

Eu possuo uma classe principal NotaFiscal e esta classe tem associação com ItemNota onde esta associada a Produto.
Na classe NotaFiscal preciso de um metodo que pegue quantidade do ItemNota, e também pegue codigo, descrcao e preco da classe Produto

Este método terá o nome de adicionarItens…que no caso fiz assim:

public static void adicionarItem(Produto prod, int qtd) { ItemNota it = new ItemNota(); it.setProduto(prod); it.setQuant(qtd); // adiciona item na lista de itens // items.add(it); }

A duvida é eu precisaria deste método onde o preco calcule preco do produto multiplicado por quant da classe item nota.
Existe outras duas classes chamadas ICMSRS e ICMSSC, onde a icms o imposto é de 17% sobre o valor total do calculo preco x quant que no caso chamarei de ValorParcial…

Neste médoto se eu disser que uf (atributo na classe NotaFiscal) for 1 então é RS e pega os 17% para aplicar no ValorParcial se for 2 pegao 12%.
Minha duvida é montar com uso de get /set…o método e chamar num main…Pois nesse metodo vou aplicar a utilização de JUnit classe de TestImposto

CLASSE NOTAFISCAL


public abstract class NotaFiscal {

	private static int codigo;
	private Date data;
	private static String uf;

	public static void main(String[] args) {

		ItemNota item = new ItemNota();
		System.out.println(item.getQuant());
		System.out.println(item.getDescricao());
		System.out.println(item.getCodigo());

	}

	// private static List<ItemNota> items;

	public int getCodigo() {
		return codigo;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	public Date getData() {
		return data;
	}

	public void setData(Date data) {
		this.data = data;
	}

	public String getUf() {
		return uf;
	}

	public void setUf(String uf) {
		this.uf = uf;
	}

	// public List<ItemNota> getItems() {return items;}

	public static void adicionarItem(Produto prod, int qtd) {
		ItemNota it = new ItemNota();
		it.setProduto(prod);
		it.setQuant(qtd);
		// adiciona item na lista de itens
		// items.add(it);
	}

	public void calcularTotal() {/* return */
	}

	public void calcularTotalSemipostos() { /* return */
	}

	public NotaFiscal(Date data, String uf) {
		super();
		this.data = data;
		this.uf = uf;
		// this.items = new ArrayList<ItemNota>();
	}

}

CLASSE ITEMNOTA

public class ItemNota {
	private Produto produto;
	private int quant = 3;

	

	// setter's
	public void setProduto(Produto produto) {this.produto = produto;}
	public void setQuant(int quant) {this.quant = quant;}

	// get's
	public Produto getProduto() {return produto;}
	public int getQuant() {return quant;}
	public float getValorParcial() {return quant * produto.getPreco();}
	public String getDescricao() {return null;}
	public int getCodigo(){return produto.getCodigo();}
}

CLASSE PRODUTO


public class Produto {
	private int codigo;
	private String descricao;
	private float preco;

	public Produto(int codigo, String descricao, float preco) {
		super();
		this.codigo = codigo;
		this.descricao = descricao;
		this.preco = preco;
	}

	public Produto(String preco2, String codigo2) {
		// TODO Auto-generated constructor stub
	}

	
	//setter's
	public int getCodigo() {
		return codigo;
	}

	public void setCodigo(int codigo) {this.codigo = codigo;}
	public void setDescricao(String descricao) {this.descricao = descricao;}
	public void setPreco(float preco) {this.preco = preco;}
	
	public String getDescricao() {return descricao;}
	public float getPreco() {return preco;}

	@Override
	public String toString() {
		return "Produto [codigo=" + codigo + ", descricao=" + descricao
				+ ", preco=" + preco + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + codigo;
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Produto other = (Produto) obj;
		if (codigo != other.codigo)
			return false;
		return true;
	}

	public String getQuantidade() {	return null;}

	public String getValorParcial() {return null;}

}

CLASSE ICSM RS

public class CalculoICMSRS {
	int imposto = 17;

	public int getImposto() {
		return imposto;
	}

	public void setImposto(int imposto) {
		this.imposto = imposto;
	}

}

CLASSE ICMS SC

[code]

public class CalculoICMSSC {
int imposto = 12;

public int getImposto() {
	return imposto;
}

public void setImposto(int imposto) {
	this.imposto = imposto;
}

}[/code]