Está en la página 1de 17

Cmo pensar en trminos de objetos

Aspectos importantes del pensamiento en trminos de objetos


Conocer la diferencia entre la interfaz y la implementacin. Pensar de manera abstracta. Proporcionarle al usuario la mnima interfaz posible.

Distinguir entre Interfaz e Implementacin


Cuando se disea una clase es de gran importancia, distinguir entre lo que el usuario necesita conocer y qu no necesita conocer. NOTA: cuando nos referimos a una interfaz, no debemos confundirlo con el trmino Interfaz de Usuario Grfica (GUI).
3

La interfaz
La interfaz describe los servicios que se presentan al usuario final. La interfaz de una clase deber contener slo lo que el usuario requiere conocer. Un aspecto muy importante cuando se disea una clase es identificar a la audiencia, el usuario, de la clase.
4

La implementacin
Los detalles de la implementacin de los servicios de la interfaz estn ocultos al usuario y pueden cambiarse, siempre y cuando la interfaz permanezca igual. El usuario y la implementacin deben apegarse a la especificacin de la interfaz.
5

Ejemplo de interfaz e implementacin


Imagine que usted es parte de un equipo de programacin de una institucin bancaria. Un concepto fundamental en la banca es el de Cuenta Bancaria. Realizar el diseo de una Cuenta Bancaria.
6

Cuenta Bancaria: Interfaz


La pregunta es Qu operaciones debe realizar una cuenta bancaria? Operaciones esenciales en una cuenta bancaria:

CuentaBancaria
depositar(double cantidad); retirar(double cantidad); getSaldo() : double;

Depositar dinero. Retirar dinero. Obtener el saldo actual de la cuenta.


7

Cuenta Bancaria: Implementacin


La pregunta es Qu informacin conoce la Cuenta Bancaria? Cada objeto CuentaBancaria requiere almacenar la siguiente informacin:

CuentaBancaria numeroDeCuenta : string; saldo : double


depositar(double cantidad); retirar(double cantidad); getSaldo() : double;

Nmero de cuenta bancaria. Saldo actual en la cuenta.

Esta informacin ser parte del estado de cada objeto, y lo representamos en la clase como los atributos.
8

Cuenta Bancaria: Implementacin


La implementacin implica adems el uso del ocultamiento de la informacin. Tanto los atributos como las operaciones de una clase, pueden ocultarse o hacerse visible, utilizando los modificadores de acceso:

CuentaBancaria
-numeroDeCuenta : string; -saldo : double +depositar(double cantidad); +retirar(double cantidad); +getSaldo() : double;

Pblico, utilizando (+). Privado, utilizando ( ).


9

Pensando de manera abstracta


Una de las ventajas de la POO es que las clases pueden ser reutilizadas. Para que una clase sea reutilizable, debe tender a tener interfaces que son ms abstractas que concretas. Las interfaces concretas son muy especficas; las interfaces abstractas no lo son. Sin embargo, algunas veces es posible escribir una clase concreta que es muy til, aunque no sea reutilizable.
10

Pensando de manera abstracta


Para tomar ventaja de lo que ofrece la POO, debemos tener como meta disear clases abstractas ampliamente reutilizables. Diferencias entre interfaces abstractas y concretas:

Interfaces abstractas: Slo dicen qu hacer, de manera muy general. Interfaces concretas: Dicen de manera especfica cmo proceder.

11

Interfaces concretas vs Interfaces abstractas

Interfaz abstracta

Interfaz menos abstracta

Cul de los dos escenarios es ms reutilizable? Es preferible utilizar interfaces abstractas, pues permite que la implementacin sea diferente, de acuerdo a nuestras necesidades.
12

Proporcionar al usuario la mnima interfaz posible


Una regla general para el diseo de clases es siempre, en lo posible, proporcionar al usuario el menor conocimiento del funcionamiento interno de la clase. Reglas para lograr una interfaz mnima:

Proporcionar al usuario slo lo que absolutamente requieren. Inicie con una interfaz mnima y de manera iterativa agregue servicios slo si el usuario los requiere.
13

Proporcionar al usuario la mnima interfaz posible


Reglas para lograr una interfaz mnima:

Las interfaces pblicas definen qu es lo que el usuario puede acceder. Es vital disear las clases desde una perspectiva del usuario y no desde un punto de vista del sistema de informacin. Cuando disee una clase asegrese de trabaja con base en los requerimientos y el diseo con ayuda de la gente que realmente la utilizar.

14

Proporcionar al usuario la mnima interfaz posible


Identifique a los usuarios: Si los usuarios son los que utilizarn el sistema, entonces quines son los usuarios? Determine el comportamiento de los objetos: Desde el punto de vista de todos los usuarios, inicie identificando el propsito de cada objeto y lo que debe hacer para realizarlo apropiadamente. Restricciones ambientales: Frecuentemente el ambiente impone limitaciones sobre lo que un objeto puede hacer.
15

Proporcionar al usuario la mnima interfaz posible


Identificar la implementacin

Despus de elegir las interfaces pblicas, debe identificarse la implementacin. Cmo debe realizarse el trabajo para cada operacin que es parte de la interfaz? Tcnicamente, lo que no es pblico es parte de la implementacin. La implementacin debe ser oculta para el usuario. Lo que es pblico es parte de la interfaz. As, la firma de un mtodo, que implementa una operacin de la interfaz, es pblica; sin embargo, el cdigo dentro de los mtodos pblicos realmente es parte de la implementacin, puesto que no est a la vista del usuario.
16

Proporcionar al usuario la mnima interfaz posible


Identificar la implementacin

Tericamente, lo que sea considerado parte de la implementacin puede cambiar sin afectar cmo el usuario interacta con la clase. Mientras la interfaz representa cmo el usuario ve el objeto, la implementacin representa, de hecho, los detalles prcticos del objeto. La implementacin contiene el cdigo que representa ese estado de un objeto.

17