Allora, io quando progetto un programma come questo che è evidente che è basato su
database parto dal progettare il db.

In questo caso ci sarebbero le tabelle:
Clienti, Articoli, Ordini, ArticoliOrdini (che tu chiami Dettaglio che sarebbe la tabella associativa)

Poi progetto le classi java, utilizzando un sistema di persistenza tipo jpa (Java persistence api).
Creo dunque le classi (@Entity):
Cliente (mappato sulla tabella Clienti)
Articolo (su Articoli)
Ordine (su Ordini e anche su ArticoliOrdini utilizzando @JoinTable)

La classe associativa Dettaglio scompare del tutto?


Cliente e Articolo non sono provviste di nessun collegamento?
No, come la tabella Clienti e Articoli non hanno chiavi esterne, così non ce le hanno le classi

codice:
E soprattutto perchè creare una classe applicazione che ha gli arraylist di articolo- ordine-clienti ?
Perché da qualche parte l'elenco dei clienti, degli articoli e degli ordini lo devi mettere no?
Ovviamente se utilizzi la persistenza passerai questi array alla libreria per leggerli o scriverli sul db.

Per caso tu cambieresti proprio la disposizione delle classi nel class diagram?
La cambierei per rispecchiare l'implementazione che ti ho spiegato.

Ciao.