Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Carátula para entrega de prácticas Facultad de Ingeniería Laboratorio de docencia Laboratorios de computación salas A y B Profesor: Saavedra Hernández Honorato Ing. Asignatura: Programación Orientada a Objetos Grupo: 1 No de Práctica(s): 5 Integrante(s): Ayala Trejo Albanya Yendalli Téllez González Jorge Luis Méndez Costales Luis Enrique Villamar Cortes Juan Antonio Santana Sánchez María Yvette Zecua Salinas Juan Carlos Téllez González Jorge Luis Villamar Cortes Juan Antonio Zecua Salinas Juan Carlos No. de Equipo de cómputo empleado: 7, 8, 13, 14, 15 y 16. No. de Lista o Brigada: Semestre: 2020-2 Fecha de entrega: 08/03/2020 Observaciones: CALIFICACIÓN: __________ Facultad de Ingenierı́a Programación Orientada a Objetos Índice 1. Introducción 2 1.1. Abstracción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2. Encapsulamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3. Reglas de visibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4. Modificadores de acceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Objetivos 5 3. Aplicación en Java 5 3.1. Acceso a miembros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2. Composición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4. Aplicación en Python 10 5. Conclusiones 12 1 Facultad de Ingenierı́a Programación Orientada a Objetos 1. Introducción La creación de programas requiere un proceso de abstracción y aislamiento del problema a resolver, sin embargo, es importante considerar la siguiente pregunta: ¿Quién podrá acceder a todas las caracterı́sticas implementadas? ¿Qué elementos del programa deben de estar fuera del alcance del usuario con el fin de garantizar el correcto funcionamiento del mismo? Figura 1: No todas las caracterı́sticas deben estar a la vista del usuario final. A la hora de proponer una solución a un determinado problema, el proceso de abstracción es esen- cial para aislar las caracterı́sticas clave de la situación y proponer soluciones eficaces y concretas. La forma de implementar la solución a tal problema en muchas ocasiones trae consigo restricciones o consideraciones importantes para que tal solución funcione adecuadamente: a esto se le llama encapsulamiento. 1.1. Abstracción Es un proceso que tiene como objetivo interpretar y diseñar para reconocer y centrarse en las caracterı́sticas importantes de un objeto (instancia), y ignorar u omitir las particularidades menos centrales. El concepto de clase es el mecanismo o medio por el cual se gestiona las abstracciones: se centra en lo que es y lo que hace el objeto, antes de determinar cómo se va a implementar, es decir, se enfoca más en el qué hace que en cómo lo hace. La abstracción funcional se enfoca en las funcionalidades o acciones que realizan determinados objetos, sin ahondar en cómo realizan tales acciones. La abstracción de datos define las caracterı́sticas importantes de un objeto: aquellas que lo definen o distinguen de los demás tipos de objeto. 2 Facultad de Ingenierı́a Programación Orientada a Objetos Figura 2: ¿Qué caracteriza a un coche y qué acciones puede llevar a cabo? 1.2. Encapsulamiento El encapsulamiento es la propiedad que nos permite asegurar que la información de un objeto está oculta de lo que hacen otros objetos o del mundo exterior, por lo que se denomina ocultación de datos. Esta pro- piedad consiste en agrupar en una clase los atributos (caracterı́sticas) con un acceso privado y los métodos (comportamientos) con un acceso público. En general, describe la vinculación de un comportamiento y un estado a un objeto en particular. Otras caracterı́sticas del encapsulamiento son las siguientes: Permite considerar a los objetos como “cajas negras”, evitando que otros objetos accedan a detalles que no les interesan o incumben. Las funciones usuarias no requieren conocer los detalles de la implementación. Los métodos y atributos pueden ser utilizados por otras clases sı́ y sólo si la clase que los encapsula les brinda los permisos necesarios para ello. Figura 3: Para que el proceso de abstracción funcione adecuadamente, la implementación requiere estar encapsulada. 3 Facultad de Ingenierı́a Programación Orientada a Objetos 1.3. Reglas de visibilidad Las reglas de visibilidad son parte del principio de encapsulamiento. Los niveles de visibilidad dependen del lenguaje de programación; de forma general pueden definirse 3 niveles principales: Privado: Es el nivel de acceso más restrictivo y especifica que los elementos solo pueden ser accedi- dos desde la misma clase en que se encuentra. Público: Este nivel de acceso permite a acceder al elemento desde cualquier clase, independiente- mente de que esta pertenezca o no al paquete en que se encuentra el elemento. Protegido: Indica que los elementos sólo pueden ser accedidos desde su mismo paquete y desde cualquier clase que extienda la clase en que se encuentra, independientemente de si esta se encuentra en el mismo paquete o no. 1.4. Modificadores de acceso Consisten en palabras claves en el paradigma orientado a objetos de Java para configurar la accesibilidad de las clases, métodos o propiedades de la misma clase que se implementan. En Java existen cuatro modifi- cadores de acceso, los cuales son: Private Public Protected El cuarto modificador corresponde a Friendly/Default. Este se implementa cuando no se especifica ninguno de los tres modificadores de acceso anteriores. Figura 4: Tabla con las caracterı́sticas principales de cada modificador. La sintaxis para los modificadores de acceso consiste en colocarlos como prefijos en la declaración de los atributos y métodos, como se muestra a continuación: 4 Facultad de Ingenierı́a Programación Orientada a Objetos Figura 5: Sixtaxis de los modificadores de acceso. 2. Objetivos Aplicar el concepto de abstracción para el diseño de clases que integran una solución, utilizando el encapsulamiento para proteger la información y ocultar la implementación. Obtener las caracterı́sticas y funcionalidades principales de un objeto dado. Utilizar diferentes niveles de acceso a las caracterı́sticas y funcionalidades obtenidas. 3. Aplicación en Java A continuación se ha creado en NetBeans un proyecto, el cuál consiste en un programa que, dado el radio de un cı́rculo, imprime su área. Este programa contiene 2 clases: Circulo y PruebaFigura. Figura 6: Estructura UML de la clase Circulo. 3.1. Acceso a miembros Los métodos de acceso get y set son la forma de acceder a los atributos establecidos como privados: Los métodos get consultan y devuelven información sobre el contenido de ciertos atributos, sin mo- dificarlos en el proceso. Los métodos set modifican uno o más valores de los atributos de un objeto. En la clase Circulo se ha implementado el uso de métodos de acceso con el fin de controlar el 5 Facultad de Ingenierı́a Programación Orientada a Objetos flujo de información del programa y establecer control sobre las entradas: si un radio recibido es negativo, automáticamente el método setRadio establece tal radio en 0. Figura 7: El método set establece una verificación de validez para el radio del cı́rculo. La creación de los métodos de acceso puede realizarse de forma automática en NetBeans por medio de la opción Re f actor−> EncapsulateFields haciendo click derecho sobre cualquier parte del código de la clase. Figura 8: Procedimiento inicial de creación automático de los métodos de acceso. 6 Facultad de Ingenierı́a Programación Orientada a Objetos Figura 9: Menú de Encapsulamiento. Permite crear métodos de acceso para cada atributo declarado. A continuación se ejecutará el programa propuesto introduciendoun radio numérico. Hecho esto, el programa arrojará el área del cı́rculo con el radio que fue proporcionado. Figura 10: Lı́neas de código que crean un objeto Circulo y establecen su radio en 7.2 u. Figura 11: Salida del código anterior. Se imprime en pantalla un área de 162.86002 u2. 3.2. Composición Una composición es un conjunto unificado unido por una serie de elementos. En el paradigma orientado a objetos se dice que una composición es cuando una clase tiene referencias de objetos de otras clases, con el fin de ahorrar código y optimizar una solución determinada. Con el fin de ejemplificar lo anterior se implementarán 2 clases en un nuevo proyecto. Entre las clases Persona y Fecha existe una relación de composición: uno de los atributos de la clase Persona corres- ponde a un objeto de tipo Fecha. 7 Facultad de Ingenierı́a Programación Orientada a Objetos Figura 12: Estructura UML de la clase Persona y Fecha Figura 13: Estructura básica de la clase Persona. El código implementado puede mejorarse añadiendo verificaciones de validez por medio de los métodos get y set. ¿Qué pasarı́a si el usuario ingresara un fecha negativa para una persona? Es allı́ donde radica la importancia de utilizar métodos de acceso: 1. Controlan el flujo de acceso a determinadas partes del código. 2. Establecen un orden en las maneras de modificar determinados objetos, dependiendo de sus funciones o importancia relativa. 3. Protegen elementos crı́ticos para el correcto funcionamiento del programa. 8 Facultad de Ingenierı́a Programación Orientada a Objetos Figura 14: Estructura básica de la clase Fecha. Figura 15: Verificación de validez para la fecha. Figura 16: Lı́neas de código usadas para imprimir los atributos definidos de un objeto Persona. 9 Facultad de Ingenierı́a Programación Orientada a Objetos Figura 17: Salida obtenida con el código anterior. 4. Aplicación en Python Python es mucho más flexible en la declaración de clases y en la creación de objetos haciendo uso de una sintaxis más sencilla de utilizar. A continuación, se muestra la implementación de la clase Circulo en Python; nótese que no hace falta crear ningún paquete ni separar las clases en diferentes archivos. Sin embargo, la indentación es restrictiva y un uso inadecuado de ella conducirá a errores de ejecución. Figura 18: Clase Circulo trasladada a Python: La sintaxis de creación es mucho más simplificada. La clase circulo consta de tres métodos: el constructor, perı́metro y área. def init(self, radio): Conocido como el constructor, consta de un atributo llamado radio, donde se establece qué radio va a ser igual a la variable r. Durante el codigo al hacer uso del atributo radio basta con poner la r que lo caracteriza. def perimetro(self, r). Este método tiene como parámetro al radio ‘r’. Posee la constante pi y la fórmula para obtener el perı́metro del cı́rculo; tomando siempre el valor absoluto del radio. Regresa el valor del perı́metro. def area(self, r): Al igual que el método anterior, recibe al radio ‘r’ como parámetro. Tiene una constante pi y su respectiva formula para obtener el area de circulo; regresando el área del mismo. A continuación se manda a imprimir el perı́metro y el área del cı́rculo creado anteriormente: 10 Facultad de Ingenierı́a Programación Orientada a Objetos Figura 19: Salida obtenida con las lı́neas de código anteriores. La composición en Python funciona de manera similar a Java. El código siguiente traslada la crea- ción de un objeto de tipo Persona con un atributo de tipo Fecha. Figura 20: Clase Fecha y Persona en Python. 11 Facultad de Ingenierı́a Programación Orientada a Objetos Figura 21: Creación de un objeto de tipo Persona e inicialización de sus propiedades. Figura 22: Impresión de los atributos del objeto persona1. 5. Conclusiones Para esta practica hemos logrado ver el tratamiento sobre los datos que ofrece java a través del encapsula- miento, donde podemos ocultar los datos que queramos proteger para una correcta encapsulación hay que tener en cuenta ciertas reglas de visibilidad, conceptos como privado, protegido y publico nos dan pautas para entender mejor donde queremos que se muestre ciertos atributos o métodos. Utilizamos términos como el de interfaz de una clase que representa una prestación de componente a lo largo del código, hay que aclarar que cuando usamos una interfaz debemos implementar todo lo que esta contiene. Finalmente podemos decir que el objetivo de la practica se cumplió debidamente aplicando cada concepto explicado en ella. Referencias Los créditos de las fotografı́as pertenecen a sus respectivos autores. c© LATEX 12
Compartir