OK, quindi spero che questa sia una domanda abbastanza soggettiva per i programmatori, ma qui va. Sto allargando continuamente la mia conoscenza delle lingue e delle pratiche di ingegneria del software ... e mi sono imbattuto in qualcosa che non ha assolutamente senso per me.
In C ++, le dichiarazioni di classe includono private:
metodi e parametri nel file di intestazione, che, in teoria, è ciò che si passa all'utente per includere se gli si fa una lib.
In Objective-C, @interface
s fa praticamente la stessa cosa, costringendo ad elencare i membri privati (almeno, c'è un modo per ottenere metodi privati nel file di implementazione).
Da quello che posso dire, Java e C # consentono di fornire un'interfaccia / protocollo che può dichiarare tutte le proprietà / metodi accessibili pubblicamente e offre al codificatore la possibilità di nascondere i dettagli dell'implementazione tutti nel file di implementazione.
Perché? L'incapsulamento è uno dei principi fondamentali di OOP, perché C ++ e Obj-C non hanno questa capacità di base? Esiste un qualche tipo di best-practice per aggirare Obj-C o C ++ che nasconde l'implementazione all ?
Grazie,