Los clientes de una clase no necesitan ver el código fuente
de la clase a fin de utilizarla. Los clientes deben, sin embargo,
poder tener la capacidad de enlazarse con el código objeto
de la clase.
Aquella información de importancia a la interfaz con una
clase debería ser incluida en el archivo de cabecera. Aquella
información que sólo ser utilizada en forma
interna en la clase y que no ser necesaria para los clientes
de la clase, debería ser incluida en el archivo fuente no
publicado. Este es otra vez otro ejemplo del principio de mínimo
privilegio.
C++ alienta a que los programas sean independientes de la puesta
en práctica. Cuando se modifica la puesta en práctica
de una clase utilizada mediante código independiente de la
misma, dicho código no necesita ser cambiado, pero pudiera
necesitar ser recompilado.
Conserve privados todos los miembros de datos de una clase. Proporcione
funciones miembro públicas para definir los valores de los
miembros de datos privados y para obtener los valores de los miembros
de datos privados. Esta arquitectura ayuda a ocultar la puesta en
práctica de una clase a la vista de sus clientes, lo que
reduce errores y mejora la capacidad de modificación del
programa.
Los diseñadores de clase utilizan miembros privados, protegidos
y públicas para obligar a la idea de ocultamiento de información
y al principio de mínimo privilegio.
Hacer privados los miembro de datos de una clase y públicas
las funciones miembro de la clase, facilita la depuración,
porque los problemas con las manipulaciones de datos se localizan
ya sea en las funciones miembro de la clase o en los amigos de la
clase.
Las funciones miembro tienen tendencia a agruparse en varias categorías
diferentes: funciones que leen y regresan el valor de miembros de
datos privados, funciones que definen el valor de miembros de datos
privados, funciones que ponen en práctica las características
de la clase, y funciones que ejecutan varias tareas mecánicas
para la clase, como la inicialización de objetos de clase,
la conversión entre clases y tipos incorporados o entre clases
y otras clases, y el manejo de memoria para objetos de clase.
|