Associação Binária - Ajuda com como fazer 1 - * 20 em 3 classes

Boa noite pessoal.

Conforme andam minhas aulas da Faculdade, surgem as dúvidas.

Meu professor passou para fazer 3 classes, como na imagem anéxa e então criar a associação entre as classes. Eu não consigo imaginar como realemnte fica, segue meu código abairo.

Minhas dúvidas:

  1. como crio essa associação de 20 cheques para 1 talão? Tenho que criar um método para isso, defino na aplicação, na classe talão ou na própria classe Cheque? Eu acreditava que faria 20 objetos da classe cheque pela classe talão, estou errado?
  2. Como faço esses 20 objetos, crio uma matriz normal?
  3. Se alguem puder me dar uma força, apontar sites para estudo quanto a isso, não achei nada alem de associação normal 1 para 1, para muitos.

Códigos que tenho:

public class Cheque {
    private String CodBanco;
    private String Agencia;
    private String Conta;
    private int Numero;
    private double Valor;
    
    private Talao linkTalao;
    
    public Cheque (String cB, String Ag, String Cnt, int Num){
        CodBanco = cB;
        Agencia = Ag;
        Conta = Cnt;
        Numero = Num;
    }
    public void setValor (double vlCh){
        this.Valor = vlCh;
    }
    public int getNumero(){
        return Numero;
    }
    public double getValor(){
        return Valor;
    }
    public void Talao(Talao t){
        linkTalao = t;
    }
}

Cliente

public class Cliente {
    private String Identificacao;
    private String Nome;
    
    private Talao LinkTalao; //Ligação com Talão
    
    public Cliente(String n, String id){
        Identificacao = id;
        Nome = n;
    }
    public void setTalao(Talao LinkCli){
        LinkTalao = LinkCli;
    }
}

Talão

public class Talao {
    private double Saldo;
    private Cheque LinkCheque;  //Ligação com CHEQUES.
    static final int numMaxCheques=20;
    private Cheque TabCheque[];
    //private  Cheque lnkCheque;
    
    public Talao(double SaldoCliente){
        Saldo = SaldoCliente;
    }
    public void emitirCheque(double Valor){
        double val = Valor;
// ??        LinkCheque = val;
// ??       int nCheque = 0;
// ??       int TbCheque[] = new int[20];
        
        Saldo = Saldo - LinkCheque.getValor();
    }
    public void listarCheque(){
        
    }
    public double getSaldo(){
        return Saldo;
    }
}


é a mesma relação usado de 1 pra muitos, so criar 20 objetos cheque dentro de 1 objeto Talao

public class Talao {  
    private double Saldo;  
    static final int numMaxCheques=20;  
    private Cheque TabCheque[];  
    
      
    public Talao(double SaldoCliente){  
        Saldo = SaldoCliente;  
        for(int i = 0; i<numMaxCheques; i++){
        Cheque c = new Cheque("", "", "", i);
        TabCheque[i] = c;
        }
    }  
    public void emitirCheque(double Valor){  
        double val = Valor;  
          
        Saldo = Saldo - LinkCheque.getValor();  
    }  
    public void listarCheque(){  
          for(Cheque c: TabCheque){
           // imprime dados de cada cheque
          }
    }  
    public double getSaldo(){  
        return Saldo;  
    }  
}  

Na main você cria um new Cliente e um new Talão, pega o obj Talão e passa para o Cliente.setTalao
quando um obj Talão , no contrutor é criado vai criar outros 20 obj Cheque e guarda-los uma array

vai precisar implemental/alterar para adicionar dados ao Cheque (CodBanco, Agencia, Conta)