Logo Studenta

Práctica 5 V1

¡Este material tiene más páginas!

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

Continuar navegando

Materiales relacionados