Encapsulación
El primer pilar de la programación orientada a objetos es la encapsulación . La idea detrás de la encapsulación es que desea mantener cada tipo o clase discreta y autónoma. Esto le permite cambiar la implementación de una clase sin afectar a ninguna otra clase.
Una clase que proporciona un método que otras clases pueden usar se llamaserver
. Una clase que usa ese método se llama a client
. El objetivo de la encapsulación es que pueda cambiar los detalles de cómo un servidor hace su trabajo sin interrumpir nada en la implementación del cliente.
Esto se logra dibujando una línea brillante entre elpublic interface
de una clase y suprivate implementation
. La interfaz pública es un contrato emitido por su clase que dice, Prometo poder hacer este trabajo. Específicamente, verás que una interfaz pública dice llamar a este método, con estos parámetros, y haré este trabajo y devolverá este valor. Un cliente puede confiar en una interfaz pública para no cambiar. Si la interfaz pública cambia, el cliente debe recompilarse y tal vez diseñarse.
La implementación privada, por otro lado, es privada para el servidor. El diseñador de la clase servidor es libre de cambiar cómo realiza el trabajo prometido en la interfaz pública, siempre y cuando siga cumpliendo los términos de su contrato simplificado: debe tomar los parámetros dados, hacer el trabajo prometido y devolver el valor prometido.
Por ejemplo, es posible que tenga un método público que promete lo siguiente:Dame una cantidad de dólares y un número de años, y devolveré el valor actual neto. Cómo calcula esa cantidad es su negocio; si un cliente suministra una cantidad de dólares y varios años, debe devolver el valor actual neto. Puede implementar eso inicialmente manteniendo una tabla de valores. Puede cambiar eso en un momento posterior para calcular el valor usando el álgebra apropiada. Ese es su negocio y no afecta al cliente. Siempre y cuando no cambie la interfaz pública (p. ej., siempre y cuando no cambie el número o el tipo de parámetros esperados o cambie el tipo de valor de retorno), sus clientes no se romperán mientras cambie la implementación.