Gerenciador de vendas

Olá pessoal!

Boa noite!
Estou criando um gerenciador de vendas e estou com o seguinte problema. Criei a classe Produto, a classe Cliente e a classe Venda, falta criar outras mas no momento estou com problemas em fazer a agregação entre a classe Produto e a Classe venda. O que eu fiz foi o seguinte, mas não está dando certo e queria um caminho para poder resolver…

Agradeço desde já a atenção e o apoio!

public class Cliente {
private String nome;
private String endereco;

public Cliente() {
	this.nome = " ";
	this.endereco = " ";
}

public Cliente(String nome) {
	this.nome = nome;
	this.endereco = " ";
}

public Cliente(String nome, String endereco) {
	this.nome = nome;
	this.endereco = endereco;
}


public String getEndereco() {
	
	return this.endereco;
	
}

public void setEndereco(String endereco) {
	
	this.endereco = endereco;
}

public String imprimeCliente() {
	
	return "Cliente: " + this.nome + "\n Endereco: " + this.endereco;
}

}

public class Produto {
private String descricao;
double preco;
int total=0;

public Produto(String descricao, double preco) {		
	this.descricao = descricao;
	this.preco = preco;		
}

public double getTotal() {		
	return total;		
}

public String imprimeProduto(String descricao, double preco) {
	return "Produto: "  + this.descricao + " Total:" + this.total;
}

}

import java.util.*;

public class Venda {
int quantProd = 5;
Date data = new Date();
private Cliente cliente;
private Produto[] p = new Produto[quantProd];
private int total=0;
private int numProdutos=0;
private int i = 0;

public Venda(Date data) {		
	this.p = new Produto[quantProd];
	this.cliente = new Cliente(null); 
	this.data = data;
	this.total = 0;
}

public Venda(Date data, Cliente cliente) {		
	this.p = new Produto[quantProd];
	this.cliente = new Cliente();
	this.data = data;
	this.total = 0;			
}

public Venda(Date data, Cliente cliente, Produto[] p) {		
	this.p = new Produto[quantProd];
	this.cliente = new Cliente(null, null);
	this.data = data;
	this.total = 0;			
}

public double getTotal() {		
		total += p.preco[i];
	return total;		
}

void adicioneProduto(Produto[] p) {
	for p in produtos				
}


public Produto getProduto(int i) {
	return this.getProduto(0);
}

public int getNumProdutos() {
    return this.numProdutos;
}

public String imprimeVenda() {
	return data + " " + cliente + " " + preco.Produto[i] + " " + descricao.Produto[i]; 
}

}