La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Encapsulamiento Miguel Ángel Rojas Aguilar Esthela Carmina Carranza Cabrera.

Presentaciones similares


Presentación del tema: "Encapsulamiento Miguel Ángel Rojas Aguilar Esthela Carmina Carranza Cabrera."— Transcripción de la presentación:

1 Encapsulamiento Miguel Ángel Rojas Aguilar Esthela Carmina Carranza Cabrera

2 Definición de encapsulamiento O El encapsulamiento es la característica de autonomía de la OO. 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. O Los términos módulo, componente o vean se suelen utilizar en lugar de “componente encapsulado de software”. O Una vez encapsulada, una entidad de software se puede visualizar como una caja negra. 2 Interfaz Mensaje Interfaz

3 Características de un encapsulamiento eficaz O Un encapsulamiento eficaz permite escribir componentes autónomos de software. O Las tres características de un encapsulamiento eficaz son: O Abstracción. O Ocultamiento de la implementación. O División de la responsabilidad. 3

4 ArticuloSinEncapsular.java public class ArticuloSinEncapsular { public double precio_unitario; public double descuento; // porcentaje de descuento que se aplicará al precio public int cantidad; public String descripcion; public String id; public ArticuloSinEncapsular( String id, String descripcion, int cantidad, double precio ) { this.id = id; this.descripcion = descripcion; if ( cantidad >= 0 ) this.cantidad = cantidad; else this.cantidad = 0; this.precio_unitario = precio; } …. } 4

5 EjemploArticuloSinEncapsular.java public class EjemploArticuloSinEncapsular extends Object { public static void main( String [] args ) { ArticuloSinEncapsular monitor = new ArticuloSinEncapsular( "electrónicos-012", "Monitor SVGA de 17\"", 1, 2500.00 ); monitor.descuento = 1.25; // inválido, ¡el descuento debe ser menor a 100%! double precio = monitor.getTotalAjustado(); System.out.println( "Total incorrecto: " + precio + “ $ "); monitor.setDescuento( 1.25 ); // inválido // no obstante, el monitor atrapará el error precio = monitor.getTotalAjustado(); System.out.println( "Total correcto: " + precio + “ $ "); } 5

6 O El resultado de la ejecución es el siguiente: Total incorrecto: -625.0 $ Total correcto: 2500.0 $ O Se crea un objeto de la clase ArticuloSinEncapsular y se aplica un descuento inválido. Por tanto, el resultado es un precio ajustado erróneo. 6 EjemploArticuloSinEncapsular.java

7 ¿Cómo proteger a los usuarios mediante el ocultamiento de la implementación? O 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 del objeto. O Así, el ocultamiento de la implementación no sólo protege al objeto, sino también a aquellos que lo utilizan pues fomenta la creación de código moderadamente ligado al objeto. O El código moderadamente ligado es independiente de la implementación de otros componentes. O El código estrechamente ligado depende intensamente de la implementación de otros componentes. 7

8 ¿Cómo proteger a los usuarios mediante el ocultamiento de la implementación? O El encapsulamiento y el ocultamiento de la implementación no son mágicos. Si se realizan cambios en una interfaz, será necesario actualizar el código dependiente de esa interfaz. Mediante el ocultamiento de los detalles y la escritura de software para una interfaz, se crea código moderadamente ligado. O El código estrechamente ligado choca con el propósito del encapsulamiento: crear objetos independientes y reutilizables. 8

9 Ejemplo de ocultamiento de la implementación public class Cliente { //... diversos métodos para el cliente... public Articulo [] articulos; // este arreglo contiene cualquier artículo seleccionado } ------------------------------------------------------------------------------------------------------------------------... public static void main ( String [] args ) { Cliente cliente = new Cliente(); // … elige algunos artículos … // asigna precio a los artículos double total = 0.0; for (int i = 0; i < cliente.articulos.length; i++) { Articulo articulo = cliente.articulos[i]: total = total + articulo.getTotalAjustado(); } … } … 9

10 Ejemplo de ocultamiento de la implementación O El método main() toma un cliente, agrega algunos artículos y da el total del pedido. Aquí, el arreglo Articulo forma parte de la interfaz externa de Cliente. O En el ejemplo anterior en la clase Cliente se debe hacer privado el arreglo Articulo, y dar acceso a los artículos a través de get y set. 10

11 Mejor definición de encapsulamiento O El encapsulamiento eficaz se compone de: O Abstracción. O Ocultamiento de la implementación. O Responsabilidad. O Si eliminamos O La abstracción, será código no reutilizable. O El ocultamiento de la implementación, será código frágil y estrechamente ligado. O La responsabilidad, será código orientado a datos y con una lista de procedimientos (procedural). 11


Descargar ppt "Encapsulamiento Miguel Ángel Rojas Aguilar Esthela Carmina Carranza Cabrera."

Presentaciones similares


Anuncios Google