Come utilizzare gli spazi dei nomi per separare l'interfaccia dall'implementazione, in c ++?

0

Per quanto ne so, puoi rendere nota la tua interfaccia agli altri fornendo il tuo file .h. Il tuo .cpp è l'implementazione. Quindi possono vedere i nomi delle funzioni, i tipi di parametri, il tipo di ritorno, forse una descrizione di come usare una funzione, e forse quello che fa nel file .h.

Poi ho letto post qui a proposito utilizzando gli spazi dei nomi per separare l'interfaccia dall'implementazione. Cosa significa? Uno spazio dei nomi non ti consente solo di sapere che esiste un nome in quello spazio dei nomi? Quindi, per favore, fornisci un esempio, non ne trovo nessuno.

    
posta user2738698 25.03.2014 - 21:32
fonte

1 risposta

4

Non usi gli spazi dei nomi per separare l'interfaccia dall'implementazione in C ++. I namespace sono essenzialmente pacchetti in C ++; li usi per raggruppare le classi correlate.

Piuttosto, usi classi per nascondere i dettagli dell'implementazione all'utente. Le classi in C ++ sono le stesse delle classi in qualsiasi altro linguaggio OOP a tale riguardo; forniscono un'interfaccia pubblica, mentre incapsulano i dettagli di implementazione.

Nella risposta Overflow dello stack che hai collegato, l'autore ha collegato questo articolo . In poche parole, in questo articolo si afferma che tutte le funzioni di aiuto e le funzioni dell'operatore che fanno parte della funzionalità di una classe dovrebbero entrare nello stesso spazio dei nomi della classe, perché formano parte dell'API pubblica di tale spazio dei nomi.

Questo ha senso per me. Avendo quelle funzioni nello stesso spazio dei nomi organizza le classi (e le funzioni che li supportano) all'interno della stessa unità logica, un'unità logica che espone un'API pubblica, ma incapsula i dettagli dell'implementazione usando i normali principi di orientamento agli oggetti.

Ulteriori letture
Separazione dell'interfaccia e dell'implementazione in C ++
La separazione di interfaccia e implementazione in C ++
Namespace e il principio dell'interfaccia

    
risposta data 25.03.2014 - 21:41
fonte

Leggi altre domande sui tag