Logo Studenta

Práctica 3 V2

¡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): 3 
 
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: 23/02/2020 
 
Observaciones: 
 
 
 
 
 CALIFICACIÓN: __________ 
Facultad de Ingenierı́a Programación Orientada a Objetos
Índice
1. Introducción 2
2. Objetivos 2
3. Arreglos 2
3.1. Manejo de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Argumentos por lı́neas de comando 6
5. Java API 7
5.1. Clase de Utilerı́as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.1.1. Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.1.2. Date y Calendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.2. Wrappers y AutoBoxing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6. Colecciones 11
7. Conclusiones 13
1
Facultad de Ingenierı́a Programación Orientada a Objetos
1. Introducción
Al realizar un programa para resolver un problema, normalmente ya existen clases preconstruidas que
logran solucionar dicho problema. Si existen estas clases lo óptimo es utilizarlas no solo por reutilizar un
código y facilitar la tarea al programador sino para ahorrar tiempo, ası́ tenemos la seguridad de que la clase
ha sido probada previamente: esto implica que dentro de dicha clase no hay ningún tipo de falla inesperada.
Figura 1: Las clases prefabricadas ahorran tiempo y esfuerzo.
2. Objetivos
Utilizar bibliotecas propias del lenguaje para realizar algunas tareas comunes y recurrentes.
Identificar clases y objetos de uso común para facilitar la creación de programas en Java.
3. Arreglos
Es un objeto al que se puede almacenar un conjunto de datos del mismo tipo, cada elemento de un arreglo
tiene asignado un ı́ndice numérico según su posición, siendo el 0 el primer ı́ndice. Su forma de declararse
es la siguiente:
Figura 2: Sintaxis de declaración de un arreglo.
Como podemos ver, los corchetes pueden estar situados delante o detrás del nombre de la variable.
Los arreglos pueden declararse e inicializarse en el mismo lugar que la variable estándar, para asignar un
tamaño de entrada.
Otra forma de hacer la inicialización en valores concretos en un arreglo es muy similar a la sintaxis
usada en el lenguaje C:
2
Facultad de Ingenierı́a Programación Orientada a Objetos
Figura 3: Declaración e inicialización de un arreglo.
Figura 4: Inicialización con valores especı́ficos de un arreglo.
El acceso a un valor concreto del arreglo se efectúa utilizando el ı́ndice con la sintaxis siguiente:
Figura 5: Sintaxis de acceso.
Cabe señalar que los arreglos al crearse se inicializan por defecto al valor que le corresponde.
Los arreglos, al tratarse de objetos especiales, poseen entre sus propiedades definidas su propio
tamaño: length es un atributo único de cada arreglo que permite conocer el tamaño con el que ha sido
dimensionado un arreglo.
Figura 6: La condición de este ciclo for es que i sea menor que el tamaño del arreglo completo.
En Java se puede usar una variante del ciclo for, denominada for-each, la cual tiene como objetivo
facilitar el recorrido del arreglo.
Figura 7: Sintaxis del ciclo for each.
Al igual que en C, en Java también se pueden encontrar arreglos bidimensionales, donde se tiene que
usar para su representación otro par de corchetes de la forma: Int [][] matriz;. Conceptualmente, este arreglo
bidimensional corresponde a una matriz mxn; dónde el orden corresponderá a los valores introducidos en
los ı́ndices del arrreglo.
3
Facultad de Ingenierı́a Programación Orientada a Objetos
Figura 8: Aplicación básica del ciclo for each para un arreglo predefinido.
Figura 9: Impresión en pantalla del arreglo anterior.
3.1. Manejo de cadenas
Las cadenas en Java son objetos pertenecientes a la clase “String”, lo que significa que nos brinda una larga
variedad de métodos que facilitan su uso dentro de cualquier proyecto. Para crear un objeto de la clase
“String” existen dos maneras:
Figura 10: Declaración y creación de una cadena de caracteres.
Una vez que el objeto sea asignado a una variable podemos hacer uso de los métodos que la clase
nos ofrece, por ejemplo:
Figura 11: Uso de los métodos definidos para la clase String.
o.lenght() : regresa en un número entero el tamaño de la cadena.
4
Facultad de Ingenierı́a Programación Orientada a Objetos
Figura 12: Impresión del código anterior.
o.toUpperCase() : pone toda la cadena en mayúscula.
p.toLowerCase(): muestra la cadena en minúscula.
o.indexOf() : da en número entero el ı́ndice de la cadena donde se encuentra la letra indicada.
o.charAt(): regresa en valor tipo char a la letra que se encuentra en el ı́ndice indicado
o.substring(): devuelve una nueva cadena que es una subcadena de la cadena original, la subcadena
comienza con el carácter en el ı́ndice indicado y se extiende hasta el final de la cadena .
o.replace(oldchar, newchar): devuelve una nueva cadena resultante de reemplazar todas las aparicio-
nes de oldchar a la nueva con newchar.
Ası́ mismo las variables de tipo String se pueden concatenar con el operador “+”:
Figura 13: Concatenación de cadenas.
O si se quiere hacer sin declarar otra variable se puede ocupar StringBuilder:
5
Facultad de Ingenierı́a Programación Orientada a Objetos
Figura 14: Concatenación de cadenas.
4. Argumentos por lı́neas de comando
Se le llama “pasar argumentos por lı́nea de comandos” a la acción de suministrar parámetros al método
main de una clase, a través de la terminal directamente al momento de ejecutar el comando que permite
correr el programa. Esta situación se da cuando estamos programando desde un procesador de texto plano,
sin ayuda de ningún IDE de Java:
Figura 15: Paso de parámetros por consola.
Por otro lado, cuando se programa en algún IDE, que en nuestro caso particular, será NetBeans, hay
formas especiales en las que se pueden suministrar parámetros a la función main desde antes de correr el
programa.
Figura 16: Paso de parámetros por NetBeans.
6
Facultad de Ingenierı́a Programación Orientada a Objetos
Este proceso puede realizarse con facilidad accediendo a las propiedades de un proyecto generado
en NetBeans haciendo click derecho sobre su nombre. A continuación se selecciona Set Configuration -
¿ Customize. El menú abierto permitirá introducir argumentos en forma de cadenas de caracteres en el
apartado Argumentos, como puede verse en el siguiente ejemplo:
Figura 17: Introducción de parámetros en un proyecto de NetBeans.
5. Java API
La API de Java (Application Programming Interface) es una interfaz de programación de aplicaciones
provista por los creadores del lenguaje, que da a los programadores los medios para desarrollar aplicaciones
Java.
La API provee al programador de un conjunto de clases útiles predeterminadas para realizar distintas
tareas que con el uso de la API se facilitan enormemente ya que nos ahorran muchas lı́neas de código y
permite usar los métodos de estas clases simplemente llamando a los paquetes necesarios en nuestra clase.
La información completa del API de java se denomina especificación y sirve para conocer cualquier
aspecto sobre las clases que contiene la API.
Esta especificación es de crucial importancia para los programadores ya que en ella se pueden con-
sultar los detalles de algunaclase que se quiera utilizar y ya no serı́a necesario memorizar toda la informa-
ción relacionada.
El link de la página de Oracle para acceder a la API de JAVA es el siguiente:
http://www.oracle.com/technetwork/java/api-141528.html
5.1. Clase de Utilerı́as
Java dispone de clases útiles para apoyar el desarrollo de nuevas aplicaciones. Debido a la complejidad
de determinadas tareas, se hace necesario el uso de clases que automaticen o faciliten la realización de
7
http://www.oracle.com/technetwork/java/api-141528.html
Facultad de Ingenierı́a Programación Orientada a Objetos
Figura 18: Página de Oracle con la documentación de la Java API 9.
determinadas operaciones sin necesidad de detenerse en la implementación necesaria para realizar tales
operaciones. A continuación se muestran algunos ejemplos de las clases utilitarias más comunes:
5.1.1. Math
La clase Math tiene como objetivo realizar operaciones aritméticas comunes, siendo el cálculo de raı́ces
cuadradas y la elevación de numeros a un determinado exponente una de sus funcionalidades más útiles:
Figura 19: Uso de la clase Math para raı́ces y potencias.
En el siguiente ejemplo puede verse el uso de Math.pow() para obtener las primeras 10 potencias
del número 2, las cuales son almacenadas al interior de un arreglo de enteros:
Figura 20: Llenado de un arreglo con las potencias de 2 mediante un ciclo for.
5.1.2. Date y Calendar
Java.util posee dos clases útiles para el tratamiento básico de fechas: Date y Calendar:
Un objeto de tipo Date tiene como objetivo representar una hora y fecha especificada. Para crear
un objeto de este tipo se declara la siguiente lı́nea: Date f echa = newDate(). El método toString()
permite obtener la representación en cadena de la fecha: System.out.println( f echa.toString());.
8
Facultad de Ingenierı́a Programación Orientada a Objetos
Figura 21: Sálida del código anterior.
Figura 22: Uso básico de un objeto de tipo Date.
Figura 23: Impresión del código anterior.
Calendar nace como una solución a las carencias de la clase Date. Para crear un objeto de este tipo,
se utiliza la siguiente lı́nea: Calendarcalendario =Calendar.getInstance();
El método get() tiene como propósito recuperar cada uno de los campos que conforman a la fecha,
indicando el campo a obtener con un número entero. La misma clase define una serie de constantes
con los valores correspondientes a cada uno de los campos de una fecha y hora especı́fica.
Figura 24: Impresión del código anterior.
9
Facultad de Ingenierı́a Programación Orientada a Objetos
Figura 25: Impresión del código anterior.
5.2. Wrappers y AutoBoxing
Los wrappers o clases envoltorio proporcionan una manera de utilizar los tipos de datos primitivos como
objetos. Esto tiene algunas ventajas desde el punto de vista de la eficiencia, pero algunos inconvenientes
desde la funcionalidad.
Todas estas clases se encuentran en java.lang, la siguiente tabla muestra el tipo primitivo y la clase
envoltorio equivalente.
Figura 26: Tabla de tipos de dato primitivos y su correspondiente clase envoltorio.
Los tipos primitivos siempre se pasan como argumento a los métodos por valor, mientras que los
objetos se pasan por referencia, es decir, no hay forma de modificar en un método un argumento de tipo
primitivo y que esa modificación se transmita al entorno que hizo la llamada.
Una forma de conseguir esto es utilizar un wrapper, esto es un objeto cuya variable miembro es
el tipo primitivo que se quiere modificar. Las clases wrapper también proporcionan métodos para realizar
otras tareas con los tipos primitivos, tales como conversión con cadenas de caracteres en uno y otro sentido.
Este es un ejemplo de cómo las clases wrapper permiten crear un objeto de la clase a partir de un
tipo básico.
Figura 27: Sintaxis de de creación de un objeto envoltorio.
A excepción de Character, las clases wrapper también permiten crear objetos partiendo de la repre-
sentación como cadena del dato. Los wrappers nos permiten recuperar el valor a partir del objeto, las ocho
10
Facultad de Ingenierı́a Programación Orientada a Objetos
clases wrapper proporcionan un método con el formato xxxValue( ) que devuelve el dato encapsulado en el
objeto donde xxx representa el nombre del tipo en el que se quiere obtener el dato.
Figura 28: Conversión de cadenas a floats y recuperación de valores.
Por otro lado las clases numéricas proporcionan un método estático parseXxx(String) que permite
convertir la representación en forma de cadena de un número en el correspondiente tipo numérico donde
Xxx es el nombre del tipo al que se va a convertir la cadena de caracteres.
Figura 29: Conversión por medio de los métodos del envoltorio.
Autoboxing es la conversión automática que realiza el compilador de Java entre los tipos primitivos
y sus correspondientes clases de contenedor de objetos.
Figura 30: Proceso de autoboxing.
6. Colecciones
Las colecciones son arreglos con tamaño dinámico que almacenan referencias a objetos, por lo cual no
tienen un tamaño determinado y permiten extraer o agregar objetos en tiempo de ejecución. En Java las
principales interfaces que disponemos para trabajar con colecciones son:
CONJUNTOS: grupo de elementos desordenados y no permiten elementos dobles. Clases de este
tipo: HashSet, TreeSet, LinkedHashSet
LISTAS: grupo de elementos que mantienen un orden y puede presentarse. Clases de este tipo: Array-
List y LinkedList
MAPAS: Un grupo de pares de objetos de elementos agrupados de clave y valor. ¡llave, valor¿ Clases
de este tipo: HashMap, HashTable, TreeMap, LinkedHashMap.
11
Facultad de Ingenierı́a Programación Orientada a Objetos
ARRAYLIST: Permite el acceso a un elemento en particular en la lista ,pero para eliminar un elemen-
to hay que mover toda la lista para llenar el hueco. utiliza la siguiente sintaxis: ArrayListnombreVariable=
newArrayList();
Los métodos más usuales de la clase ArrayList son los siguientes:
add(elemento)
add(ı́ndice, elemento)
get(ı́ndice)
remove(ı́ndice)
clear( )
indexOf(elemento)
size( )
Figura 31: Ejemplo del uso de objetos de tipo ArrayList.
HASHTABLE: es un tipo de colección que utiliza una función para señalar datos por medio de una
llave o clave y transforma dicha llave a un valor ı́ndice de un arreglo de elementos. una clave o llave puede
ser de cualquier tipo de objeto. la sintaxis para hacerlo es de la siguiente manera:
Figura 32: Declaración de un Hashtable.
Los principales métodos para este tipo de clase son:
put(clave, valor)
containsKey(clave)
get(clave)
12
Facultad de Ingenierı́a Programación Orientada a Objetos
remove(clave)
size( )
Figura 33: Ejemplo del uso de Hashtables.
7. Conclusiones
El uso de las clases utilitarias demuestra ser una herramienta imprescindible en la creación de programas
complejos y en la implementación de algoritmos, facilitando la tarea del programador y ahorrando una
cantidad considerable de tiempo. A través del uso y la experimentación realizada en el laboratorio, el equipo
pudo comprender las bondades que Java presenta frente a otros lenguajes como C.
El manejo de estas clases requiere tener claros los conceptos estudiados en la clase teórica: Cla-
ses, objetos, atributos y métodos siendo los más esenciales. Con lo anterior en mente, el uso de clases
pre-construı́das ahorra tiempo y permite al programador enfocarse en la creación de clases especı́ficas pa-
ra un problema determinado, sin preocuparse por implementar soluciones a otros problemas que puedan
entorpecer el proceso de desarrollo.
Finalmente, la brigada considera que el conocimiento de estas clases puede ser aplicado efectiva-
mente en otras áreas relacionadas, como es la implementación de algoritmos en asignaturas como EDA II:
los objetos de tipo ArrayList demuestran ser una solución ideal para implementar algoritmos de ordena-
miento como Radix-Sort que requieren estructuras adicionales para realizar su tarea principal. Porlo tanto,
es posible concluir que el conocimiento obtenido en esta práctica es muy importante debido a las múltiples
aplicaciones que puede tener en distintas áreas que requieran obtener soluciones por medio del paradigma
orientado a objetos.
Referencias
[1] Colecciones y tipos genéricos en Java 84 . Recuperado de: http://programacion.jias.es/2011/
10/colecciones-genericos-en-java/. Fecha de consulta: 22/02/2020.
[2] https://docs.oracle.com/javase/9/docs/api/overview-summary.html). Recuperado de: https://docs.
oracle.com/javase/9/docs/api/overview-summary.html. Fecha de consulta: 08/02/2020.
[3] Utilerı́as y clases de uso general. Recuperado de: http://lcp02.fi-b.unam.mx/static/docs/
PRACTICAS_POO/poo_p3.pdf. Fecha de consulta: 08/02/2020.
13
http://programacion.jias.es/2011/10/colecciones-genericos-en-java/
http://programacion.jias.es/2011/10/colecciones-genericos-en-java/
 https://docs.oracle.com/javase/9/docs/api/overview-summary.html
 https://docs.oracle.com/javase/9/docs/api/overview-summary.html
http://lcp02.fi-b.unam.mx/static/docs/PRACTICAS_POO/poo_p3.pdf
http://lcp02.fi-b.unam.mx/static/docs/PRACTICAS_POO/poo_p3.pdf
Facultad de Ingenierı́a Programación Orientada a Objetos
Los créditos de las fotografı́as pertenecen a sus respectivos autores. c©
LATEX
14

Continuar navegando

Materiales relacionados

172 pag.
JavaModulo2-2

Albert Einstein

User badge image

FREDY PICHIHUA

50 pag.
Unidad-I---POO-Avanzada

UBAM

User badge image

Contenidos Muy Locos