Duvida "idiota" sobre arquitetura / Acoplamento / Coesão

Tenho uma duvida sobre algo… q me parece bem idiota… mas até hj nao sei o correto…rs

Digamos um sistema bancario, com uma classe cliente e este possa, por exemplo, verficar saldo, depositar dinheiro, sacar dinheiro, abrir uma conta…

O cliente possui um relacionamento com a classe conta já que ele verifica o saldo de uma conta, deposita dinheiro em uma conta e talz…

Como seria modelado isso num diagrama de classes?

  • Cliente
    atributos
    abrir conta() // Conta c = new Conta();
    sacar dinheiro()
    verificar saldo()

  • Conta
    atributos

Dessa maneira seria incorreto, eu acho. O cliente ficaria com todas as responsabilidades do sistema além de criar um alto acoplamento e uma baixa coesão, devido a cliente nao estar com responsabilidades bem definidas.

Isso q falei está correto?

Como deveria ser modelado isso?
Talvez utilizar uma classe chamada Gerenciamento de Contas, e o usuario acessar a interface desta classe. Acredito q assim poderia ser criado um módulo que tratasse só das contas… diminuindo acoplamento e aumentado coesao…

Bom enfim… me deem uma luz
valew!

acredito que nao existe uma regra pre-definida pra isso …
as variações utilizadas para a construção do software depende da sua complexidade.

quando maior for o projeto, mais desacoplado ele tem que ser. Nesse caso concordo com o gerenciador de contas, Caso contrario a outra forma é mais sintetica e objetiva. :stuck_out_tongue:

Creio que os atributos que vc atribuiu a classe Cliente sejam de responsabilidade da Conta.

Não existe regra, mas fazendo isso vc consegue um baixo acoplamento. Pois não só um cliente pode abrir um Conta, pode haver um outra entidade no seu modelo por exemplo, que o faça.

O cliente apenas TEM UMA conta.

O ato de abrir conta por exemplo vc pode atribuir à outra classe do seu sistema, como vc msm sugeriu, um Gerenciador de Contas.