Ajuda com diagrama de classes

Estou desenvolvendo um diagrama de classes porém estou com dúvida em alguns pontos hehe
agregração e composição buga mt minha mente …

no caso tenho duas dúvidas
departamento tem apenas um chefe de departamento
seria agregação ou composição?

Departamento tem um chefe de departamento
ou
chefe de departamento faz parte de um departamento

Estoque e produto a mesma situação

Estoque tem um produto?
ou produto faz parte de um estoque

e ainda com relação a produto ( Qual melhor solução para colocar um atributo STATUS como: Em Falta, Estoque Baixo, Estoque Normal, Estoque Alto)
Minha dúvida é colocar isso em estoque ou em produto, ou criar uma nova classe ( Status_Estoque)

eu sempre tenho dificuldades nessas perguntas se alguém poder me dar um help em como melhorar isso …

Se o departamento puder existir sem um chefe de departamento, então é agregação.
Se o departamento não puder existir sem um chefe de departamento, então é composição.

Vai depender de como você decidiu seguir na questão anterior.
Se o departamento puder existir sem um chefe de departamento, então o departamento não precisa ter um chefe de departamento.

Mas o chefe de departamento faz todo o sentido ter um atributo departamento que diz de qual departamento ele é chefe, ele não poderia ser chefe de um departamento sem ter o departamento para chefiar.

O estoque tem produtos, mas o estoque pode estar vazio, então é uma agregação pois o estoque pode existir sem produtos.
Se o produto faz parte de um estoque, vai depender da sua necessidade, se você precisar de alguma forma obter uma referência ao estoque a partir de um produto, então você vai precisar de um atributo estoque dentro do produto, senão, não precisa.

Você está confundindo classes com tabelas do banco de dados, num banco de dados você criaria uma tabela de relacionamento chamada Status_Estoque por exemplo.
Nas classes você vai colocar atributos condizentes com o “mundo real”, de quem que é o status? Do produto ou do estoque? Se é um status do produto, então o atributo vai estar na classe produto.

E outra dúvida que surgiu é em relação a caixa ( da pra ser considerado uma classe? )
Pois eu queria ter um controle ex: uma tabela no bd caixa_detalhes
para pode ter um relatorio de quanto cada caixa fez no dia

Mas ai eu fico com dúvida em como adicionar isso ao meu fluxo

produto é uma agregração de mercado
stock é uma agregração de produtos

até ai tudo bem, mas depois disso eu começo a ter problemas:

um cliente vai selecionar os produtos e se dirige ao caixa ( que vai ter um vendedor )

e então o vendedor passa o valor total da venda ( nisso eu sei que é uma classe e também pode ter uma classe item_venda) e venda também pode ter tipos_pagamentos / avista / prazo ( e implementar uma interface )

mas eu começa a embolar a cabeça em como adicionar o caixa nesse fluxo.

//edit eu tentei e acabei fazendo algo parecido com isso

esse relacionamento de venda e pagamento eu realmente não consegui responder:
venda existe sem pagamento? não
pagamento existe sem venda? ai q eu tenho dúvida ( acho que não )

e tentei fazer essa relação de venda ser registrada por caixa só que acabei olhando algumas dicas ( não é interessante colocar pagamento linkado a venda e sim a cliente ), você poderia me dar um help como eu adicionaria cliente nesse fluxo?