Скачать книгу

habitual confundir el concepto de encapsulamiento con el de ocultación, ya que ambos son utilizados de manera conjunta.

      Al encapsular los datos y las operaciones, también se debería realizar una ocultación de aquellos que deban ser protegidos del mundo exterior.

iAct

      Actividades

      4.Explique la diferencia que existe entre los tipos abstractos de datos y las variables y detalle qué tipo de relación tienen.

      5.¿Qué elementos de la programación orientada a objetos serían los equivalentes a los tipos abstractos de datos y las variables?

iApl

      Aplicación práctica

      Se está iniciando el diseño de una aplicación para gestionar las facturas que se emiten a los clientes de una ferretería. En una primera reunión con los responsables de la empresa, se ha decido utilizar un enfoque orientado a objetos y que la próxima semana se plantee un borrador inicial de cómo podría ser la estructura de la aplicación.

      SOLUCIÓN

      Como se está en una etapa muy temprana del diseño, solo es posible identificar las clases más importantes y algunos de sus métodos y atributos más importantes. Cuando se tenga mayor detalle de la funcionalidad a implementar, se podrá completar el diseño de las clases.

      En primer lugar, se deben abstraer los elementos que van a componer la aplicación, encapsulando sus datos y operaciones. De esta forma, se identificarán las clases que van a componer el sistema:

      ilst2destCliente: contiene los datos de un cliente (NIF, nombre, dirección, teléfonos, datos fiscales, etc.) y las operaciones que se pueden realizar sobre esos datos (cambiar dirección, modificar teléfono, mostrar ficha, etc.).

      ilst2destProducto: agrupa la información de un producto (código, descripción, precio, tipo de IVA, stock en almacén, etc.) y sus operaciones (cambiar precio, cambiar stock, etc.).

      ilst2destFactura: como datos de la factura se tendrán el código, la fecha de emisión, el cliente y una lista de los productos que la componen. Las operaciones habituales serán la modificación del cliente, el cambio de la fecha y la asignación y eliminación de productos.

      Con la orientación a objetos, las aplicaciones están formadas por un conjunto de objetos que interaccionan entre sí. Al indicar a un objeto que ejecute una operación sobre otro objeto, se dice que se le pasa un mensaje.

      Un objeto se comunica con otros mediante mensajes. Cada mensaje implica la ejecución de un método sobre el objeto de destino, que ejecutará la operación correspondiente.

iImp

      Importante

      Los mensajes son la vía de conexión de un objeto con el mundo exterior, lo que le permite comunicarse con otros objetos del sistema.

      Los objetos realizan acciones cuando reciben mensajes y solo es posible acceder a estos objetos a través de su interfaz pública.

      Los métodos son procedimientos que son invocados cuando un objeto recibe un mensaje. En la programación tradicional, un mensaje se correspondería con la llamada a una función.

iNot

      Nota

      Mientras que un método es el procedimiento o función que es invocado para actuar sobre un objeto, el mensaje se refiere a la petición realizada.

      Un mensaje es la petición de un objeto a otro, al que le solicita ejecutar uno de sus métodos, por lo que se establece el convenio de denominar “emisor” al objeto que envía la petición y “receptor” al que la recibe.

      En la estructura de un mensaje, se identifican los siguientes elementos:

      ilst1El objeto receptor que recibe la petición.

      ilst1El método que se desea ejecutar en el objeto receptor.

      ilst1Los parámetros que necesita el método para ejecutar la acción.

      ilst1La información que devuelve el método tras su ejecución.

      Una vez que el receptor acepta el mensaje, ejecuta la acción que corresponda y, en algunos casos, retornará un valor.

      El emisor solo necesita saber la estructura de los mensajes que aceptará el receptor, es decir, el nombre de sus métodos, los valores que recibe y los que devuelve; no es necesario conocer cómo se ejecutarán las acciones que dan respuesta a la petición. Una vez que el receptor acepta un mensaje, es el responsable de llevarlo a cabo.

      La principal diferencia de un mensaje con respecto a la llamada a una función de la programación tradicional está en la obligación que tienen los mensajes de identificar al objeto receptor; de hecho, la interpretación del mensaje será diferente dependiendo del receptor.

      Aunque haya objetos de diferentes clases que tengan métodos con el mismo nombre y parámetros, las acciones a ejecutar podrán ser diferentes. El mismo mensaje originará acciones distintas en función de a quién vaya dirigido.

iEje

      Ejemplo

      De la clase “curso” podrán instanciarse tantos objetos como cursos se deseen gestionar. Para el curso de “Contabilidad Financiera” se creará el objeto “contabilidad”, para el de “Gestión de Redes” el objeto “redes”, etc.

      Todos estos objetos son instancias de la misma clase, por lo que tienen los mismos métodos y atributos (con valores diferentes); pero reciben mensajes diferentes, ya que cambia el objeto receptor del mensaje.

      Un mismo objeto también recibe mensajes diferentes al ejecutar cada uno de sus métodos.

      También es posible ejecutar un método con distintos parámetros, por lo que cambiará el correspondiente mensaje.

      La orientación a objetos aporta un nuevo enfoque al desarrollo de software, ya que obliga a cambiar la forma de pensar para realizar la descomposición del problema y el diseño de la aplicación.

      Los programas se estructuran como colecciones de objetos que interactúan entre sí. Cada objeto es una instancia de una clase, que encapsula los datos y las operaciones para abstraer un determinado concepto.

      La ocultación de la información va a permitir que pueda definirse el tipo de acceso a los elementos de una clase, haciendo posible diferenciar la interfaz pública de su implementación interna.

      Los objetos se comunican entre sí a través de mensajes. Cada mensaje se corresponde con la ejecución de un método sobre el objeto de destino, que será el responsable de ejecutar la operación correspondiente y generar una respuesta.

Скачать книгу