Laboratorio 4 - Encapsulamiento II

Programación Orientada a Objetos 1 UNSCH GUÍA DE LABORATORIO Nº 4 “Encapsulamiento II” 1. OBJETIVOS 1.1. Comprender e

Views 65 Downloads 3 File size 194KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

  • Author / Uploaded
  • lesly
Citation preview

Programación Orientada a Objetos

1

UNSCH

GUÍA DE LABORATORIO Nº 4 “Encapsulamiento II” 1. OBJETIVOS 1.1. Comprender el principio de encapsulamiento dentro de la POO. 1.2. Comprender e implementar las tres características de un encapsulamiento eficaz (abstracción, ocultamiento de la implementación y división de la responsabilidad). 2. INFORME PREVIO    

Encapsulamiento. Abstracción. Ocultamiento de la implementación. División de la responsabilidad.

3. DESARROLLO TEÓRICO ¡Video Encapsulamiento! Encapsulamiento. El encapsulamiento permite dividir un programa en componentes más pequeños e independientes. Cada componente es autónomo y realiza su labor independientemente de los demás componentes. EL encapsulamiento mantiene esta independencia ocultando los detalles internos (implementación) de cada componente, mediante una interfaz externa. Es la característica de autonomía de la POO. Esta característica permite generar componentes autónomos de software tomando una parte de funcionalidad y ocultando los detalles de la implementación al mundo exterior. Abstracción. La abstracción es el proceso de simplificar un problema complejo. Al abordar la solución de un problema, no se abruma con cada uno de los detalles. Más bien, lo simplifica enfocándose tan sólo en los aspectos relevantes para la solución. La abstracción tiene dos beneficios. Primero permite resolver un problema fácilmente y lo más importante es que colabora con la reutilización. Ocultamiento de la implementación. El ocultamiento de la implementación presenta dos beneficios: -

Protege a su objeto de los usuarios. Protege a sus usuarios del objeto.

Protegiendo a los usuarios del objeto. El ocultamiento de la implementación conduce a un diseño más flexible porque evita que los usuarios del objeto dependan estrechamente de la implementación que sustenta al objeto. El Mg. Ing. Manuel A. Lagos Barzola

Programación Orientada a Objetos

2

UNSCH

ocultamiento de la implementación fomenta la creación de código moderadamente ligado al objeto. Cuando una característica aparece en la interfaz pública de un objeto, cualquiera que utilice dicha característica se vuelve dependiente de ésta. Si la característica desaparece súbitamente, usted tendrá que cambiar el código que dependía de ese comportamiento o atributo. La dependencia no se puede eliminar totalmente. Esta dependencia se reduce mediante la programación de una interfaz bien definida. Los usuarios dependerán tan sólo de lo que usted decida colocar en la interfaz. No obstante, si parte de la implementación del objeto se incorpora a la interfaz, los usuarios del objeto se volverán dependientes de esa implementación. Una pequeña modificación a la implementación del objeto requerirá una cascada de cambios en todos los usuarios del objeto. El código estrechamente ligado choca con el propósito del encapsulamiento: crear objetos independientes y reutilizables. División de la responsabilidad: ocúpese de sus propios asuntos. El ocultamiento del código es sólo un paso hacia la escritura de código moderadamente desligado. Si deseamos contar con código moderadamente desligado, también se debe contar con la división desligada de la responsabilidad. El objeto debe realizar una función - su responsabilidad y hacerla bien. Si dos objetos comienzan a realizar la misma labor, es señal de que no existe una división apropiada de la responsabilidad.

4. DESARROLLO DE LA PRÁCTICA ¡Protegiendo a los usuarios de nuestros objetos! 4.1. Realice una captura de pantalla de cada procedimiento y actividad realizada. 4.2. Cree un nuevo proyecto denominado “ProyectoEncapsulamientoII”. 4.3. Cree enseguida el paquete “beans”. 4.4. Dentro del paquete creado, defina la clase “Artículo”. Agregue los siguientes atributos privados: - Id - descripcion - precioUnitario - descuento - cantidad 4.5. Defina el método getTotalAjustado() dentro de la clase Artículo. Este método debería realizar los siguientes cálculos: -

