OK, espero que seja uma pergunta subjetiva o suficiente para programadores, mas aqui vai. Estou continuamente ampliando meu conhecimento de linguagens e práticas de engenharia de software ... e encontrei algo que simplesmente não faz sentido para mim.
No C ++, as declarações de classe incluem private:
métodos e parâmetros no arquivo de cabeçalho, que, teoricamente, é o que você passa ao usuário para incluir se você criar uma lib.
No Objective-C, @interface
s fazem praticamente a mesma coisa, forçando você a listar seus membros privados (pelo menos, há uma maneira de obter métodos particulares no arquivo de implementação).
Pelo que sei, Java e C # permitem fornecer uma interface / protocolo que pode declarar todas as propriedades / métodos acessíveis ao público e oferece ao codificador a capacidade de ocultar todos os detalhes de implementação no arquivo de implementação.
Por quê? O encapsulamento é um dos princípios principais do POO, por que o C ++ e o Obj-C não possuem essa capacidade básica? Existe algum tipo de prática recomendada para o Obj-C ou C ++ que oculta toda a implementação?
Obrigado,