Documente Academic
Documente Profesional
Documente Cultură
Taller de Programación I
Inicio 10 minutos:
Resumen de la semana anterior
Contenido:
Aprendizajes esperados
225 minutos.
Material de apoyo:
2 PPT.
1 Guía Práctica.
1 Actividad Propuesta.
Clases de java.
Hasta ahora, hemos visto que podemos crear todas las clases que necesitemos
con el fin de instanciar objetos que nos permitan resolver una gran cantidad
de variados problemas, pero el potencial de Java no termina aquí, así como
los usuarios programadores pueden crear sus clases, los programadores de
la plataforma Java han desarrollado para nosotros una gran cantidad de
clases que podrás utilizar, este conjunto de clases creado (conocidos como
paquetes, o packages en inglés), es muy grande y cubre una gran variedad
de funcionalidades orientadas a resolver problemas comunes en el desarrollo
de software, este conjunto de clases ha sido agrupada según el tipo de
Clases de Java / import
proyectos para el que sirven, por ejemplo, existen clases que encapsulan
funcionalidad requerida para trabajar en aplicaciones de escritorio, otras
especializadas en la web y otras que resuelven problemas comunes para
todos los tipos de aplicaciones.
La sentencia import
Por defecto cuando se escribe el nombre de una clase dentro de otra, Java
asume que dicha clase se encuentra dentro del mismo package, sin embargo
esto no siempre es así, en ese caso import nos servirá para especificar donde
hay que buscar la clase.
De esta manera el import realizado nos sirve para ambas clases, además una
clase puede incluir todos los import necesarios.
La biblioteca de packages que ya viene con Java es muy extensa para cubrirla
en este capítulo, sin embargo comenzaremos por algunas de las bibliotecas
Clase String
de uso común para todos los proyectos, realizaremos un recorrido por la clase
String y las destinadas a la entrada y salida de datos con Java, las cuales
serán las encargadas de obtener y presentar datos del usuario, además de
clases que presentan utilidades básicas para todos los tipos software, como
por ejemplo, cálculos matemáticos, trabajos con cadenas de texto, etc.
La clase String
Esto significa que puede crearse un objeto de tipo String sin pasar parámetros,
vale decir, sólo llamando a su constructor por defecto:
tipos de origen, vamos a aprender ahora como leer el apartado de los métodos.
Todos los métodos que tiene una clase, contienen una descripción de su
parámetro de retorno, nombre del método, dato de entrada y una descripción,
por ejemplo:
Con esta información la dificultad de utilizar las clases provistas por Java se
desvanece casi en su totalidad, por ejemplo, el comportamiento sabes que
tiene el nombre de charAt, y su descripción dice que nos retornará el carácter
de un índice especificado, que necesita para ejecutarse el número de la
posición del carácter que deseas obtener y a cambio nos retorna un objeto
de tipo char con el carácter que ocupa dicha posición. Dado que el
comportamiento es sólo aplicable a los objetos de tipo String, entonces lo
ejecutamos de la siguiente forma:
Donde el valor de “letra” es el carácter “d”
El cual nos permite conocer si una cadena comienza con la cadena que se
le entrega como parámetro, el resultado es un booleano, veamos su uso:
Este método también permite conocer si una cadena comienza con una cadena
en particular, la diferencia está dada en que además permite especificar de
la cadena original, desde que carácter deseo comenzar a evaluar, por ejemplo:
CONOCIMIENTO: Reproducir.
Niveles de pensamiento:
1._ REPRODUCE los ejemplos dados hasta este
punto.
Entradas y salidas.
Dentro del package Java.IO existen más clases que suelen utilizarse de
manera recurrente, las clases que se encuentran dentro de este package
están orientadas a entradas y salidas entandar.
Existen cuatro clases fundamentales para las entradas y salidas, las cuales
son: reader, writer, inputStream y outputStream
La clase inputStream posee una de los métodos más comunes read(), este
método realizar una lectura del flujo de entrada leyendo el próximo byte que
se encuentre disponible, el valor es devuelto como un entero, el cual representa
el valor correspondiente al carácter en la tabla de códigos ASCII, por ejemplo,
si la lectura se realiza desde el teclado, no importará si lo que se presiona
es una letra, un número o algún carácter el resultado se podrá almacenar en
un valor de tipo entero sin necesidad de realizar casting.
Existe otra clase que también utiliza la lectura que provee la clase Reader
llamada InputStreamReader, esta clase, se diferencia de inputStream en que
el byte leído es convertido a caracteres, esta clase se recibe como parámetro
un objeto de tipo inputStream, es decir el byte que se desea convertir, el cual
puedes obtener de la clase System.in, la cual provee una flujo desde el
teclado, sin embargo esto daría como resultado lo siguiente, System.in permite
la entrada desde el teclado, la entrada es leída como un flujo en byte por
inputStreamReader, el resultado que esta clase genera es transformado al
carácter correspondiente, sin embargo la lectura se puede mejorar utilizando
un flujo buferizado, esto permite ingresar un arreglo de bytes para luego ser
leído de una sola vez, el siguiente código de ejemplo muestra la interacción
entre todas las clases mencionadas para lograr una entrada de datos buferizada
por teclado.
Entradas y Salidas
Con este código podemos crear un objeto de tipo lectura y solicitarle que lea
una cadena de caracteres desde el teclado sin tener que volver a escribir el
código dentro de lectura una y otra vez.
Excepciones
Muchas veces producto de las entradas que digitan los usuarios, problemas
de conexión o una mala lógica del programador llevan a los programas a
producir errores consecuencia de acciones inesperadas del software, siempre
es mejor evitar un error que buscarle una solución, al igual como es mejor
utilizar la medicina predictiva que correctiva, sin embargo al igual que en la
vida esto no siempre es posible, en Java el control de errores se ha simplificado
bastante gracias a la utilización de excepciones, permíteme explicarte con
un ejemplo en que consiste una excepción, supongamos que tenemos un
pequeño programa que permita el ingreso de dos números de tipo float los
cuales se dividen entre si, cuando el usuario digite 3 y 2, el resultado será
3/2 = 1.5f, ¿pero qué sucederá cuando se digite 0? La división por cero
sabemos que no es posible y por ello, deberíamos antes de realizarla
validar que el número ingresado sea distinto de cero. En una aplicación
de un tamaño tan pequeño como este la predicción de errores es bastante
simple, pero en sistemas que tienen miles de líneas de código el escenario
es bastante más difícil, piensa incluso que existen ocasiones en que es
imposible prevenir un error, supongamos que tenemos un programa que
mediante una red se comunica con otro equipo, ¿Qué sucederá si la red no
se encuentra disponible? Por suerte para nosotros Java cada vez que ocurra
un error que no hayamos prevenido generará una excepción, estas excepciones
portan toda la información de la causa del error y permiten controlarlas y
codificar lo que necesitemos que ocurra en caso de haber un error.
Desarrollemos el programa que muestra la excepción de la división en cero
Excepciones
Aprendamos ahora como trabajar con errores, ahora que sabemos que el
código puede fallar debemos envolver el código susceptible a fallos dentro
de un bloque llamado try - catch (intentar – capturar) la sintaxis es la siguiente:
Apliquemos la sintaxis a nuestro caso:
throw / throws
La línea que captura el resultado y el que la imprime están ahora dentro del
bloque try, fijese que tenemos un catch, que capturará todos los errores de
tipo ArithmeticException que ocurra, por ello esta vez, si se intenta dividir por
cero el mensaje de “no es posible realizar el cálculo” será mostrado y el
código continuará ejecutándose de forma normal al finalizar el bloque de try-
catch.
throw y throws
Para este caso el método leerDouble lanza 2 excepciones, nota que un método
puede reportar todas las excepciones que desee, hecho esto el comportamiento
que consume el método lucirá así:
throw / throws
El flujo del programa será el siguiente, se intentará ejecutar las líneas dentro
del try, en caso de no existir, ninguno de los catch es ejecutado, por otra
parte, si un error ocurre sólo se ejecutara el catch que corresponde a la
excepción ocurrida, en caso de no ser ninguna de las dos, el código fallará
throw / throws
Hasta ahora hemos trabajado con clases que manejan sólo tipos de datos
primitivos, sin embargo, los objetos pueden colaborar con otros objetos, esto
permite mantener la encapsulación y la reutilización de los objetos de forma
independiente, por ejemplo, si pensamos en un curso, notaremos que está
compuesto por al menos un profesor y una N cantidad de alumnos, por lo
tanto si pensamos en registrar los datos del profesor, sería ineficiente decir
que los atributos de la clase pudiesen ser el Rut del profesor, nombre o edad,
Colaboración entre clases
Observe que la clase curso utiliza su método get y set para establecer u
obtener el valor retornando y recibiendo un objeto de tipo Profesor completo,
de esta forma es posible trasladar entre clases un conjunto de datos que
representen una entidad.
Veamos la utilización de la clase en el método main().
En el código que muestra la imagen anterior, se observa que en la primera
línea un objeto de tipo curso es instanciado, de forma adicional la instancia
del objeto miCurso incluye la declaración de un segundo objeto de tipo
profesor, en la línea que continua declaramos e instanciamos un objeto de
tipo profesor utilizando su constructor con parámetros, luego, el objeto creado
es pasado como parámetro hacia mi curso, el cual lo hace llegar a su atributo
mediante el comportamiento setObjProfe.
Observe que mediante la colaboración es posible trabajar tanto con los datos
del curso, como del profesor si la clase curso lo permite:
Colaboración entre clases
COMPRENSIÓN: Confeccionar.
Duración: 60 minutos
CONOCIMIENTO: Repetir.
1._ REPITE los ejemplos desde “entradas y salidas” en
Niveles de pensamiento:
adelante.
SINTESIS: Resumir.
ANÁLISIS: Señalar.
MA
T
No E R I A
olvi LD
2P de E
P T. s con A P O Y
1V side O:
id rar
1 G eotut tus
u o
1 E ía prá rial.
jerc ctic
icio a
gui .
ado
.
Síntesis de la semana IV: 10 minutos.