total =precioUnitario * cantidad descuentoTotal = total * descuento

Mg. Ing. Manuel A. Lagos Barzola

Programación Orientada a Objetos

-

3

UNSCH

totalAjustado = total – descuentoTotal Finalmente el método debe devolver el “totalAjustado”.

4.6. Dentro del paquete creado, defina la clase “Cliente”. Agregue los siguientes atributos privados: - id - nombres - dirección - celular Agregue el atributo público: - listaArticulos (arreglo de artículos, este atributo contendrá los artículos seleccionados por un cliente) 4.7. Cree los métodos constructores, accesores y mutadores para las clases creadas. 4.8. Cree una clase principal “UsuarioPrimero”. En el método principal cree cinco objetos de la clase Artículo, un objeto de la clase Cliente. 4.9. En seguida agregue el código para que el cliente pueda seleccionar tres artículos de la lista de cinco que le es mostrado por el programa (datos de los cinco artículos creados previamente). El programa debe agregar los artículos seleccionados por el cliente a su correspondiente atributo “listaArticulos”. 4.10. Ahora agregue el código respectivo para que se calcule el total a pagar por los artículos seleccionados por el cliente e imprima el resultado por pantalla. 4.11. Cree una clase principal “UsuarioSegundo”. En el método principal cree tres objetos de la clase Artículo, un objeto de la clase Cliente. 4.12. En seguida agregue el código para que el cliente pueda seleccionar dos artículos de la lista de tres que le es mostrado por el programa (datos de los tres artículos creados previamente). 4.13. El programa debe agregar los artículos seleccionados por el cliente a su correspondiente atributo “listaArticulos”. 4.14. Ahora agregue el código respectivo para que se calcule el total a pagar por los artículos seleccionados por el cliente e imprima el resultado por pantalla. 4.15. Imagine ahora que desea modificar el modo como los clientes gestionan sus productos y ahora ya no los hace a través de su atributo “listaArticulos” sino mas bien ahora utiliza una clase “Canasta” donde va agregando sus artículos seleccionados (la clase “Canasta” debe ser capaz de registrar los artículos seleccionados por el cliente). Modifique el programa realizando los cambios mencionados en todas las clases necesarias. 4.16. Realice un análisis de lo sucedido cuando se realizaron los cambios. Indique qué modificaciones se tendrían que realizarse para evitar el código tan estrechamente ligado que perjudica el encapsulamiento y por ende la creación de objetos independientes y reutilizables.

Mg. Ing. Manuel A. Lagos Barzola

Programación Orientada a Objetos

4

UNSCH

Dividiendo la responsabilidad: ocúpese de sus propios asuntos. 4.17. Dentro del paquete creado, defina la clase “ArticuloBasico”. 4.18. Agregue los siguientes atributos públicos: - id - descripcion - precioUnitario - descuento - cantidad 4.19. Cree un constructor para inicializar los atributos: id, descripcion, precioUnitario, 4.20. cantidad) dentro de la clase “ArticuloBasico”. Este constructor debe verificar que el atributo cantidad de un objeto sea mayor o igual que cero, en caso contrario debería inicializar este atributo en cero. 4.21. Defina también los otros métodos accesores y mutadores de la clase. 4.22. Cree una clase principal “UsuarioArticuloBasico”. En el método principal cree dos objetos de la clase ArtículoBasico, y para cada uno, asígnele un respectivo descuento, calcule el sub total a pagar por la leche (precioUnitario*cantidad), calcule el descuentoTotal(descuento*total) y el totalAjustado (total – descuentoTotal. Debe mostrar finalmente el neto a pagar(suma de totales ajustados) por ambas leches. 4.23. Realice un análisis de lo sucedido en el punto 4.22. Indique qué es lo que se podría mejorar en este código, qué está bien y qué estaría mal e iría en contra del encapsulamiento. 5. CUESTIONARIO Elabore un ejemplo parecido a los mostrados en la práctica. 6. CONCLUSIONES

7. RECOMENDACIONES

8. BIBLIOGRAFÍA Aprendiendo programacion orientada a objetos en 21 lecciones avanzadas . Anthony Sintes. Mg. Ing. Manuel A. Lagos Barzola