Professional Documents
Culture Documents
Programacin
Avanzada
Gua didctica
4 crditos
Titulacin
Ciclo
Informtica
IV
Autores:
Ing. Ruperto Alexander Lpez Lapo
Ing. Daniel Alejandro Guamn Coronel
Asesora virtual:
www.utpl.edu.ec
PROGRAMACIN AVANZADA
Gua didctica
Daniel Alejandro Guamn Coronel
Ruperto Alexander Lpez Lapo
UNIVERSIDAD TCNICA PARTICULAR DE LOJA
CC Ecuador 3.0 By NC ND
Diagramacin, diseo e impresin:
EDILOJA Ca. Ltda.
Telefax: 593-7-2611418
San Cayetano Alto s/n
www.ediloja.com.ec
edilojainfo@ediloja.com.ec
Loja-Ecuador
Primera edicin
ISBN Digital - 978-9942-04-205-7
Esta versin digital ha sido acreditada bajo la licencia Creative Commons Ecuador 3.0 de reconocimiento -no comercial- sin obras derivadas;
la cual permite copiar, distribuir y comunicar pblicamente la obra, mientras se reconozca la autora original, no se utilice con ines
comerciales ni se realicen obras derivadas. http://www.creativecommons.org/licences/by-nc-nd/3.0/ec/
05 de septiembre, 2011
2. ndice
2. ndice................................................................................................................................... 3
3. Introduccin...................................................................................................................... 5
4. Bibliografa....................................................................................................................... 6
4.1. Bsica.............................................................................................................................. 6
4.2. Complementaria.............................................................................................................. 6
SEGUNDO BIMESTRE
6.5. Competencias genricas.................................................................................................. 57
6.6. Planificacin para el trabajo del alumno......................................................................... 57
6.7. Orientaciones especficas para el aprendizaje por competencias.................................... 60
7. Solucionario...................................................................................................................... 97
8. Anexos................................................................................................................................. 113
PRELIMINARES
3. Introduccin
Programacin Avanzada es una asignatura troncal de la carrera de Ingeniera en Informtica de la Escuela
de Ciencias de la Computacin en la Modalidad Abierta y a Distancia de la UTPL perteneciente al cuarto
ciclo de estudios, la misma que tiene una valoracin de cuatro crditos acadmicos.
El aprendizaje de programacin es muy importante durante la vida profesional de un Ingeniero en
Informtica, ya que conlleva transformar tareas rutinarias a tareas automatizadas; las mismas que se
pueden lograr a travs de la programacin.
As como en la construccin de un edificio se realizan planos previos a su construccin, en el desarrollo
de software o aplicaciones se deben realizar diagramas en UML para tener una perspectiva completa del
comportamiento del software o aplicacin a desarrollar.
Por ello el propsito que se persigue con la asignatura es desarrollar las competencias bsicas y
necesarias para que el alumno est en capacidad de analizar y comprender problemas que involucren
temas de software para que pueda resolverlos utilizando UML (clases, secuencia) y la programacin
asociada a ello. Adems que elabore e investigue cdigo fuente reutilizable, de fcil uso y sobre todo de
mantenimiento sencillo que acoplado a los estndares de programacin hagan fcil la comunicacin
entre programadores de diversos lenguajes.
La asignatura de Programacin Avanzada contempla ocho unidades las mismas que se distribuyen en dos
bimestres de estudio. En el primer bimestre se estudiar: Estructuras de Control, Programacin Orientada
a Objetos e Interfaz Grfica de Usuario y finalmente en el segundo bimestre se revisar:Estructuras de
datos avanzados como los APIs, Expresiones Regulares que se usan en Java, Conexiones a Bases de
Datos a travs de JDBC y Programacin Multitarea.
El reto est planteado, los resultados de su formacin personal y profesional depende de cuanto est
dispuesto a dar en esfuerzo y responsabilidad. Le invitamos a que juntos llevemos adelante el estudio
de la materia y como profesores / tutores de la asignatura estamos dispuestos a ser parte de su proceso
de enseanza - aprendizaje, recordndole que esta materia es una de las bases para ir perfilando su
proyecto de vida en el mbito estudiantil.
Muchos xitos y Buena Suerte!!
PRELIMINARES
4. Bibliografa
4.1. Bsica
Texto: DEITEL, H. y DEITEL, P. (2010): Como programar en Java, Mexico: Editorial Pearson Prentice
Hall.
Libro de programacin en Java, el mismo que contiene temas que se resuelven con programacin
y que cubre el plan acadmico de la asignatura. A travs del presente libro encontrar la temtica,
seguida de una breve explicacin terica con ejercicios resueltos y por resolver, adems le guiar
en las buenas prcticas y algunos tips de programacin.
Gua: GUAMN, D. LOPEZ, A. (2010): Programacin Avanzada. Ecuador: Editorial UTPL.
La gua le orientar al estudio de los temas propuestos en el primer y segundo bimestre. La gua
didctica junto al texto bsico se convertir en las principales herramientas de estudio para poder
llevar la asignatura con xito, ya que en ella encontrar los temas a estudiar y los ejercicios tericos
y prcticos a resolver.
4.2. Complementaria
Ceballos J. (2007): Java 2 Lenguaje y aplicaciones. Madrid: Editorial Alfaomega Grupo Editorial.
Libro de programacin en Java, que abarca temas relacionados con sentencias de control,
matrices, mtodos, ficheros, programacin orientada a objetos, etc.
PRELIMINARES
Edualnav.
Programacion en Java [En lnea]. Disponible en http://www.youtube.com/
watch?v=DE521kI-73Q [Consultada en 23/02/2011].
En el video se explica con un ejemplo como empezar a utilizar netbeans.
Borysbercley. Programacion en Java y modo grfico [En lnea]. Disponible en http://www.youtube.
com/watch?v=8eEtmYrgIJQ [Consultada en 23/02/2011].
El video muestra el uso de interfaz grfica netbeans, ejemplos y manejo bsico. Parte I.
KAAF7. Programacion en Java y modo grfico [En lnea]. Disponible en http://www.youtube.com/
watch?v=8TSgylhyrNI [Consultada en 23/02/2011].
El video muestra el uso de interfaz grfica netbeans, ejemplos y manejo bsico. Parte II.
Gigabytesperu. Programacion en Java y modo grfico [En lnea]. Disponible en http://www.youtube.
com/watch?v=ypDiMOwtwrs [Consultada en 23/02/2011].
El video muestra el uso de interfaz grfica netbeans, ejemplos y manejo bsico. Parte III.
saez5432. Arreglos en java [En lnea]. Disponible
watch?v=hhnOmDlgDsc [Consultada en 23/02/2011].
El video explica la programacin de arreglos en java.
en
http://www.youtube.com/
PRELIMINARES
PixelCreation Tuts. Programacion Orentada a Objetos en Java [En lnea]. Disponible en http://www.
youtube.com/watch?v=olpt2xw5P1s&feature=related [Consultada en 23/02/2011].
En el video se muestra la programacin de Objetos, Polimorfismo. Parte I.
PRELIMINARES
La gua didctica y un texto bsico, los mismos que se detallaron en la bibliografa, tienen como
finalidad orientarle en el aprendizaje y especificarle las diversas actividades que deber cumplir.
Es por ello que se recomienda trabajar en forma paralela la gua con el texto bsico.
Lea detenidamente la Gua Didctica, ya que en ella se encuentran las indicaciones que guiarn su
autoaprendizaje.
Revise y analice cada uno de los temas del texto bsico y utilice tcnicas de estudio como el
subrayado, resmenes, cuadros sinpticos, mentefactos y/o cualquier estrategia de aprendizaje
que se adecue a su forma de aprender.
Si en el desarrollo de los temas de estudio tiene alguna duda acerca de la forma de realizar las
evaluaciones a distancia o de los temas de estudio no dude en contactar a sus profesor(es) /
tutor(es), quienes sabrn responder a sus inquietudes; pues usted nos interesa como persona y
como alumno.
Para poder ser ayudado en las diferentes temticas por los profesores / tutores usted puede utilizar
medios como: correo electrnico, entorno virtual de aprendizaje (EVA), chat, lnea telefnica.
Si tiene alguna inquietud acerca de los temas tratados puede ubicar sus dudas en el foro de
discusin del EVA, para que sus compaeros pudieran beneficiarse de las respuestas y aprender
colaborativamente.
Organice su tiempo de manera que pueda dedicar por lo menos una hora diaria al estudio y
desarrollo de los contenidos y actividades propuestas en la presente gua.
Revise la planificacin general para llevar a cabo su estudio en el primer y segundo bimestre, en la
misma se pone a consideracin las actividades que guiarn su autoaprendizaje.
PRELIMINARES
Si en alguno de los temas necesita profundizar, puede recurrir a otras fuentes de informacin
sugeridas en la bibliografa complementaria como: recursos OCW, direcciones de Internet,
biblioteca virtual, recursos educativos abiertos, videos interactivos, etc.
Como parte adicional que se incluye en la gua didctica usted se podr guiar con los siguientes iconos
que le indicarn la accin a realizar en cada unidad:
Ejercicios Propuestos
Revisar Anexos
10
PRIMER BIMESTRE
INDICADORES DE
APRENDIZAJE
-
Utiliza la estructura
de control para
combinarlas y
realizar operaciones
que se puedan
realizar a travs de
programacion.
Identifica la
importancia del uso
de las estructuras
de seleccin,
repeticin, arreglos
y archivos.
Aplica y analiza
el uso de las
estructuras estticas
como arreglos
en la resolucin
de problemas
matemticos, fsicos
o lgicos.
Realiza programas
bsicos en java
los mismos
que contengan
estructuras
de seleccin,
repeticin, arreglos
y archivos.
CONTENIDOS
Unidades / Temas
UNIDAD 1: Revisin
de Conceptos de
Programacin
1.1 Estructuras de
Seleccin.
1.2 Estructuras de
Repeticin.
1.3 Arreglos y
Mtodos.
1.4 Archivos.
ACTIVIDADES DE
APRENDIZAJE
Estudio autnomo
de los captulos
del texto bsico
y bibilografa
complementaria.
Desarrollo de
ejercicios prcticos
planteados en el
texto bsico y gua
didctica.
Desarrollo de
actividades
recomendadas en
el texto bsico y en
la gua didctica,
en los cuales se
incluye resmenes,
resaltar puntos
clave, etc.
Interaccin en el
EVA.
Inicio del
Desarrollo de
la Evaluacin a
Distancia.
Revisin de temas
en recursos OCW.
CRONOGRAMA
ORIENTATIVO
Tiempo
Estimado
Semana 1,2
8 horas de
autoestudio
8 horas de
interaccin
11
COMPETENCIAS
ESPECFICAS
PRIMER BIMESTRE
CONTENIDOS
INDICADORES DE
APRENDIZAJE
-
Unidades / Temas
dentifica y define
adecuadamente los
objetos.
-
Combina las
operaciones
que se pueden
desarrollar con
objetos, como por
ejemplo herencia,
polimorfismo, etc.
-
Analiza y disea
diagramas de Clases
utilizando UML.
- Aplica
correctamente
los conceptos de
programacin
de objetos
como Herencia,
Polimorfismo.
-
Asocia los
conceptos de la
Programacin
Orientada a Objetos
con la vida diaria.
UNIDAD 2:
Programacin
Orientada a Objetos
2.1 Herencia
2.2 Polimorfismo
2.3 Clases
Abstractas e
Interfaces
2.4 UML: Diagramas
de Clase y
Secuencia
Unidades de la 1 a
la 3
12
ACTIVIDADES DE
APRENDIZAJE
CRONOGRAMA
ORIENTATIVO
Tiempo
Estimado
Estudio autnomo
de los captulos
del texto bsico
y bibilografa
complementaria.
Desarrollo de
ejercicios prcticos
planteados en el
texto bsico y gua
didctica.
Desarrollo de
actividades
recomendadas en
el texto bsico y en
la gua didctica,
en los cuales se
incluye resmenes,
resaltar puntos
clave, mentefactos,
cuadros sinpticos.
Interaccin en el
EVA
Revisin de
anuncio en el EVA.
Resolucin a Foros
de Discusin.
Revisin de
Lecturas Sugeridas
en la WEB y
Videos Interactivos
con desarrollo de
programas.
Continuacin
del Desarrollo de
la Evaluacin a
Distancia
Desarrollo de
la segunda
Autoevaluacin
Desarrollo
de la Tercera
Autoevaluacin.
Revisin de los
recursos OCW.
Semana 5,6
8 horas de
autoestudio
Preparacin para
evaluaciones
presenciales.
Completar
autoevaluaciones,
revisin de videos
interactivos,
recursos OCW,
utilizar java
para desarrollar
ejercicios
prcticos.
Semana 7 y 8
8 horas de
interaccin
PRIMER BIMESTRE
Interaccin en el EVA
Prueba objetiva
Cumplimiento, puntualidad,
responsabilidad
X
X
Contribucin en el trabajo
colaborativo y de equipo
Anlisis y profundidad en el
desarrollo de temas
PORCENTAJE
Puntaje
TOTAL
70%
14
20 puntos
Actividades
presenciales y en el
EVA
Estrategia de
aprendizaje
Mximo 1 punto
(completa la
evaluacin a
distancia)
Habilidades
Creatividad e iniciativa
Conocimientos
3. Coevaluacin
Parte de ensayo
Evaluacin a
distancia **
Comportamiento tico
Competencia: criterio
Actitudes
Evaluacin
presencial
Parte objetiva
1. Autoevaluacin *
2. Heteroevaluacin
Para aprobar la asignatura se requiere obtener un puntaje mnimo de 28/40 puntos, que equivale al 70%.
* Son estrategias de aprendizaje, no tienen calificacin; pero debe responderlas con el fin de autocomprobar su
proceso de aprendizaje.
** Recuerde que la evaluacin a distancia consta de dos partes: una objetiva y otra de ensayo, debe desarrollarla y
entregarla en su respectivo centro universitario.
Seor estudiante:
Tenga presente que la finalidad de la valoracin cualitativa es
principalmente formativa.
13
PRIMER BIMESTRE
Introduccin a las aplicaciones en Java, refierase un poco ms en los temas de declaracin de variables,
tipos de datos y el desarrollo de su primer programa en java.
Conoce los temas antes en mencin y que son necesarios para empezar el estudio de las estructuras de
seleccin?, pues bien, si los conoce vamos a retomar la parte terica que la tiene en el texto bsico y luego
de revisar y analizar los temas propuestos vamos a relacionar los mismos para estudiar las estructuras
de seleccin y sus comportamientos, aspectos importantes que posteriormente le ayudarn a resolver
ejercicios primero a nivel de lenguaje natural y luego con programacin en java.
Ahora retome el texto bsico en el captulo denominado instrucciones de control.
Subtemas a estudiar:
-
-
14
PRIMER BIMESTRE
Ejercicios 1.1
Mencione 3 ejemplos en los que Ud. considere se aplican condicionales simples y con caso contrario en
la vida diaria.
a. ______________________
b. ______________________
c. ______________________
Ejercicios 1.2
Con sus propias palabras defina que es una estructura de seleccin y cuantos tipos existen. Proponga un
ejemplo utilizando programacin java.
_____________________________________________________________________________________
_____________________________________________________________________________________
_____________________________________________________________________________________
Ejercicios 1.3
Llene los espacios en blanco de las siguientes condiciones con las expresiones condicionales adecuadas:
Si voy de viaje.debo preparar mi equipaje.
Si tengo dineropuedo comprar un Ipad.
Si estudio la materia de Programacin Avanzada y alcanzo 40 puntos entoncescaso
contrario
En Ecuador, si una persona tiene 18 aos o mas se considera.., caso contrario se
considera.
Cmo resultaron los ejercicios?, espero que muy bien, para complementar estos temas revisemos las
siguientes caractersticas y ejemplos adicionales que poseen las estructuras de seleccin.
Recuerde que las estructuras de seleccin pueden contener una o varias alternativas especialmente en
la seccin del caso contrario, revisemos los siguientes esquemas:
15
PRIMER BIMESTRE
X=40;
If (x >= 40)
System.out.println(Aprobado);
else
System.out.println(Reprobado);
En un instante de tiempo la variable X que
(Segunda declaracin)
corresponde a la nota de un estudiante es igual a
40.
X=40;
Si el valor de la variable X es mayor o igual a 40
If (x >= 40)
entonces el estudiante aprueba la asignatura, caso
{
contrario, reprueba la misma.
System.out.println(Aprobado);
}
Else
{
System.out.println(Reprobado);
}
Cul es la diferencia existente en las dos formas de expresar en cdigo java la sentencia condicional
escrita anteriormente?, tmese cinco minutos para dar una respuesta.
Los analiz?, Conoce la respuesta?, pues bien, si se fija en la primera declaracin tiene una sentencia
condicional (if ); cuando la misma es verdadera y una cuando es falsa, similar a la segunda declaracin;
la diferencia est en las llaves utilizadas, aqu le comento que si tiene mas de una respuesta cuando la
condicin es verdadera utilice llaves de lo contrario puede ir sin las mismas, esto es clave al momento de
programar con cualquier lenguaje de programacin, revisemos el siguiente ejercicio.
a=20;b=30;
If ((a=20) && (b=30))
{
Si a=20 y b = 30 entonces realice la suma y la
Resultado1 = a+b;
multiplicacin y almacnela en una variable
Resultado2 = a*b;
resultado1 y resultado2, caso contrario realice la
}
divisin y almacnela en una variable resultado.
else
Resultado = a/b;
Como se puede observar en el ejercicio anterior, es posible trabajar con dos ms operadores lgicos
como OR y AND a travs de los cuales se desarrollar la operacin especificada. Adems es importante
mencionar que tambin se pueden utilizar operadores de comparacin como = = , !=, <, >, <=, >=.
Como ha revisado hasta este instante, lo ms importante para el funcionamiento adecuado de las
estructuras de seleccin o decisin parte del conocimiento y aplicacin de temas revisados en lgica de
la programacin como son las tablas de verdad y los silogismos, con lo que las estructuras de seleccin
trabajarn adecuadamente en programacin con cualquier lenguaje de alto nivel.
16
PRIMER BIMESTRE
Una vez que revis el texto bsico en los captulos de sentencias de condicin y va acoplando lo estudiado
con lo nuevo en programacin, realice los siguientes ejercicios.
Ejercicios 1.4
Realice un programa en java que permita determinar si una persona es adolescente, mayor de edad y de
tercera edad, teniendo como condiciones lo siguiente:
Elabore el programa en java que permita imprimir las salidas correspondientes que evalan las
condiciones.
Ejercicios 1.5
Cul es el resultado de la ejecucin de la siguiente clase en java para manipular sentencias condicionales?
Cdigo en java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package ec.edu.utpl.unidad1.estructuras;
public class Main
{
public static void main(String[] args)
{
int edad=18;
String nombre = Alejandro;
if (edad == 18 && nombre == Daniel)
System.out.println(Daniel es mayor de edad);
else
if (edad == 18)
System.out.println(La persona tiene 18 anios);
System.out.println(No se cumple la condicion);
}
}
17
PRIMER BIMESTRE
Ejercicios 1.6
18
Estructuras while.
Estructuras for
Estructuras do while.
Ordenacin por insercin.
Bsqueda en listas.
PRIMER BIMESTRE
Hemos revisado los temas del texto bsico?, responda por favor a las siguientes inquietudes que se
proponen en los ejercicios.
Ejercicios 1.7
Enumere dos o tres diferencias existentes al momento de trabajar con las estructuras de control
repetitivas.
Muy bien, revisemos estos puntos importantes de las estructuras de control repetitivas; empecemos por
el while.
El mientras (while en ingls), permite realizar un proceso repetitivo, el cual debe tener un
punto de inicio y una condicin o bandera para terminar su ejecucin, de lo contrario nunca
finalizar el programa y esto har que la memoria del procesador se sature haciendo que el
mismo sufra un overflow (colgada del programa). Nunca olvide que el while no posee un
incremento automtico, esto suele ser un error para producir un overflow.
Hablando en lenguaje natural, para poder entender de mejor manera la sentencia while revisemos los
siguientes ejemplos en los cuales se tiene un punto de ejecucin y de finalizacin.
Ejemplos
Mientras el computador tenga batera
Se puede realizar las tareas
Fin Mientras
Mientras aprenda temas de programacin
Puedo desarrollar software
Fin Mientras
Mientras existan laptops en stock
Se puede vender laptops
Se pueden vender laptops ms accesorios adicionales
Fin Mientras
A nivel de programacin, tal como lo puede revisar en el texto bsico, la declaracin del while en lenguaje
de programacin java es como sigue:
a)
Mientras (variable1 operador variable2)
Bloque de cdigo
Incremento de variable1
Fin Mientras
19
b)
PRIMER BIMESTRE
int valor = 10
While (valor <= 10)
valor = 4 * 2;
Muy bien, ahora realicemos el siguiente ejercicio.
Ejercicio 1.8
En el ejemplo anterior (1.7 de la gua didctica), literal b, identifique a los siguientes elementos:
a.
b.
c.
d.
Ejercicio 1.9
Utilizando lenguaje de programacin java resuelva el siguiente problema utilizando una estructura
while:
Declare dos variables de tipo entero, una que est inicializada con el valor de 0 y otra con el valor
de 5, esta ltima ser el valor del lmite.
Luego utilice una estructura while que permita escribir en pantalla el valor de la variable que se
incrementa hasta que se cumpla la condicin.
Cuntas veces se ejecut el proceso?
Esperamos que los ejercicios estn apoyando en su estudio, recuerde que combinar procesos de
sentencias de condicin con sentencias repetitivas tambin le ayudar a terminar la ejecucin del mismo.
Ahora revisemos la sentencia de control for (para en espaol), esta estructura al igual que la sentencia
while sirve para llevar a cabo procesos o algoritmos los cuales deben repetirse hasta que se cumpla una
condicin.
Recuerde revisar de manera conjunta a la presente gua el texto bsico con el cual afianzar los
conocimientos de lo que vamos estudiando, por lo pronto revisemos en lenguaje natural como se
escribe una sentencia repetitiva utilizando for.
Para estudiantes menores de 20 aos hacer
Imprimir sus nombres
Fin para
Para computadoras con procesador i7 hacer
Imprimir la marca de los computadores
Fin Para
20
PRIMER BIMESTRE
Es indispensable luego de revisar las sentencias de control en su expresin con lenguaje natural analizar
la definicin utilizando un lenguaje de programacin java, para lo cual se expone la declaracin que se
encuentra tambin en el texto bsico:
for (int contador = 1; contador <= 10; contador ++)
for: Palabra clave for
int: Tipo de dato
contador: variable de control
1 : valor inicial de la variable de control
; : separador de las variables
contador <= 10: condicin para ejecucin del ciclo
contador ++: incremento de la variable
Vamos a explicar la definicin del ejercicio anterior:
La sentencia for declarada tiene una variable contador la misma que se inicializa con el valor de uno (1),
la variable permitir realizar el proceso hasta que sea menor o igual a 10, lo que permite incrementar
la variable es la ltima seccin la misma que se indica en contador ++. Esta ltima seccin en un for
permite que la variable se incremente automticamente, aqu es necesario conocer que la variable
puede incrementarse o decrementarse de diferentes maneras adoptando un valor de incremento o
decremento diferente.
Revise en el texto bsico el captulo relacionado a estructuras de repeticin for, especficamente en
los siguientes subtemas:
-
-
Una vez que ha revisado los temas expuestos en la presente gua y en el texto bsico resuelva los
siguientes ejercicios:
Ejercicio 1.10
Utilice la sentencia de control repetitiva for para resolver las siguientes inquietudes:
a)
Realice un programa en java que imprima los nmeros pares e impares de los 10 primeros nmeros
enteros.
b)
Realice un programa en java que permita identificar si un nmero es divisible para dos, realice este
proceso con los 20 primeros nmeros enteros.
Ejercicio 1.11
21
A)
Cdigo en java:
1
package ec.edu.utpl.unidad1.estructuras;
if (i == 0) {
System.out.println(a);
if (i == 1) {
System.out.println(e);
10
11
if (i == 2) {
12
System.out.println(i);
13
14
if (i == 3) {
15
System.out.println(o);
16
17
if (i == 4) {
18
System.out.println(u);
19
20
21
22
B)
22
PRIMER BIMESTRE
}
}
Cdigo en java:
1
package ec.edu.utpl.unidad1.estructuras;
switch (i)
case 1:
10
System.out.println (a);
11
break;
12
case 2:
13
System.out.println(e);
PRIMER BIMESTRE
14
break;
15
case 3:
16
System.out.println (i);
17
break;
18
case 4:
19
System.out.println(o);
20
break;
21
case 5:
22
System.out.println (u);
23
break;
24
default:
25
System.out.println (-);
26
break;
27
28
29
30
}
}
Para finalizar el estudio de las sentencias de control repetitivas revisemos la sentencia do while, su
comportamiento es similar a la estructuras de control while, por lo que si hay algn aspecto que no
esta claro de dicha sentencia es necesario volver a revisar con el fin de comprender de mejor manera su
comportamiento y ejecucin, cabe tambin indicar que las sentencias de control repetitiva while y for
son las ms utilizadas al momento de realizar algoritmos de programacin por lo que invitamos a tomar
el texto bsico y revisar la temtica correspondiente.
Dentro de las instrucciones de control revise los temas relacionados a la Instruccin de repeticin
do while. Subtemas a estudiar:
- Declaraciones
- Ejercicios
while (condicin)
b. do
instruccin
while (condicin)
Como se puede observar en los dos casos anteriores (a y b) la condicin es la clave para poder salir del
bucle, por lo que es muy importante definir y conocer que es una condicin y no olvidar incrementar o
decrementar el valor de la misma para que el programa no tienda al infinito (overflow).
23
PRIMER BIMESTRE
Una vez que ha estudiado los temas relacionados a las estructuras de control repetitivas es necesario
finalizar los mismos resolviendo los siguientes ejercicios.
Ejercicio 1.12
Mencione al menos 3 diferencias existentes entre las sentencias de control repetitivas estudiadas (while,
for y do while)
Para reforzar los temas relacionados a las estructuras de control tanto condicionales como
repetitivas le invitamos a que revise el captulo o bloque 2 del recurso OCW UPM indicado
en la bibliografa complementaria.
Ha revisado la definicin, elementos y declaracin de los arreglos?, para relacionar los arreglos con
aspectos de la vida cotidiana proponemos los siguientes ejercicios que afianzarn sus conocimientos.
Ejercicio 1.13
Mencione 3 ejemplos en los que Ud. considere se utilicen arreglos en la vida cotidiana.
a. ______________________
b. ______________________
c. ______________________
24
PRIMER BIMESTRE
Ejercicio 1.14
Hablando de arreglos, con sus propias palabras defina qu es un ndice y qu es un elemento. Proponga
un ejemplo y progrmelo utilizando java.
Ejercicio 1.15
Elemento
Java
PHP
C#
C++
Visual Basic
ndice
Un arreglo est vaco o lleno?, cmo inicializar un arreglo?, cmo acceder a los elementos del arreglo?,
son preguntas que ud. en este instante se ha de hacer. Es hora de aclarar estos temas.
25
PRIMER BIMESTRE
Por favor retome el estudio del texto bsico y revise el captulo de arreglos o arrays.
-
Una vez que revis el texto bsico en los captulos antes mencionados, realice los siguientes ejercicios.
Ejercicio 1.16
Una entidad educativa en una de sus asignaturas tiene 50 alumnos matriculados, si ud. tuviese que
disear un arreglo para registrar las notas de los alumnos responda a las siguientes interrogantes,
plasmando sus respuestas en un programa codificado en Java:
26
PRIMER BIMESTRE
Revise en el texto bsico el captulo de arreglos, identifique la codificacin y analice los algoritmos
propuestos.
Subtemas a estudiar:
-
Ordenamiento de arreglos.
-
Bsqueda en arreglos.
Hemos revisado los temas del texto bsico?, responda por favor a las siguientes inquietudes que se
proponen en los ejercicios.
Ejercicio 1.17
Notas de los estudiantes del primer ciclo de la carrera de informtica, asignatura matemticas.
18
26
30
34
38
40
2.
3.
10
27
PRIMER BIMESTRE
Una vez que hemos analizado y practicado desarrollando en java los temas de arreglos y conocemos
su uso, es necesario estudiar el tema relacionado a mtodos, qu son?, para qu sirven?, cmo se los
utiliza?
Revise en el texto bsico el captulo de mtodos.
Subtemas a estudiar:
-
Declaracin de mtodos.
-
Promocin de argumentos.
-
Sobrecarga de mtodos
Luego de haber revisado el texto bsico, vamos a ubicar ciertas pautas que permitan el correcto trabajo
y uso de los mtodos, ayudndonos de ejemplos y ejercicios prcticos.
1.3.2 Mtodos
Cuando Ud. inici la carrera en informtica, aplic la lgica para resolver un sin nmero de ejercicios
que tenan como enfoque final programarlos (codificarlos) utilizando un lenguaje de programacin,
en ciertas ocasiones sus programas fueron extensos (en lneas de cdigo), pero conforme avanz su
prctica y estudio esto fue mejorando hasta encontrar mejores soluciones a problemas planteados, sin
embargo estas soluciones pueden ser mucho ms optimas si reduce las lneas de cdigo o a su vez
utiliza mtodos, los mismos que se los utiliza para hacer de un programa extenso algo similar a mdulos
utilizando el concepto del Divide y Vencers.
Tal como se menciona en el texto bsico, los mtodos permiten al programador dividir un programa en
mdulos, pero con qu finalidad?, el principal objetivo de los mtodos es poder reutilizar funciones
o lgica programada por otros desarrolladores y que sean tiles dentro de un proyecto de software
especfico.
Cabe indicar que cuando se trabaja en Java existen algunos mtodos definidos que se pueden utilizar o
invocar para ejecutar una accin, dentro de las ms conocidas estn los relacionados a los mtodos de
la clase Math, ejemplos son (abs, pow, min, cos).
En el texto bsico revise el tema de mtodos.
Subtemas a estudiar:
-
Declaracin de mtodos.
Tome como relacin uno de los mtodos de la clase Math de java, para el caso de ejemplo tomaremos
max (x, y); resolvamos las siguientes inquietudes:
Cul es el nombre del mtodo?
max [por lo general se ubica un nombre al mtodo el mismo que identifique su comportamiento dentro
del programa, este por ejemplo sirve para obtener el mximo de dos nmeros]
28
PRIMER BIMESTRE
SALIDAS
ENTRADAS
PROCESOS
Ahora bien, retomemos el mtodo max, supongamos por un momento que tenemos el mismo mtodo
max pero que permite obtener el mximo de 3 4 nmeros, en este caso el nombre seguir siendo el
mismo, lo nico que cambiar es el nmero de parmetros que se utilicen, a esto se conocer como
sobrecarga de mtodos, lo cual permite tener un mtodo con el mismo nombre pero que se enve varios
parmetros y el resultado puede ser el mismo expresado en nmeros o en letras.
En el texto bsico revise el tema de mtodos.
Subtemas a estudiar:
-
Sobrecarga de mtodos.
Una vez que ha revisado juntamente con el texto bsico los temas propuestos, desarrolle los ejercicios
que se plantean a continuacin y que estn enfocados al uso de los mtodos y su comportamiento
dentro de un programa.
29
PRIMER BIMESTRE
Ejercicio 1.18
Elabore un programa que utilice mtodos para simular el uso de una calculadora en Java. (La calculadora
puede operar con las operaciones bsicas, suma, resta, multiplicacin, divisin, potenciacin, raiz)
Ejercicio 1.19
Elabore un programa en java utilizando mtodos que permita resolver la siguiente ecuacin:
Ejercicio 1.20
1.4. Archivos
Finalmente, para cerrar este captulo revisemos el tema relacionado a los archivos y su uso dentro de
la programacin en Java, cabe indicar que como lo hemos llevado anteriormente es indispensable la
lectura del texto bsico el cual orientar de mejor manera para la comprensin de los temas.
Retome el estudio en el texto bsico para revisar el captulo relacionado a archivos y flujos
Subtemas a estudiar:
-
Creacin, actualizacin, lectura y escritura en archivos.
En base a la lectura del texto bsico, es importante contemplar que los archivos son una de las tantas
formas que permiten almacenar informacin, la misma que puede ser consultada o actualizada en
memoria denominada secundaria como: discos duros, Cd-Rom, cintas magnticas, etc. Cabe indicar
que as como se puede almacenar informacin en archivos tambin se lo puede realizar en repositorios
de informacin mucho mas extensos como por ejemplo: bases de datos, las mismas que gracias a sus
estructuras robustas se puede modelar, crear y realizar algunas operaciones, por lo pronto nuestro
objeto de estudio son los ficheros o archivos, los mismos que pueden ser de tipo binario o tipo texto.
Para realizar una representacin grfica de los archivos es necesario indicar que stos se encuentran
formados por registros y campos, tal como se detalla a continuacin.
30
PRIMER BIMESTRE
De forma similar como se trabaj y explic los arreglos, en archivos se tiene una determinada
posicin para cada registro dentro de la secuencia de datos.
En las operaciones de lectura o escritura que se realice sobre el archivo solo se podr realizar dicha
operacin en un nico registro.
Los accesos a los archivos se los puede realizar se manera secuencial o aleatoria.
Ejercicio 1.21
Cul es el resultado de ejecucin del siguiente algoritmo?, si desea puede manipular el cdigo para
obtener algn otro resultado.
31
PRIMER BIMESTRE
Cdigo en java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package ec.edu.utpl.unidad1.estructuras;
import java.io.*;
class InformacionFichero
{
public static void main( String args[] ) throws IOException {
File f = new File( C:\\Archivos\\Archivo.txt );
System.out.println( Nombre: +f.getName() );
System.out.println( Ruta: +f.getPath() );
if( !f.exists())
{
System.out.print( Fichero existente );
System.out.print( (f.canRead() ? se puede Leer:));
System.out.print( (f.canWrite()?se puede Escribir:));
System.out.println( . );
System.out.println( La longitud del fichero son +f.length()+ bytes );
}
else
System.out.println( El fichero no existe. );
}
}
Ejercicio 1.22
Cual es la diferencia(s) existente(s) entre archivos de acceso secuencial y archivos de acceso directo?,
represntelo grficamente y codifquelos en java.
1.4.1 Operaciones sobre archivos
Luego que ha empezado a programar en java los archivos de acceso secuencial y aleatorio, ha identificado
las operaciones que se pueden realizar sobre los mismos, algunas de ellas son:
1. Creacin:
-
-
2. Apertura:
-
-
32
PRIMER BIMESTRE
3. Operar:
-
-
-
-
4. Cerrar:
-
33
PRIMER BIMESTRE
Autoevaluacin 1
Como parte de su aprendizaje es importante que resuelva la autoevaluacin la misma que le ayudar a
comprender mejor los temas. Desarrolle la autoevaluacin sin ayuda del texto bsico ni gua didctica,
luego verifique sus respuestas con el solucionario para la parte objetiva que se encuentra al final de esta
gua. Buena Suerte!
Conteste a las siguientes interrogantes utilizando una V si es Verdadero o una F si es Falso.
1.
La instruccin for se encarga de los detalles acerca de la repeticin controlada por contador.
( )
2.
( )
3.
( )
4.
( )
5.
La siguiente declaracion de arreglo: int notas [8], hace referencia a un arreglo de 8 elementos
de tipo entero.
( )
6.
( )
7.
( )
8.
( )
9.
Los argumentos que se pasan a un mtodo deben concordar en nmero, tipo y orden con los
parmetros en la declaracin del mtodo.
( )
10.
( )
10
2.
3.
34
PRIMER BIMESTRE
4.
Ordenado ascendentemente
Ordenado descendentemente
5.
1.
2.
B)
Ir a solucionario
35
PRIMER BIMESTRE
2.1. Herencia
Hablar de herencia es empezar a incursionar en la POO (Programacin Orientada a Objetos) y al empezar
a hablar de POO existen algunos trminos que se revisaron en captulos o asignaturas anteriores que
cambian de nomenclatura pero su comportamiento sigue siendo el mismo, por ejemplo, a las variables
se las conoce como atributos y a los mtodos se los conocer como comportamientos.
Los temas principales de herencia, atributos y mtodos los podr revisar en el texto bsico:
Revise el texto bsico el captulo relacionado a herencia
Subtemas a estudiar:
- Atributos
- Mtodos
- Clases
- Superclases
- Subclases
Para aclarar los temas relacionados a mtodos, atributos y herencia mencionemos algunos aspectos
importantes:
36
PRIMER BIMESTRE
En herencia lo importante es abstraer una clase a su mnima expresin, definir sus atributos
y mtodos de forma correcta.
La clase padre tambin se la conoce como superclase, clase base o clase padre.
Una de las capacidades de la POO es derivar una clase a partir de otra.
Relacionando la herencia con aspectos de la vida diaria, se puede tomar como ejemplo el rbol
genealgico de las personas, en las cuales se tiene siempre una cabeza (Nivel 0) y a partir de ella se van
desglosando varias ramas consideradas como hijas. A nivel de definicin de clases y subclases se puede
mencionar que una superclase tendr definido sus mtodos y atributos que luego una subclase puede
heredar y a su vez esta subclase puede incluir nuevos atributos y mtodos que pertenezcan solo a la
clase que se est definiendo en ese instante. Una representacin grfica de lo antes mencionado seria:
CLASE BASE
Atributo 1
Atributo 2
Mtodo 1
SUBCLASE 1
SUBCLASE 2
SUBCLASE 3
Atributo 1
Atributo 4
Mtodo 1
Atributo 3
Atributo 5
Mtodo 2
Atributo 6
SUBCLASE 1
SUBCLASE 2
SUBCLASE 3
Atributo 1
Atributo 3
Atributo 4
Metodo 1
Metodo 2
Figura2.1: Representacin de Herencia
37
PRIMER BIMESTRE
Ejercicio 2.1
Mencione 5 clases con subclases (1 clase padre y 3 subclases), de las subclases por lo menos una se
transforme en superclase de una nueva subclase.
Ejercicio 2.2
Represente la relacin de clases del ejercicio 2.1 a travs de diagramas UML y empiece a escribirlas en
java.
Ha culminado los ejercicios?, esperamos que los mismos hayan sido tiles para abstraer una clase y
ubicar correctamente los atributos y mtodos que se pueden o podran heredar de una clase padre.
Finalmente como est revisando teora es indispensable adentrarse a desarrollar ejercicios de herencia
a travs del lenguaje de programacin java, para ello revisemos los ejemplo en java que se encuentran
en el texto bsico en los cuales se representa clases, atributos, mtodos y se revisan algunos temas
identificados con constructores.
Algunos ejemplos relacionados a clases, atributos y constructores los encontrar en la parte
de Anexos.
Ahora por favor vamos a revisar y programar los ejercicios desarrollados en java que se encuentran en el
texto bsico, seleccione los que ud. desee que formen parte de su autopreparacin.
Revise el texto bsico el captulo relacionado a herencia y ejemplos programados en java.
Subtemas a estudiar:
-
Programacin de clases, definicin de atributos, mtodos.
-
Puede reescribir los ejemplos que se encuentran en el texto bsico.
Para comprender temas de programacin de clases y herencia es importante identificar algunas palabras
reservadas entra las que destacan: class, super, extends.
Cabe indicar que en base a la lectura que Ud. realiz con la ayuda del texto bsico encontrar temas
relacionados al buen uso de las palabras reservadas antes mencionadas y podr utilizarlos en la
programacin en java, por favor es indispensable de aqu en adelante que vaya poniendo en prctica sus
habilidades con el lenguaje de programacin java, recuerde que si tiene alguna duda por favor puede
comunicarse a travs de cualquier medio con sus profesores tutores.
En la parte de anexos encontrar algunos ejercicios desarrollados en java que implementan
este tipo de estructuras.
Como parte de su aprendizaje es necesario ir adentrndose en el mundo de la programacin utilizando
lenguaje java, realice los siguientes ejercicios que se proponen.
38
PRIMER BIMESTRE
Ejercicio 2.3
Escriba el siguiente cdigo en java, en el identifique cual es la clase o clases, constructor o constructores,
atributos (su tipo de datos) y mtodos.
Cdigo en java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package ec.edu.utpl.unidad2.objetos;
public class Main {
public static void main(String[] args) {
//Instanciacin de la clase Persona
Persona p= new Persona();
//Pasa atributos al constructor de la clase persona
Persona p1=new Persona(22,Marcos,12);
p1.setGenero(M);
Persona p4=new Persona(33,Lucia,34,F);
//presentacin en pantalla del resultado de ejecucin de los mtodos
System.out.println(p1.getIdPersona() + + p1.getNombre() + + p1.getEdad());
System.out.println(p4.getIdPersona() + + p4.getNombre() + +p4.getEdad()+
+p4.getGenero());
}
}
//Defincion de la clase padre o base
class Persona {
// Atributos
private int idPersona;
private String nombre;
private int edad;
private String genero;
// Constructor con parametros
public Persona(int id, String nombre, int edad) {
setIdPersona(id);
setNombre(nombre);
setEdad(edad);
}
//Constructor sinParametros
public Persona() {
}
//Constructor con Parametros
public Persona(int id, String nombre, int edad, String genero) {
setIdPersona(id);
setNombre(nombre);
setEdad(edad);
setGenero(genero);
}
39
PRIMER BIMESTRE
// Mtodos set
public void setIdPersona(int valor) {
this.idPersona = valor;
}
public void setNombre(String valor) {
this.nombre = valor;
}
public void setGenero(String valor) {
if (valor.equals(F) || valor.equals(M)) {
this.genero = valor;
} else {
System.out.println(El gnero debe ser F o M);
}
}
public void setEdad(int valor) {
if (valor < 55) {
this.edad = valor;
} else {
System.out.println(La edad debe ser < 55);
}
}
// Mtodos get
public int getIdPersona() {
return this.idPersona;
}
public String getNombre() {
return this.nombre;
}
public int getEdad() {
return this.edad;
}
public String getGenero() {
return this.genero;
}
}
Ejercicios 2.4
40
PRIMER BIMESTRE
Ejercicios 2.5
41
PRIMER BIMESTRE
2.2. Polimorfismo
Luego de haber estudiado los temas relacionados a herencia y familiarizarse con temas de POO, se
puede indicar que el polimorfismo tiene aspectos similares a la herencia ya que permitir utilizar clases
y subclases sin necesidad de volver a programar mtodos o atributos ya definidos, dicho de otra forma
es la capacidad de los objetos de comportarse de diferentes formas.
Para conocer un poco ms acerca del polimorfismo, es necesario retomar la lectura en el texto bsico de
los temas correspondientes.
Revise el texto bsico el captulo relacionado a polimorfismo y ejemplos programados en java.
Subtemas a estudiar:
-
Relaciones ntre los objetos en una jerarqua de herencia
-
Ejemplos de polimorfismo
-
Clases y mtodos abstractos
Al igual como se estudi en la herencia, la relacin existente en el polimorfismo est dada por la palabra
es un, la misma que grficamente se puede expresar como sigue:
Un ejemplo a travs del cual se puede explicar el tema de polimorfismo es: tener las clases
EstudiantePrimario, EstudianteSecundario, EstudianteUniversitario y que cada una de las clases tenga
un mtodo que se llame CalcularNotas y dentro de este mtodo se realice por ejemplo los clculos para
aprobar o no un estudiante, esto quedara de la siguiente manera:
42
PRIMER BIMESTRE
Clase
Metodo
Operaciones
Condiciones
EstudiantePrimario
CalcularNotas
No hay supletorio
EstudianteSecundario
CalcularNotas
PrimerTrimestre/20
+
Segundo Trimestre/20 +
Proyecto Final
Hay un Supletorio
Final por todo el curso
EstudianteUniversitario
CalcularNotas
Como se puede observar, para cada una de las tres clases se tiene el mtodo Calcular Notas pero sus
operaciones y condiciones finales de aprobacin son diferentes, el polimorfismo indica que puedo tener
mtodos iguales con comportamientos o implementaciones diferentes.
Ahora, en base a lo que ud. est revisando en el texto bsico por favor verifiquemos nuestro avance en
los temas planteados, para ello realice los siguientes ejercicios.
Ejercicio 2.6
Ejercicio 2.7
Escriba los 3 ejemplos de clases del ejercicio 2.4 de la gua didctica en java, utilice un esquema en el que
se vea reflejada la herencia de clases y el polimorfismo.
Esperamos que los ejercicios sirvan de apoyo en la comprensin de los temas, sin embargo revisemos el
siguiente cdigo en java simple y sencillo que ayudar a identificar el tema de polimorfismo.
Cdigo en java:
1
2
3
4
5
6
7
8
9
10
11
package ec.edu.utpl.unidad2.objetos;
public class Main
{
public static void main(String[] args)
{
//Creacin del Objeto para instanciar la clase
Persona p= new Persona();
//Impresin de la llamada a los mtodos de la clase
System.out.println(Nombre de la persona + p.obtenerNombre());
System.out.print(Edad de la persona: + p.obtenerEdad());
43
PRIMER BIMESTRE
}
}
//clase Padre o Base
class Persona
{
//mtodos clase Padre
public int obtenerEdad()
{return 20;}
public String obtenerNombre()
{return Daniel;}
}
//clase Estudiante hereda atributos y metodos de la clase padre
class Estudiante extends Persona
{
public int obtenerEdad()
{return 20+8;}
public String obtenerNombre()
{return Estudiante;}
}
//clase Ingeniero hereda atributos y metodos de la clase padre
class Ingeniero extends Persona
{
public int obtenerEdad()
{return 40;}
public String obtenerNombre()
{return Ingeniero;}
}
//clase IngenieroJava hereda atributos y metodos de la subclase Ingeniero
class IngenieroJava extends Ingeniero
{
public int obtenerEdad()
{return 50;}
public String obtenerNombre()
{return Ingeniero Java;}
}
Como resultado de la ejecucin del programa en java se debe tener algo similar a lo siguiente:
44
PRIMER BIMESTRE
Como se ve en el ejemplo propuesto de java, se tiene una jerarqua de clases y en cada una de ella el
mtodo obtenerEdad devolver la edad de la persona con un texto adicional.
Si hay algn error en el ejemplo escrito en java por favor trate de corregirlo, sin embargo si
necesita apoyo solictelo a travs de cualquier medio de comunicacin con sus profesores
tutores.
En base a la revisin hecha con el texto bsico encontrar temas que son importantes, entre ellas el uso
de palabras reservadas las mismas que son necesarias para ir aplicando el tema de la POO. As como
cuando hablamos de herencia se utiliz extends () y super (), cuando se quiere declarar una clase o
mtodos como abstracta se utiliza la palabra reservada abstract (), esto recuerde siempre en el mbito
de programacin en java que es el objeto de nuestro estudio.
Revisemos la siguiente representacin de clases en la que explicaremos las clases abstractas.
45
PRIMER BIMESTRE
En base a la representacin UML de la figura 2.3 qu logra Ud. observar?, bueno, primero que tenemos
una representacin de herencia, estn bien identificados los atributos y los mtodos de cada una de las
clases, Figura se considera como clase abstracta, tal como lo habamos indicado, por qu se considera
como abstracta?, porque de una figura no se puede utilizar el mtodo GetArea pero si podemos utilizar
el mtodo GetArea de un Cuadrado o Triangulo, esto implica adems que si cuadrado o tringulo no
redefinen o escriben los mtodos GetArea se deben escribir los mtodos como abstractos.
Realizando la representacin de clases en java tendramos lo siguiente.
Cdigo en java:
1
8
9
10
11
12
//Atributos
13
14
15
//Constructor
16
17
this.X1 = X;
18
this.Y1 = Y;
19
20
//Metodo Abstracto
21
22
23
24
25
26
27
28
46
PRIMER BIMESTRE
29
super(X,Y);
30
this.base= b;
31
this.altura= a;
32
33
34
35
36
37
38
39
40
41
42
super(X,Y);
43
this.lado = l;
44
45
46
47
48
49
}
}
El resultado de la ejecucin del programa anterior debera quedar como se indica a continuacin.
Ahora Ud. se ha de preguntar cul es la diferencia entre utilizar clases abstractas, clases e interfaces?, la
respuesta es que una interface primeramente se define con la palabra reservada interface y la diferencia
radica en que en una interface solo se declaran los mtodos que se van a implementar, una diferencia
en relacin a la representacin UML que tuvimos con la clase abstracta Figura diseada anteriormente
sera:
47
PRIMER BIMESTRE
Tal como se visualiza en la representacin UML de la clase Figura lo que no se implementa son sus
atributos y solo se escribe los mtodos a utilizar, esto tambin hace que en la programacin en Java
sufra variaciones, lo cual hara que tenga lo siguiente:
public interface Figura
{
public abstract double GetArea();
//si tuvisemos otro mtodo deberamos implementarlo en esta seccin
}
Ahora bien, si desde una subclase en este caso Tringulo deseamos llamar a un mtodo que se encuentra
en la interface Figura se debera proceder de la siguiente manera:
public class Cuadrado implements Figura
{
private double lado;
public Cuadrado(int X, int Y, double l)
{
//llamada al contructor de la clase padre
super(X,Y)
this.base= b;
this.altura= a;
}
public double GetArea()
{
return (this.base * this.altura)/2;
}
}
48
PRIMER BIMESTRE
Lo que vara es el no uso de la palabra reservada extends que hace referencia a una herencia de la clase
padre y aparece un trmino que permite implementar los mtodos de la clase padre que contiene el
mtodo, en este caso se usa implements.
Muy bien una vez que hemos revisado el texto bsico y los ejercicios de clases programados en java que
se han propuesto, dispngase a resolver lo siguiente.
Ejercicio 2.8
Ejercicio 2.9
Realice un ejercicio en java que permita representar los temas de clases, clases abstractas, herencia,
interfaces.
Esperamos que los ejercicios propuestos colaboren e el aprendizaje de los temas
correspondientes al presente captulo, sin embargo algunos ejemplos adicionales
relacionados a clases abstractas, polimorfismos, interfaces Ud. los encontrar en la parte de
Anexos.
Muy bien, Cmo le fue en los ejercicios propuestos?, esperamos que hayan sido fciles de comprender
y analizar trminos que posteriormente sern de gran utilidad para ir aplicando en temas de POO.
Recuerde si no tiene claro aun el tema de interfaces pensemos en lo siguiente, por ejemplo si tenemos
las clases Estudiante y Empleado, Qu mtodos comunes tendramos en estas 2 clases?, por mencionar
algunos tendramos, Ingresar Nombres, Ingresar Fecha de Nacimiento, Ingresar Identificacin, Obtener
Ficha Personal, de alguna forma deberamos pensar en cmo agrupar dichos mtodos para que se
puedan programar en una interface la misma que pueda ser implementados.
Una vez que hemos empezado a identificar y utilizar las clases vamos a estudiar temas de anlisis y
diseo de sistemas orientados a objetos, empezaremos revisando temas como diagramas UML.
49
PRIMER BIMESTRE
En el texto bsico existen algunos temas que pueden ayudar a comprender el tema de los diagramas de
clase, sin embargo si no est claro se ubicar la documentacin correspondiente para poder acompaar
en el estudio de los temas.
Revise el texto bsico el captulo relacionado a UML
Subtemas a estudiar:
-
Historia de UML
-
Qu es UML
Esperamos haya revisado en el texto bsico el tema de UML, sin embargo trataremos los temas ms
puntuales relacionados al diagrama de clases.
Los diagramas de clase estn categorizados dentro de UML como diagramas de estructura, por ende
son los encargados de mostrar las clases, atributos y relaciones dentro de un sistema, cabe indicar que
estos diagramas son utilizados dentro del proceso de anlisis y diseo del sistema, en este caso son
fundamentales para nuestro estudio ya que Ud. se est iniciando en la rama del desarrollo de software.
Empezaremos describiendo algunos elementos que son bsicos cuando se trabaja con diagramas de
clases, cabe indicar que existe mucha bibliografa impresa y digital que nos pueden ayudar a comprender
estos temas, sin embargo resumiremos algunos elementos como los que se indica: clases, atributos,
relaciones.
Clase: Unidad bsica que encapsula la informacin de un objeto. A continuacin su representacin
grfica.
Como puede observar tanto los atributos como los mtodos de la clase pueden ser de tres tipos: pblicos,
privados, protegidos:
- public(+): Indica que el atributo o mtodo ser visible dentro como fuera de la clase.
- private(-): Indica que el atributo o mtodo ser visible solo dentro de la clase que contiene al
mismo
- protected(#): Indica que el atributo o mtodo no ser accesible desde fuera de la clase pero si
puede ser observado desde la clase padre y la subclase.
Ejercicio 2.10
En la representacin UML de la clase Crculo identifique los atributos o mtodos y escriba cuales son
pblicos, privados o protegidos.
50
PRIMER BIMESTRE
Esperamos le haya ido super bien en el ejercicio, de alguna forma ud. ya se haba estado familiarizando
con los diagramas y las clases que intervinieron en apartados anteriores, as tambin Ud. debe estar
familiarizado con el otro punto dentro de los diagramas de clase que corresponde a las relaciones dentro
de las cuales estn: herencia, composicin, agregacin, dependencia o instanciacin y asociacin.
Revisaremos algunas de las relaciones siendo parte de su investigacin y profundizacin de los temas
las restantes.
Herencia: Tal como se haba explicado anteriormente para que exista herencia entre clases se necesita
tener una clase base y una o varias subclases, al tener esta estructura se puede heredar atributos
y/o mtodos de la clase base. Su representacin en UML esta dada por como se indica en la
siguiente figura. El
smbolo con una flecha (
) indica desde donde se va a
heredar
los
atributos y/o mtodos.
<Nombre Clase>
- Atributos
+ Operaciones o Metodos ()
<Nombre SubClase1>
<Nombre SubClase2>
- Atributos
- Atributos
+ Operaciones o Metodos ()
+ Operaciones o Metodos ()
Seguidamente revisemos el trmino Asociacin, el mismo que hace relacin a una conexin en dos
direcciones de los objetos, un ejemplo de asociacin seria Institucin_Educativa Estudiante, en una
asociacin intervienen elementos adicionales como la multiplicidad que tambin los observar cuando
disee o trabaje con Bases de Datos, la multiplicidad puede ser:
MULTIPLICIDAD
SIGNIFICADO
0..1
Cero o uno
X..Y
Desde X hasta Y
Cero o varios
0..*
Cero o varios
1..*
Uno o varios
Con el siguiente tipo de representacin lo que se puede mencionar es que cero o varios estudiante se
matricula en una Institucion_Educativa, as mismo la institucin educativa tiene 0 o varios estudiantes.
Estudiante
- Nombres
tiene
0..*
0..*
se matricula
- Identificacion
Institucin
- Nombres
- Direccion
51
PRIMER BIMESTRE
Ejercicio 2.11
Es necesario para complementar los temas de diagramas de clase y secuencia revisar los temas
relacionados a los mismos en bibliografa bsica y complementaria.
Revise el texto bsico el captulo relacionado a diagramas de clase, diagramas UML, diagramas de
secuencia
Una vez que hemos revisado la explicacin que se ha tratado de llevar en la presente gua
didctica y juntamente con el texto bsico desarrollemos el siguiente ejercicio.
Ejercicios 2.12
Utilice los elementos objeto, mensaje y tiempo para representar en un diagrama de secuencia el ejemplo
cuando ud. como estudiante ingresa al EVA y consulta sus notas.
52
PRIMER BIMESTRE
Muy bien, hemos terminado el estudio de la presente unidad, es hora de revisar lo aprendido hasta este
momento. Desarrolle la autoevaluacin con toda libertad y responsabilidad, recuerde que el solucionario
para la parte objetiva se encuentra al final de esta gua. xitos!
Autoevaluacin 2
Conteste a las siguientes interrogantes utilizando una V si es Verdadero o una F si es Falso.
1.
( )
2.
Los miembros pblicos son accesibles solo desde la clase que los crea
( )
3.
( )
4.
( )
5.
( )
6.
( )
7.
Los miembros private de una superclase son accesibles dentro de la declaracin de la superclase.
( )
8.
( )
9.
( )
10.
( )
b.
c.
Si sus aciertos son menores al 70% es necesario revisar los contenidos en los que ha fallado
en la autoevaluacin, debido a que estos temas son muy importantes en las siguientes
unidades.
Ir a solucionario
53
PRIMER BIMESTRE
3.2. Layouts
Cuando hablamos de Layouts dentro de GUI nos referimos al concepto de administrador de esquemas,
los mismos que van a permitir organizar los componentes de acuerdo a la distribucin visual que se le
quiera dar a la aplicacin.
Para poder conocer ms acerca de los GUI y comprender las diferentes formas de utilizar los Layouts
dentro de una aplicacin vamos a hacer uso del texto bsico y complementario para ir trabajando de
manera conjunta.
Revise el texto bsico el captulo relacionado a componentes de la interfz grfica de usuario
Bien, ahora que ya conoce como identificar los paneles, layouts, botones, etiquetas en java, dispngase
a realizar el siguiente ejercicio.
Ejercicio 3.1
Realice una GUI que permita realizar el registro de datos personales de una persona, los campos que
deber registrar son: Nombres, Apellidos, Cedula, Genero, Fecha de Nacimiento, Edad, debe tener un
botn Registrar y un Boton Calcular.
Esperamos haya resultado interesante el ejercicio; algunos tips necesarios cuando se disea una GUI
con cualquier lenguaje de programacin es trabajar con estndares de programacin, esto va a servir
mucho; por ejemplo, cuando deseamos aadir un botn (JButton en java) a un panel, el proceso normal
siempre es arrastrar o disear el botn pero no le ubicamos una nomenclatura, sin embargo, como le
mencionamos anteriormente vamos a ubicar un estndar, es decir, para los botones siempre utilizar
btnNombre del Botn (prefijo + nombre del botn), por ejemplo si el botn es para hacer un clculo
en modo diseo el nombre del botn ser btnCalcular, para un botn limpiar seria btnLimpiar, para
una etiqueta seria lblNombre, lblEdad, para una caja de texto txtNombre, txtApellido, con esto se logra
54
PRIMER BIMESTRE
3.3. Eventos
Una vez que hemos revisado junto con la bibliografa bsica y complementaria temas relacionados a la
GUI, esta no estara completa sino se implementa o utiliza eventos, los mismos permitirn realizar muchas
acciones como por ejemplo cuando hagamos click en un botn, checkBox, comboBox o seleccione un
elemento de un objeto lista; sin embargo como son varios eventos que se disparan o accionan vamos a
revisar los mismos junto con el texto bsico.
En el captulo de Revise el texto bsico el captulo relacionado a componentes de la interfz grfica
de usuario. nominado arreglos o arrays del texto bsico revise los temas:
-
55
PRIMER BIMESTRE
Autoevaluacin 3
1.
1.
( )
2.
Un objeto JLabel permite deplegar una lista de informacin que el usuario ingresa.
( )
3.
Las GUI generan eventos cuando el usuario interacta con ellas o cuando se hace click sobre
las mismas.
Los objetos JTextField y JPasswordField pueden introducir texto desde el teclado.
( )
( )
6.
Un objeto JButton genera un evento ActionEvent cuando el usuario hace clic en el botn con
el ratn.
Un objeto JComboBox se lo conoce como lista desplegable.
7.
( )
8.
El lugar donde se ubican los controles en una GUI se denomina JPanel o Panel.
( )
El texto que no puede ser modificado por el usuario se llama texto editable.
( )
( )
4.
5.
2.
( )
( )
Elabore un programa utilizando GUI que permita ingresar datos personales de una persona
y que los mismos se puedan almacenar en archivos tipo texto o a su vez en arreglos.
Los campos que contendr la clase persona son:
-
-
-
-
-
-
-
-
-
Ir a solucionario
Si sus aciertos son menores al 70% revise los contenidos en los que ha fallado en la
autoevaluacin.
Hemos concluido el estudio de la asignatura correspondiente al primer bimestre, recuerde que si
tiene alguna duda comunquese con sus tutores y estarn dispuestos a apoyarle en los temas que
necesite reforzar. Le animamos para que pueda continuar en el estudio de los captulos siguientes que
corresponden al segundo bimestre.
56
SEGUNDO BIMESTRE
SEGUNDO BIMESTRE
6.5. Competencias genricas
INDICADORES DE
APRENDIZAJE
-
Utiliza la
coleccin Set.
Map y List para
almacenar
informacin.
-
Identifica el uso
de cada uno de
las coleccions
para resolver
determinados
problemas.
- Realiza
programas
usando
trminos como
autoboxing,
generics
dentro de las
colecciones.
CONTENIDOS
Unidades / Temas
UNIDAD 4: Estructuras
de datos avanzados
4.1 Estudio de api
collections
4.2 Genricos
4.3 Apis de consulta
4.4 Ejercicios.
ACTIVIDADES DE
APRENDIZAJE
Estudio autnomo de
los captulos del texto
bsico y bibilografa
complementaria.
Desarrollo de ejercicios
prcticos planteados en
el texto bsico y gua
didctica.
Desarrollo de actividades
recomendadas en el
texto bsico y en la gua
didctica, en los cuales
se incluye resmenes,
resaltar puntos clave, etc.
Interaccin en el EVA.
Inicio del Desarrollo de la
Evaluacin a Distancia.
Revisin de temas en
recursos OCW.
CRONOGRAMA
ORIENTATIVO
Tiempo
Estimado
Semana 1,2
8 horas de
autoestudio
8 horas de
interaccin
Mantenimiento
a programas
o sistemas ya
desarrollados de
nivel intermedio.
Utilizacin de
IDEs o entornos
de desarrollo
integrados para
la elaboracin de
programas.
57
COMPETENCIAS
ESPECFICAS
Manejo bsico de
repositorios de
informacin como
bases de datos
Capacidad para
utilizar Apis,
paquetes y libreras
desarrolladas en
lenguajes de alto
nivel que se ajusten
a las necesidades
del programador.
CONTENIDOS
INDICADORES DE
APRENDIZAJE
ACTIVIDADES DE
APRENDIZAJE
Unidades / Temas
Identifica y define
adecuadamente
las expresiones
regulares.
- Combina
adecuadamente
caracteres,
metaracteres
para la
construccin
de expreionsres
regulares.
- Aplica
correctamente
los conceptos
de expresiones
regulares.
-
Crea utilitarios
bsicos para
la validacin
de cadena
de caracteres
a travs de
patrones
UNIDAD 5:
Expresiones Regulares
En Java
UNIDAD 6:
CONECTIVIDAD JDBC
Conoce los
conceptos
bsicos de una
base de datos.
- Construye
setencias SQL
para la utilizacin
dentro de los
JDBC.
-
Analiza y
crea clases
que permite
interactuar con
base de datos
relacionales.
- Utiliza estndares
para nombrar
los controles
y escribir su
programacin
58
SEGUNDO BIMESTRE
5.1 Expresiones
regulares en Java
5.2 Validaciones
con expresiones
regulares
5.3 Ejercicios
CRONOGRAMA
ORIENTATIVO
Tiempo
Estimado
Estudio autnomo de
los captulos del texto
bsico y bibilografa
complementaria.
Desarrollo de ejercicios
prcticos planteados en
el texto bsico y gua
didctica.
Desarrollo de actividades
recomendadas en el
texto bsico y en la gua
didctica, en los cuales
se incluye resmenes,
resaltar puntos clave,
mentefactos, cuadros
sinpticos.
Interaccin en el EVA
Revisin de anuncio en
el EVA.
Resolucin a Foros de
Discusin.
Revisin de Lecturas
Sugeridas en la WEB y
Videos Interactivos con
desarrollo de programas.
Continuacin del
Desarrollo de la
Evaluacin a Distancia
Desarrollo de la segunda
Autoevaluacin
Semana 3
4 horas de
autoestudio
Estudio autnomo de
los captulos del texto
bsico y bibilografa
complementaria.
Desarrollo de ejercicios
prcticos planteados en
el texto bsico y gua
didctica.
Desarrollo de actividades
recomendadas en el
texto bsico y en la gua
didctica, en los cuales
se incluye resmenes,
resaltar puntos clave, etc.
Interaccin en el EVA
Revisin de anuncio en
el EVA.
Revisin de Lecturas
Sugeridas en la WEB y
Videos Interactivos con
desarrollo de programas.
Continuacin del
Desarrollo de la
Evaluacin a Distancia
Desarrollo de la Tercera
Autoevaluacin.
Revisin de los recursos
OCW.
Semana 4,5
8 horas de
autoestudio
4 horas de
interaccin
8 horas de
interaccin
SEGUNDO BIMESTRE
COMPETENCIAS
ESPECFICAS
INDICADORES DE
APRENDIZAJE
-
Conoce los
elementos que
permiten trabajar
con subprocesos.
Maneja los
subprocesos o
hilos de acuerdo
a las necesidades
del desarrollador.
Identifica los
diferentes
estados por los
cuales un sub
proceso pasa.
Utiliza estndares
para nombrar
los controles
y escribir su
programacin.
CONTENIDOS
Unidades / Temas
UNIDAD 7:
PROGRAMACIN
MULTI-TAREA
7.1 Subprocesamiento
mltiple
7.2 Estados de los
subprocesos
7.3 Creacin y
Ejecucin de
subprocesos
7.4 La Interfaz
Runnable
7.5 Ejercicios
Unidades de la 4 a la 7
ACTIVIDADES DE
APRENDIZAJE
CRONOGRAMA
ORIENTATIVO
Tiempo
Estimado
Estudio autnomo de
los captulos del texto
bsico y bibilografa
complementaria.
Desarrollo de ejercicios
prcticos planteados en
el texto bsico y gua
didctica.
Desarrollo de actividades
recomendadas en el
texto bsico y en la gua
didctica, en los cuales
se incluye resmenes,
resaltar puntos clave, etc.
Interaccin en el EVA
Revisin de anuncio en
el EVA.
Revisin de Lecturas
Sugeridas en la WEB y
Videos Interactivos con
desarrollo de programas.
Continuacin del
Desarrollo de la
Evaluacin a Distancia
Desarrollo de la Tercera
Autoevaluacin.
Revisin de los recursos
OCW
Semana 5,6
8 horas de
autoestudio
Preparacin para
evaluaciones
presenciales.
Completar
autoevaluaciones,
revisin de videos
interactivos, recursos
OCW, utilizar java para
desarrollar ejercicios
prcticos.
Semana 7 y 8
8 horas de
interaccin
59
SEGUNDO BIMESTRE
Felicitaciones!, hasta ahora hemos estudiado y sintetizado lo fundamental de cada una de las unidades
del primer bimestre. Es necesario a partir de ahora iniciar con el segundo bimestre lo cual incluye: uso
de estructuras de datos avanzados, expresiones regulares, conectividad a base de datos y programacin
multitarea, las mismas que son muy importantes dentro del desarrollo de una aplicacin.
60
SEGUNDO BIMESTRE
Luego de haber ledo el texto bsico ya tenemos una idea mucho ms clara de las colecciones que se
utilizan en Java, es por ello que le invitamos a resolver el siguiente ejercicio, el mismo que le ayudar a
reforzar sus conocimientos.
Ejercicio 4.1
Esperamos que el ejercicio 4.1 le haya ayudado para poder diferenciar entre un objeto Set y un Objeto
Map y ud. adquiera las capacidades para emitir un verdadero juicio de valor diferenciado entre estos
tipos de objeto.
Recuerde revisar junto con la gua didctica el texto bsico en el que seguro encontrar ms informacin
de la que estamos estudiando y pueda comprender de mejor manera los temas de la presente unidad.
Conjunto
La declaracin del tipo de coleccin set es sencilla. Para el ejemplo en Java usaremos la clase HashSet,
como se puede observar en el siguiente cdigo fuente:
Cdigo en java 4A:
1
package ec.edu.utpl.unidad4.collections;
2
3
import java.util.HashSet;
4
5
6
7
personSet.add(Pedro);
61
SEGUNDO BIMESTRE
10
personSet.add(Sergio);
11
personSet.add(Juan);
12
personSet.add(Sergio);
13
14
System.out.println(personName);
15
16
17
}
}
Explicacin 4A:
En el ejemplo escrito en java, se puede observar que en la lnea 1 se hace la declaracin del nombre del
paquete. Este nombre de paquete se basa en las convenciones Java Beans.
En la lnea 3 se hace la importacin de la clase, recordemos que la coleccin de datos en Java comnmente
se suele ubicar en el paquete java.util. Aqu existe una pequea aclaracin, si nosotros colocamos java.
util.* estamos invocando a toda la librera, es decir, a la clase vector, arraylist entre otras, mientras que
solo al usar java.util.HashSet estaremos invocando a una sola clase. Por experiencia, es consejable hacerlo
utilizando la segunda forma.
En la lnea 8 del cdigo fuente observamos algo muy interesante como es la creacin de un objeto del
tipo HashSet. Al hacerlo de esa forma, estamos indicndole al compilador que los tipos de datos que la
coleccin almacenar son del tipo Object; cabe indicar que esto por defecto.
Intencionalmente, en el ejercicio que estamos explicando se puede observar que tanto la lnea 10 y la
lnea 12 estan duplicadas. La idea es demostrar que al usar cualquier elemento del tipo conjunto no
acepta elementos duplicados.
Para recorrer la coleccin en la lnea 13 estamos usando un for (foreach), a diferencia del for normal; esta
no usa ndices de recorrido. Adems para realizar el recorrido de objetos, se puede observar que todo lo
obtenido debe ser del tipo Object.
Como resultado de la ejecucin del programa que se presenta a continuacin se puede observar que la
principal caracterstica de los conjuntos es no permitir la duplicidad de valores.
62
SEGUNDO BIMESTRE
Ahora bien, realizaremos el mismo ejercicio planteado anteriormente con algunas variantes, en las lneas
8 y 13.
Cdigo en java: 4B
1
package ec.edu.utpl.unidad4.collections;
2
3
import java.util.HashSet;
4
5
6
7
personSet.add(Pedro);
10
personSet.add(Sergio);
11
personSet.add(Juan);
12
personSet.add(Sergio);
13
14
System.out.println(personName);
15
16
17
}
}
Explicacin 4B:
Como se puede observar, no existe mucha diferencia con el cdigo fuente anterior en cuanto a su lgica,
pero si existen pequeas variantes como en la lnea 8 del cdigo fuente en la cual la forma de declarar la
coleccin indica que los datos que almacenar sern del tipo String.
De igual forma el recorrido en la lnea 13, en el for (forearch) le decimos que los datos a presentar son
del tipo String.
63
64
System.out.println(personName);
14
La declaracin del contenido de la lnea 8 del cdigo A, se lo hace por defecto con la clase Object, esto comnmente se suele usar en versin de Java
1.4. Mientras que en el cdigo B se lo hace la declaracin de la coleccin especificando el contenido en el constructor, esto se suele hacer a partir de
la versin 1.5 de Java.
De igual forma, como se puede observar en la lnea 13 en el cdigo A se dice que los datos son del tipo Object, mientras que en el cdigo B se dice
que los datos son del tipo String.
System.out.println(personName);
personSet.add(Sergio);
personSet.add(Juan);
personSet.add(Sergio);
personSet.add(Pedro);
import java.util.HashSet;
package ec.edu.utpl.unidad4.collections;
Cdigo B
17
16
13
15
personSet.add(Sergio);
12
personSet.add(Sergio);
10
personSet.add(Juan);
personSet.add(Pedro);
11
import java.util.HashSet;
package ec.edu.utpl.unidad4.collections;
Cdigo A
Resumen:
Gua didctica: Programacin Avanzada
SEGUNDO BIMESTRE
SEGUNDO BIMESTRE
Listas
La estructura de datos lista es sencilla de manejar y sobre todo de usar. La declaracin sobre todo si
tomamos de referencial el API es de gran ayuda, especialmente tomando en cuenta el tipo de dato que
almacenar dicha coleccin.
Cdigo en java: 4C
1
package ec.edu.utpl.unidad4.collections;
2
3
import java.util.ArrayList;
import java.util.List;
5
6
7
8
10
personList.add(Sergio);
11
personList.add(Pedro);
12
personList.add(Sergio);
13
personList.add(Angelica);
14
15
16
System.out.println(string);
17
18
19
}
}
Explicacin 4C:
En la lnea 1 del ejercicio anterior escrito en java, se hace referencia al paquete creado, se usa la convencin
de Java Beans.
En la lnea 9 se realiza la creacin del objeto del tipo List, especificando en su constructor que los datos
almacenados sern del tipo string.
Como se puede observar en la lnea 17 y 19 existen 2 elementos duplicados. A diferencia de los conjunto,
las listas no llevan el control de elementos duplicados, ya que la misma se maneja por ndices.
La ejecucin de fragmento de cdigo es el que se indica a continuacin:
65
SEGUNDO BIMESTRE
Mapas
Al igual que las colecciones anteriores, el uso e implementacin de mapas es sencilla. A continuacin se
escribe un programa en java que permita comprender de mejor manera su uso.
Cdigo en Java: 4D
1
package ec.edu.utpl.unidad4.collections;
2
3
import java.util.HashMap;
4
5
6
7
8
9
10
personMap.put(1, Sergio);
11
personMap.put(2, Pedro);
12
personMap.put(3, Sergio);
13
personMap.put(4, Angelica);
14
15
System.out.println(personMap.get(index+1));
16
17
18
}
}
Explicacin 4D:
En la lnea 1, se hace la declaracin del paquete, mientras que en la lnea 3, se hace la importacin de la
clase HashMap.
66
SEGUNDO BIMESTRE
Observemos cuidadosamente que en la lnea 9 se realiza la creacin de un objeto del tipo HashMap. La
principal diferencia entre un objeto del tipo Set y List es que los objetos del tipo Map debe tener un key
y un value, dicho de otra manera esta constituido por una llave/identificador y por un valor, este ltimo
puede ser una clase.
Observe en la lnea 14, que la forma de recorrer el mapa es muy distinta a la de la lista y conjunto, esto
se debe a que en listas y conjuntos para su recorrido se puede usar el foreach, mientras que en un mapa
el recorrido se hace por clave.
Por ejemplo, si cambiamos la llave 4 por 5 como resultado en su ejecucin tendramos un valor NULL.
Muy Bien!, esperamos que los temas y ejemplos escritos en java estn siendo de gran ayuda en su
aprendizaje. Ahora le invitamos a desarrollar el siguiente ejercicio, el mismo que tiene la finalidad de
mejorar su conocimiento en cuanto a mapas, listas y conjuntos.
Ejercicio 4.2
En base a los programas escritos en java anteriormente desarrolle ejercicios con cada uno de los tipos
de colecciones: mapas, listas y conjuntos. Use tipo de datos primitivos para los ejercicios. Reflexione y
observe que tipo de problemas encontr.
Esperamos que haya podido desarrollar el ejercicio anterior, sin embargo le recordamos que si tiene
alguna o pregunta puede contactar a sus profesores/tutores y as poder resolver las inquietudes que se
puedan presentar.
4.2. Genricos
Cuando se trabajaba con genricos en las versiones anteriores de Java encontrbamos problemas al
momento de crear una coleccin cuando ste almacenaba clases que precisamente no era la clase
Object, esto involucraba hacer casting de datos y por ende escribir ms lneas de cdigo fuente. Con el
siguiente ejemplo se trata de explicar el uso de genricos, revisemos.
67
SEGUNDO BIMESTRE
Cdigo en Java: 4E
1
package ec.edu.utpl.unidad4.collections;
2
3
import java.util.ArrayList;
import java.util.List;
5
6
7
8
9
10
11
12
13
14
15
16
17
18
System.out.println(person.getName());
19
20
21
68
}
}
SEGUNDO BIMESTRE
Explicacin 4E:
Como se puede observar en la lnea 10 se realiza la declaracin de una coleccin del tipo Object; al
momento de recorrer la coleccin tal como se muestra en la lnea 16 dentro de la estructura for podemos
observar que se tiene que hacer un paso adicional (casting) tal como se muestra en la lnea 17 para
recuperar la informacin encapsulada por la clase Person.
Gracias a los genricos podemos especificar el tipo de objeto que introduciremos en la coleccin de forma
que el compilador conozca el tipo de objeto que vamos a utilizar evitndonos as el casting. Adems,
gracias a esta informacin, el compilador podr comprobar el tipo de los objetos que introducimos, y
lanzar un error en tiempo de compilacin si se intenta introducir un objeto de un tipo incompatible, en
lugar de que se produzca una excepcin en tiempo de ejecucin.
Para utilizar genericos con nuestras colecciones tan solo tenemos que indicar el tipo entre < y >
a la hora de crearla. A estas clases a las que podemos pasar un tipo como parmetro se les llama
clases parametrizadas, clases genricas, definiciones genricas o simplemente genricas (generics). A
continuacin un ejemplo:
Cdigo en Java: 4F
1
package ec.edu.utpl.unidad4.collections;
2
3
import java.util.ArrayList;
import java.util.List;
5
6
7
8
9
10
11
12
13
14
15
16
17
System.out.println(person.getName());
18
19
20
}
}
69
SEGUNDO BIMESTRE
Explicacin 4F:
Como se puede observar, en la lnea 10 se ha cambiado la declaracin de la lista, indicndole al compilador
que los tipos de datos almacenados dentro de la coleccin sern del tipo Person.
En la lnea 16 se puede observar que ya no hay necesidad de hacer un casting para que compile el
programa.
Es tiempo de medir nuestros conocimientos, le invitamos a desarrollar el siguiente ejercicio.
Ejercicio 4.3
70
SEGUNDO BIMESTRE
Cmo result el ejercicio?, esperamos que muy bien, es hora de continuar con nuestro estudio, para ello
recuerde que la lectura de cada uno de las unidades de la gua y el texto bsico es importante.
int size();
boolean isEmpty();
boolean contains(Object element)
entre otros.
Los mtodos antes mencionados, se encuentran en la mayora de las colecciones, esto permite al
programador usar lo que ya esta disponible y a su alcance y por ende agilizar el desarrollo de aplicaciones.
Un ejemplo se muestra a continuacin:
Cdigo en java: 4G
1
package ec.edu.utpl.unidad4.collections;
2
3
import java.util.ArrayList;
import java.util.List;
5
6
7
8
10
personList.add(Sergio);
11
personList.add(Pedro);
12
personList.add(Sergio);
13
personList.add(Angelica);
14
15
71
SEGUNDO BIMESTRE
16
17
18
19
20
if (flag == true) {
21
System.out.println(Element found);
22
} else {
23
24
25
26
}
}
Es necesario para complementar los temas de API de consulta de colecciones revisar los temas
relacionados a los mismos en bibliografia bsica y complementaria.
Le invitamos a desarrollar el siguiente ejercicio, recuerde que se puede ayudar del texto bsico
y/o de la bibliografa complementaria.
Ejercicios 4.4
En base a la clase Person, usada anteriormente, desarrolle una aplicacin que permita:
-
-
-
Desarrolle una aplicacin en java que permita leer el archivo turnos.txt, el mismo que debe
almacenar la informacin leda sobre una coleccin y permita realizar la siguiente operacin:
-
72
Realizar una bsqueda de una persona en base a nmero id y presentar sus datos personales.
Agregar una nueva persona
Eliminar una nueva persona en base a previa bsqueda de su nmero id.
SEGUNDO BIMESTRE
Cooperativa Loja
Tiene 15 salidas
Loja-Quito-22H00
Loja-Guayaquil-21H00
Loja-Macara-15H00
Santa; Quito;15H00
Loja;Guayaquil;02H00
Cital;Piura;22H00
San Luis;Cuenca;02H00
73
SEGUNDO BIMESTRE
Autoevaluacin 4
Recuerde que el desarrollo de las autoevaluaciones permitir medir el nivel de aprendizaje alcanzado
hasta este instante, por ello es importante la resolucin y posterior verificacin de sus respuestas con el
solucionario ubicado al final de esta gua. Mucha Suerte!
Conteste a las siguientes interrogantes utilizando una V si es Verdadero o una F si es Falso.
1.
Para hacer uso de las listas, mapas y conjuntos es necesario usar o importar el paquete java.util.
2.
3.
4.
5.
6.
7.
A partir de la versin 1.2 de Java, se maneja clases que ayudan a la coleccin de objetos.
8.
Cuando se quiere acceder a un objeto en un determinado ndice dentro de una coleccin, lanza
un error java.null.PointerException.
En el siguiente cdigo fuente se encuentra algn error de declaracin?
List <Person> personList = new List<Person> ();
Por lo general, cuando se quiere mantener una sincronizacin de elementos dentro de una
coleccin lo ms recomendable es usar la clase vector del paquete java.util.
9.
10.
Realice un programa en java que permita ingresar por teclado una lista de usuarios; luego de
haber ingresado los mismos, presntelos o imprmalos en pantalla. Puede usar la clase Persona del
Anexo 8.6.
B.
Realice una tabla hash e ingrese la clase Persona. Luego busquelo por el nmero de cdula. Todas
las entradas deben ser desde el teclado.
Ir a solucionario
Le recordamos que si sus aciertos son menores al 70% es una alerta para que revise
nuevamente los contenidos que se explicaron en la presente unidad, especialmente en los
que tuvo mas errores.
74
SEGUNDO BIMESTRE
[0-9] es igual a decir [0123456789] acepta valores numricos de forma individual. Si se evalua un
nmero mayor a 10, no se encontrar ninguna coincidencia.
75
SEGUNDO BIMESTRE
[a-b] es igual a decir [abcdefg..z] acepta valores del alfabeto de forma individual. Si se evalua
una cadena, no se encontrar ninguna coincidencia.
[0-9]{2} es igual a decir [0123456789]{2} y acepta valores compuesto por 2 nmeros. Por ejemplo
10, 22. Si se evalua un nmero mayor a 100 no se encontrar ninguna coincidencia.
[a-z]{2} es igual a decir [abcdefg..z]{2} y acepta valores compuestos por 2 caracteres alfabeticos.
Por ejemplo: ab, si se evalua abc no se encontr ninguna coincidencia.
^1[0-9]{2} la expresin evaluar solo valores que inicien con el nmero 1 debido al signo ^,
acompaado de 2 nmeros de entre el rango del 0 al 9. Por ejemplo 100, 135. Si se enva a evaluar
234 no encontrar ninguna coincidencia.
^1[0-9]{2}0$ la expresin evaluar solo valores que inicien con el nmero 1 debido al signo ^,
acompaado de 2 nmeros de entre el rango del 0 al 9, y debe finalizar con el nmero 0 debido al
signo $. Por ejemplo 1920. Si se enva a evaluar 1922 no encontrar ninguna coincidencia.
^(1|2)[0-9]{2}0$ la expresin evaluar solo valores que inicien con el nmero 1 o 2 debido a la agrupacin
a travs de los parntesis y por el uso del signo | que significa OR, acompaado de 2 nmeros de entre
el rango del 0-9, y debe finalizar con el numero 0 debido al signo $. Por ejemplo 1920, 2930. Si se enva a
evaluar 3920 no encontrar ninguna coincidencia.
Existe otros cuantificadores de expresiones regulares, los mismos que los encontrarn en el texto bsico,
es por ello que le invitamos a leer el texto bsico donde encontrar ms informacin del tema tratado.
Revise en el texto bsico el captulo relacionado a cadenas y caracteres.
Subtemas a estudiar:
-
Fundamentos de los caracteres y las cadenas.
-
Expresiones regulares, la clase Pattern y la clase Matcher.
Una vez que revis el texto bsico en los captulos de patrones o patterns realice el siguiente ejercicio.
Ejercicio 5.1
76
SEGUNDO BIMESTRE
package ec.edu.utpl.unidad5.pattern;
2
3
import java.util.regex.Matcher;
import java.util.regex.Pattern;
5
6
7
8
10
11
12
13
while (matcher.find()) {
14
System.out.println(matcher.group());
15
16
17
}
}
77
SEGUNDO BIMESTRE
Explicacin 5A:
En la lnea 1 se hace la declaracin del paquete. Luego en las lneas 3 y 4, se hace la importacin de los
paquetes necesarios para hacer uso de las clases Matcher y Pattern.
En la lnea 9 se hace la creacin de le expresin regular la misma que es contenida en un mtodo esttico
de la clase Pattern. En la misma lnea se hace la asignacin a un objeto del tipo Pattern dentro de la
variable expression. La expresin regular 2010-(0[1-9]|[1-9]|1[012])-([0][1-9]|[1|2][0-9]|3[01]) validar
que el ao sea el 2010, mientras que los meses sern del 1 al 12 y los das sern del 01 al 31.
La lnea 11 contiene el valor que se va evaluar dentro de una variable del tipo String llamada test.
En la lnea 12, la variable expression que es del tipo Pattern accede a al mtodo matcher pasando como
parmetro la variable test de la lnea 11. El mtodo matcher es el encargado de buscar cual de los
valores enviados coincidieron o cumplieron con la expresin regular colocada en la lnea 9, para luego
almacenarla en una variable del tipo Matcher.
La lnea 13 recorre la variable matcher para luego presentar en la lnea 14 el valor que cumpli con la
expresin regular.
Como se puede observar, la evaluacin de la fecha es sencilla. De pronto puede existir un poco de
complejidad a la hora de construcir una expresin regular.
Es necesario para comprender el tema de expresiones regulares leer temas relacionados a los mismos en
la bibliografia bsica y complementaria
Otra de las utilidades que se suele dar a las expresiones regulares es la de bsqueda de patrones para
luego reemplazarlos.
Cdigo en java: 5B
1
package ec.edu.utpl.unidad5.pattern;
2
3
import java.util.regex.Matcher;
import java.util.regex.Pattern;
5
6
7
8
78
10
11
SEGUNDO BIMESTRE
12
test = matcher.replaceAll(ralopez);
13
System.out.println(test);
14
15
16
Explicacin 5B:
Como se puede observar en la lnea 9 se coloca la expresin regular dentro de la variable expresin.
Luego en la lnea 11 se ejecuta el mtodo matcher pasando como parmetro el string de prueba, donde
se va a cambiar el valor zepolar por el valor ralopez.
En la lnea 12 se ejecuta la accin de reemplazar todas las coincidencias de zepolar por ralopez.
En la lnea 13 presentamos el resultado, el mismo que debe quedar como se indica a continuacin.
La expresin regular juega un papel muy importante en la validacin de campos, la utilidad de las
expresiones se lo hace en formularios web, bsquedas dentro de string entre otras.
Le invitamos a desarrollar los siguientes ejercicios, los mismos que tienen la finalidad de mejorar sus
destrezas en cuanto al desarrollo de expresiones regulares.
Ejercicio 5.2
En base a los ejemplos presentados, desarrolle el patrn o expresin regular para validar el email de un
empleado o estudiante de la utpl.
79
SEGUNDO BIMESTRE
Ejercicio 5.3
Escriba una expresin regular para buscar todos los archivos que terminan con la extensin mp3.
Escriba una aplicacin en Java que permita validar las placas de la provincia del Pichincha.
Escribir una aplicacin en Java que permita leer un archivo llamado agenda.txt y valida la siguiente
informacin:
-
Nombre:apellido:cedula:email
Toda la informacin de agenda.txt debe ser cargada en una estructura de coleccin para
realizar bsquedas por cedula o por correo electrnico.
80
SEGUNDO BIMESTRE
Autoevaluacin 5
Es hora de demostrar las habilidades y destrezas adquiridas en cuanto al desarrollo de expresionres
regulares se refiere.
Conteste a las siguientes interrogantes utilizando una V si es Verdadero o una F si es Falso.
1.
El paquete que maneja las expresiones regulares en Java esta conformado por las clases
Matcher y Pattern.
( )
2.
Una expresin regular sencilla para listar archivos con extensin txt es: ^*.txt.
( )
3.
( )
4.
La expresin regular que contenga [0-9]{2}, se obtendr como resultado algo como 92
( )
5.
En el mtodo compile de la clase Pattern es donde se debe colocar la expresin regular a validar
( )
6.
( )
7.
( )
8.
( )
9.
( )
10.
( )
Para la ejecucin de las expresiones regulares, se puede ayudar del siguiente recurso web:
http://www.fileformat.info/tool/regex.htm
B)
Email Address
US Format Date
Formato hora en HH:mm:ss
Cree una clase que permite reemplazar todas las palabras .net por la palabra java del siguiente
texto:
.Net es un lenguaje de desarrollo, el mismo que es utilizado para desarrollar aplicaciones escritorio asi
como tambin aplicaciones web. .Net al igual que cualquier otro lenguaje de programacin es de gran
utilidad y tiene una gran acogida.
Ir a solucionario
81
SEGUNDO BIMESTRE
API1: que permite realizar operaciones bsicas del lenguaje SQL sobre una base de datos
desde el lenguaje Java. Este API es un conjunto de interfaces/clases que actan como
librera para la fcil comunicacin entre el lenguaje Java y la Base de Datos, logrando una
independencia del sistema operativo, pues recordemos Java es un lenguaje multiplataforma.
Le invitamos a leer el texto bsico en los tems recomendados para profundizar en el tema y asi consolidar
sus nuevos conocimientos.
Revise en el texto bsico el captulo relacionado a la conectividad de base de datos en java con JDBC.
Subtemas a estudiar:
-
Base de datos relacionales.
package ec.edu.utpl.unidad6.jdbc;
2
3
import com.mysql.jdbc.Connection;
82
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
SEGUNDO BIMESTRE
import java.sql.SQLException;
10
import java.util.logging.Level;
11
import java.util.logging.Logger;
Como se puede observar en el fragmento de cdigo, en las lnea 3 se importa el API JDBC de Mysql;
mientras que las lneas 5, 6, 7, 8, 9 se importa el API JAVA que viene por defecto con el JDK.
Luego de la invocacin se puede hacer uso de las clases y sobre todo el envi de parmetros necesarios
para realizar la conexin.
12
13
14
15
16
17
public Mysql() {
18
19
20
try {
21
con = null;
22
Class.forName(sDriver).newInstance();
23
24
} catch (Exception e) {
25
26
27
28
}
}
29
30
31
32
33
34
35
83
SEGUNDO BIMESTRE
}
}
En la lnea 14 se hace referencia a una variable que va a contener la conexin que se va a realizar a la base
de datos.
Mientras que en la lnea 18 se hace referencia al uso del JDBC de Mysql, el mismo que es usado como
parmetro en la lnea 23.
El uso de cualquier JDBC de cualquier base de datos tiene un URL, en el caso de Mysql se usa el que se
muestra en la lnea 19, haciendo referencia a la IP o hostname donde esta la base de datos, puerto donde
esta escuchando el servicio y el nombre de la base de datos.
Tal como se observa la conexin va estar ligada a un bloque de try/catch, puesto que se suele generar
excepciones y estos deben ser tratados para capturar los errores.
Se debe mencionar que en toda conexin a cualquier base de datos debe existir un mtodo que
cierre la conexin tal como esta en la lnea 32, esto como buena prctica de seguridad y sobre todo de
programacin.
Le invitamos a leer el texto bsico el mismo donde usted tendr la oportunidad de produndizar ms los
temas aqu tratados.
Revise en el texto bsico el captulo relacionado a la conectividad de base de datos en Java con JDBC.
Subtemas a estudiar:
-
Manipulacin de base de datos con JDBC.
Una vez realizada la lectura respectiva en el texto bsico, le invitamos a aplicar esos conocimientos
tericos en el desarrollo del siguiente ejercicio.
Ejercicio 6.1
En base al ejemplo desarrollado anteriormente, realice una conexin a una base de datos PostgreSQL.
Asegrese de descargar el JDBC desde la pgina de PostgreSQL as como tambin tener la base de datos
instalada. PostgreSQL puede ser instalada tanto en sistemas operativos windows como en sistemas
GNU/Linux. Como investigacin averige cual es el JDBC URL que PostgreSQL usa en Java.
84
SEGUNDO BIMESTRE
Lenguaje SQL
Create / Crear
Insert
Read / Leer
Select
Update / Actualizar
Update
Delete / Borrar
Drop
Las operaciones CRUD son sentencias del lenguaje SQL de base de datos relacional.
Revise en el texto bsico el captulo relacionado a conectividad de base de datos en Java con JDBC.
Subtemas a estudiar:
- SQL.
Despus de haber revisado el tema de SQL, tenemos bien claro el uso del lenguaje SQL que se utilizar
para las operaciones de base de datos. A continuacin se escriben algunos ejemplos que sern de gran
ayuda para la comprensin de los mismos.
Ejemplo Select:
A continuacin un fragmento de cdigo donde se realiza la operacin select o tambin conocida como
lectura:
48
49
50
51
ResultSet rs = stmt.getResultSet();
52
int count = 0;
53
while (rs.next()) {
54
55
56
85
SEGUNDO BIMESTRE
System.out.println(
58
title = + titleVal
59
+ , resume = + resumeVal
60
+ , creationDate = + creationVal);
61
++count;
62
63
rs.close();
64
65
} else {
66
67
78
69
Como se puede observar en la lnea 50 previa a la utilizacin de la clase Statement se enva como
parmetro una consulta SELECT title, resume, body, creationDate, modificationDate from CONTINGUT.
Esta consulta a su vez en la lnea 51 es almacenada en una variable del tipo ResulSet, que almacenar los
objetos encontrados.
En la lnea 53 existe una estructura cclica que recorrer la variable del tipo Result Set, para presentar los
valores encontrados en la consulta.
Ejemplo: Insert
71
72
73
74
86
public boolean saveOperation(String title, String resume, String body, Date creationDate, Date
modificationDate) {
try {
stmt = con.prepareStatement(INSERT CONTINGUT (title, resume, body, creationDate,
modificationDate)
+ VALUES (?,?,?,?,?));
75
stmt.setString(1, title);
76
stmt.setString(2, resume);
77
stmt.setString(3, body);
78
stmt.setDate(4, creationDate);
79
stmt.setDate(5, modificationDate);
80
stmt.executeUpdate();
SEGUNDO BIMESTRE
81
return true;
82
83
84
85
return false;
86
Como se puede observar en el fragmento de cdigo anterior se en la lnea 73 se esta utiliza una variable
del tipo Connection llamando al mtodo prepareStatement, la misma que enva como parmetro la
sentencia INSERT SQL. El resultado es almacenado dentro de otra variable del tipo PrepareStatement.
En las lneas de 75 a la 79, se envan los parmetros correpondiente a los campos de la tabla CONTINGUT.
En la lnea 80 se ejecuta el mtodo executeUpdate, para realizar el commit dentro de la base datos.
Existen diferentes formas para realizar un INSERT con el API de JAVA, pues depender de cmo el
desarrollador utilice el API anteriormente mencionado.
Ejemplo Update
88
89
try {
90
91
stmt.setString(1, title);
92
stmt.setString(2, resume);
93
stmt.executeUpdate();
94
return true;
95
96
97
98
return false;
99
Como se puede observar en la lnea 90 se reutiliza la variable del tipo Connection, enviando como la
sentencia Sql Update a travs del mtodo prepareStatement; el resultado de sta es almacenada dentro
de una variable del tipo PrepareStatement. En las lneas 91, 92, 93 se envia como parmetro los campos
de la tabla. Para confirmar la operacin y realizar un commit invocamos al mtodo executeUpdate tal
como se muestra en la lnea 93.
87
SEGUNDO BIMESTRE
Ejemplo Delete:
101
102
try {
103
104
stmt.setString(1, title);
105
stmt.executeUpdate();
106
return true;
107
108
109
110
return false;
111
De igual forma que los mtodos anteriores para realizar el Insert, Update y Select. En la lnea 103 usamos
la variable del tipo Connection y llamamos a mtodo prepareStatement para enviarle el Sql Delete.
En la lnea 104 enviamos el campo correspondiente a la sentencia Sql y en la lnea 105 realizamos el
commit a travs del mtodo executeUpdate.
Hemos finalizado la unidad y es tiempo de medir sus conocimientos, para ello le invitamos a desarrollar
cada uno de los ejercicios que a continuacin en listamos.
Ejercicio 6.2
En base al ejercicio anterior, utilice una base de datos HSQLDB y revise cuales son los cambios
significativos que realiz a la clase e identifique las diferencias.
88
SEGUNDO BIMESTRE
Autoevaluacin 6
Le invitamos a realizar la presente autoevaluacin la cul servir para medir el grado de comprensin de
los contenidos que hemos llevado a cabo en la presente unidad. Desarrolle la misma como parte de su
autopreparacin. xitos!
Conteste a las siguientes interrogantes utilizando una V si es Verdadero o una F si es Falso.
1.
La sentencia SQL: Insert, Delete y Update son conocidas como Lenguaje de Manipulacin de
Datos.
2.
Cada fabricante de base de datos, por lo general provee un drive JDBC para usarlo con Java.
3.
A travs del drive JDBC se puede realizar operaciones como: CREATE, ALTER, DROP y TRUNCATE.
4.
Para realizar una conexin JDBC a una base de datos Oracle, se debera usar la siguiente String
url:
jdbc:oracle:thin:@host:puerto:sid
5.
Para la utilizacin de cualquier driver JDBC se debe registrar en el IDE de programacin para
poder usarlo.
6.
7.
El JDBC puede ser utilizado tanto en aplicaciones escritorio as como tambin en aplicaciones
web.
8.
9.
10.
Crear una conexin a una base de datos sqlite a travs de una clase.
Modificar la clase anterior para realizar operaciones CRUD. La base de datos a crear se llamara
library y tendr la tabla book con los campos: title, resumen, autor.
Ir a solucionario
89
SEGUNDO BIMESTRE
90
SEGUNDO BIMESTRE
Como se puede observar, en la figura 7.1 se tiene un flujo completo del ciclo de vida de un hilo.
Un hilo se encuentra en el estado de nuevo cuando se crea un objeto del tipo Thread.
Para ejecutar el hilo se debe invocar al mtodo start de la clase Thread.
El hilo entra en un estado de parado cuando se invoca al mtodo sleep.
Pasa al estado muerto cuando el hilo termino de ejecutar el mtodo run.
Revise en el texto bsico el captulo relacionado al subprocesamiento mltiple.
Subtemas a estudiar:
-
Estados de los subprocesos
package ec.edu.utpl.unidad7.thread;
2
3
4
5
6
7
super(str);
}
91
@Override
10
11
SEGUNDO BIMESTRE
12
13
14
15
16
17
18
19
mich.setPriority(MIN_PRIORITY);
20
21
22
pet.setPriority(MAX_PRIORITY);
23
24
pet.start();
25
mich.start();
26
27
28
29
30
Explicacin 7A:
Como se puede observar en el ejemplo desarrollado, en la lnea 3 se hereda los atributos de la clase
Thread.
En la lnea 9 existe la etiqueta de sobreescribir un mtodo, el cual contiene la lgica que desea el
desarrollador.
En la lnea 18 se crea un objeto del tipo Thread llamado mich. A continuacin en la lnea 19, se coloca la
prioridad del hilo colocandolo como prioridad baja.
En la lnea 21 se crear un segundo objeto del tipo Thread llamado pet. Luego en la lnea 22 se coloca la
prioridad del mismo, y en este caso se coloca con prioridad alta.
92
SEGUNDO BIMESTRE
En las lneas 18 y 21 los hilos estn en estados nuevos y listos para usarse. Cuando se invoca el mtodo
start en las lneas 24 y 25, los estados de los hilos llamados Michael y Peter cambian de nuevo a ejecutable
ya que el mtodo start llama al mtodo run.
Los hilos cambian de estado de ejecutable a muerto, cuando la lnea 10 termina de ejecutarse.
Le invitamos a leer el texto bsico, no olvide tomar nota de los temas relevantes y los temas donde tenga
dudas para que consulte a sus profesores/tutores los cuales despejarn o aclararn cualquier duda.
Revise en el texto bsico el captulo relacionado al subprocesamiento mltiple.
Subtemas a estudiar:
-
Prioridades y programacin de subprocesos.
-
Creacin y ejecucin de subprocesos
Como se puede observar, al implementar la interface Runnable, el IDE de desarrollo nos advierte que
existe el mtodo run el mismo que debe ser implementado.
Cdigo en Java: 7B
11
12
13
14
15
System.out.println(i );
16
17
System.out.println(thread finish );
18
19
20
93
SEGUNDO BIMESTRE
21
22
23
24
25
mich.setPriority(Thread.MIN_PRIORITY);
26
mich.setName(Michael);
27
mich.start();
28
29
30
pet.setName(Peter);
31
pet.setPriority(Thread.MAX_PRIORITY);
32
pet.start();
33
34
35
}
}
Explicacin 7B:
Como se puede observar en la lnea 11 se usa la palabra reservada implements para usar la interface
runnable.
A diferencia del ejemplo anterior, el uso del mtodo run es obligatorio e impuesto por la misma interface.
Es por eso que en la lnea 12 no se coloca la etiqueta de sobreescribir el mtodo.
En la lnea 22 se crear una instancia de la clase RunnableExample. La misma que ser usada en la lnea 24
para la creacin del hilo llamado mich.
De igual forma sucede en la lnea 29 que se crear el hilo pet, enviando como parmetro en el constructor
a la interface RunnableExample.
Al igual que el ejemplo anterior, los hilos en las lneas 24 y 29 se encuentran en estado nuevo. Pasan
a ejecutable cuando se ejecuta en las lneas 27 y 32 el mtodo start. Y finaliza cuando se termina de
ejecutar el mtodo run de la lnea 13.
Como se puede observar tanto en la creacin de hilos va clase Thread y va interface Runnable varan un
poco en su codificacin.
94
SEGUNDO BIMESTRE
Es tiempo de poner a pruebas sus conocimientos, recuerde que la prctica hace al maestro. Los ejercicios
le ayudarn a medir sus conocimientos.
Ejercicio 7.1
En base a los ejemplos escritos en java anteriormente, desarrolle hilos con la clase Thread e Interface
Runnable. De igual forma analice el comportamiento de los hilos cuando se coloca la prioridad alta, baja
y normal.
Construya un hilo con la clase Thread y luego use el mtodo sleep para pasar un hilo del estado ejecutable
a estado parado.
95
SEGUNDO BIMESTRE
Autoevaluacin 7
Hemos llegado a la ltima autoevaluacin de la presente gua didctica, esperamos que hayan sido de
gran aporte para su autoaprendizaje, resuelva la misma y verifique sus respuestas en el solucionario
correspondiente. xitos!
Conteste a las siguientes interrogantes utilizando una V si es Verdadero o una F si es Falso.
1.
Para usar la clase Thread o la interface Runnable se debe importar algn paquete Java.
2.
3.
Todo hilo programado en Java tiene un propio ID que es generado en el momento de crearse
el hilo.
4.
Existe una sola forma de usar hilos en Java, implementando la interface runnable.
5.
Los mtodos wait y notify respectivamente son usados para bloquear y desbloquer un hilo.
6.
Los mtodos notifyAll(), notify() y wait() deben ser llamados desde un contexto normal.
7.
Cuando se usa el mtodo sleep dentro de un hilo, este mtodo es popenso a generar errores
del tipo Interrupted Exeception.
8.
Un hilo al usar el mtodo yield, este da la oportunidad de que otros hilos con la misma
prioridad se ejecuten.
9.
10.
Cree una clase que permite ejecutar 2 hilos con prioridades distintas.
Cree una clase que use hilos usando la interface Runnable.
Cree una clase que resuelva el problema de productor-consumidor. Use hilos sincronizados.
Felicitaciones!, hemos culminado el estudio de la presente asignatura, esperamos que la misma pueda
ayudarle a lo largo de la carrera como profesional en formacin. Recuerde que el autoaprendizaje ser
siempre fundamental para poder lograr los xitos acadmicos y profesionales. Mucha Suerte!!!
96
SOLUCIONARIO
7. Solucionario
Autoevaluacin 1
Pregunta
Respuesta
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
97
SOLUCIONARIO
Autoevaluacin 2
98
Pregunta
Respuesta
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SOLUCIONARIO
Autoevaluacin 3
Pregunta
Respuesta
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
99
SOLUCIONARIO
Autoevaluacin 4
Pregunta
Respuesta
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
V
Solucin Parte Ensayo
A9
Solucion 1
100
package ec.edu.utpl.anexo4.evaluation;
public class Person {
private Integer dni;
private String lastname;
private String name;
public Person(){
this.dni=0;
this.name=;
this.lastname=;
}
public Person(Integer dni, String name, String lastname){
this.dni=dni;
this.name=name;
this.lastname=name;
}
SOLUCIONARIO
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package ec.edu.utpl.anexo4.evaluation;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class AutoevaluationList {
public static void main(String arg[]) {
//Se hace la declaracion de la coleccion del tipo List
//Se usa generics para decir a la coleccion que el tipo de datos
//que se pasa es del tipo Person
List<Person> personList = new ArrayList<Person>();
//Declaracion del objeto person
Person person1;
101
102
SOLUCIONARIO
SOLUCIONARIO
62
63
64
65
66
67
68
69
70
71
72
73
Ejecucin:
Explicacin:
El programa tiene la finalidad de mostrar al estudiante las capacidades del uso de las colecciones,
usando caractersticas de java tales como autoboxing, generics. Asi como tambin el uso del API de Java,
estructura cclica do-while y seleccin de opciones.
En la lnea 12 se hace la declaracin de una coleccin del tipo List esperando como parmetros a datos
del tipo de datos de la clase Person.
Luego en las lneas desde la 17 a la 19, se declara variable que permitirn tomar los valores que deben
ser leidos a travs del teclado; tal como sucede en las lneas 38, 43, 48.
En la lnea 22 inicia la estructura cclica do-while, la misma que se revisa en las primeras unidades de la
gua didctica.
Para realizar la lectura desde el teclado, se usa la clase Scanner tal como sucede en la lnea 28; para el
correcto uso de la antes mencionada clase se debe revisar el API de Java.
103
SOLUCIONARIO
En la lnea 31 se hace uso de la palabra reservada switch, la misma que nos ayudara a tener multiples
opciones. La palabra reservada switch, va acompaada de otras palabras reservadas como case y break.
B)
104
package ec.edu.utpl.anexo4.evaluation;
import ec.edu.utpl.anexo4.evaluation.Person;
import java.util.HashMap;
import java.util.Scanner;
public class AutoevaluationHash {
public static void main(String arg[]) {
HashMap<Integer, Person> personHash = new HashMap<Integer, Person>();
Person person;
Integer dni = null;
String name;
String lastname;
String option = n;
do {
System.out.println(Menu);
System.out.println(1) Add user);
System.out.println(2) Search user);
System.out.println(3) Quit);
Scanner scan = new Scanner(System.in);
option = scan.next();
switch (option.charAt(0)) {
case 1:
person = new Person();
System.out.print(Enter user id\t);
dni = scan.nextInt();
person.setDni(dni);
System.out.print(Enter name\t);
name = scan.next();
person.setName(name);
System.out.print(Enter lastname\t);
lastname = scan.next();
person.setLastname(lastname);
personHash.put(dni, person);
break;
case 2:
System.out.print(Enter user id\t);
dni = scan.nextInt();
if (personHash.containsKey(dni)) {
System.out.println(User is found in the hash table);
SOLUCIONARIO
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
person = personHash.get(dni);
if (person != null) {
System.out.println(ID +person.getDni());
System.out.println(Name +person.getName());
System.out.println(Lastname +person.getLastname());
}
}
else{
System.out.println(User isnt found in the hash table);
}
break;
case 3:
option = s;
break;
}
} while (option.charAt(0) != s);
}
}
Ejecucin:
Explicacin:
El ejercicio tiene el objetivo de mostrar las ventajas de usar la coleccin del tipo Hash. Recordemos que
los Hash se manejan mediante una llave y un valor.
En la lnea 10 se hace la declaracin y creacin del objeto del tipo Hash; dicindole a la coleccin que los
tipos de datos que almacenar sern del tipo Integer como llave y Person como valor.
En la lnea 11 se hace la declaracin del objeto del tipo Person, el mismo que ser usado ms adelante
en la coleccin.
En las lneas del 13 al 15 se declara variable que permitirn tomar los valores que deben ser leidos a
travs del teclado.
105
SOLUCIONARIO
En la lnea 22 se hace la declaracin de la clase Scanner, la misma que es encargada de leer desde el
teclado. En la lnea 24 se hace uso de la palabra reservada switch la que nos ayudara a la programacin
de multiples opciones. Recordemos que la palabra reservada switch va acompaada de otras palabras
tales como case, default y break
En la lnea 59 se evalua la opcin, para salir o no del programa desarrollado.
106
SOLUCIONARIO
Autoevaluacin 5
Pregunta
Respuesta
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
package ec.edu.utpl.unidad5.pattern;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Validate {
public static boolean isValidEmail(String email) {
Pattern p = Pattern.compile(.+@.+\\.[a-z]+);
Matcher m = p.matcher(email);
boolean matchFound = m.matches();
if (matchFound) {
return true;
} else {
return false;
}
}
public static boolean isValidDate(String date){
Pattern p = Pattern.compile(^[0-1][1-9][- / ]?(0[1-9]|[12][0-9]|3[01])[- /]?(18|19|20|21)\\d{2}$);
Matcher m = p.matcher(date);
boolean matchFound = m.matches();
if(matchFound){
107
SOLUCIONARIO
return true;
}
return false;
}
}
Ejecucin:
Explicacin:
El objetivo de este ejercicio es el ensear que para desarrollar clases utilitarios se debe usar mtodos
estticos, asi como tambin poner a pruebas los conocimientos adquiridos a la hora de desarrollar una
expresin regular.
En la lnea 9 se usa una expresin regular que usa cuantificadores como el signo +, el mismo que tiene
la finalidad de validar si lo ingresado es o no un correo vlido.
En la lnea 10 se enva como parmetro el correo a validar, y en la lnea 11 se almacenara como dato
booleano si la expresin regular se cumple.
En la lnea 12 se compruebas la variable, si es correcto devolver un verdadero, caso contrario devolver
un falso.
De igual forma sucede con la validacin de fechas.
108
SOLUCIONARIO
Autoevaluacin 6
Pregunta
Respuesta
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
V
Solucin Parte Ensayo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package ec.edu.utpl.unidad6.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class SQLite {
private Connection con;
private PreparedStatement stmt;
public SQLite() {
try {
Class.forName(org.sqlite.JDBC);
con = DriverManager.getConnection(jdbc:sqlite:library.db);
} catch (Exception e) {
System.out.println(Error en base de datos);
}
}
109
110
SOLUCIONARIO
SOLUCIONARIO
70
71
72
73
}
return false;
}
}
Explicacin:
La presente clases, tiene la finalidad de mostrar las operaciones que se pueden realizar con los JDBC en
java.
En la lnea 12 se declara una variable del tipo Connection, que tiene la finalidad de almacenar la conexin
a la base de datos.
En la lnea 13 se declara una variable del tipo PreparedStatement, que tiene la finalidad de almacenar las
operaciones SQL.
En la lnea 17 se carga del JDBC del la base de datos, la misma que debe ser descargada de la internet
para hacer uso de la misma. De lo contrario, generar un error.
Existen diferentes mtodos tales como saveOperation lnea 34, updateOperation lnea 49 y
deleteOperation lnea 62 que usan la variable del tipo Connection y PrepareStatement para realizar las
diferentes operaciones SQL como insert, update y delete.
111
SOLUCIONARIO
Autoevaluacin 7
112
Pregunta
Respuesta
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DICTIONARY
8. Anexos
THESAURUS
GLOSARIO
El presente material ha sido reproducido con fines netamente didcticos, cuyo objetivo es
brindar al estudiante mayores elementos de juicio para la comprensin de la materia, por
lo tanto no tiene fin comercial.
8.
package ec.edu.utpl.anexos.collections;
9
10
11
12
System.out.print(Arreglo[i] + );
13
14
15
16
Explicacin:
La lnea 1 corresponde al nombre del paquete sobre el cul estamos trabajando, por defecto java crea
paquetes con el nombre package javaapplication;
En la lnea 4 se declara una variable denominada Arreglo que es de tipo entero la misma que asigna un
espacio de memoria de tamao 4 para crear el arreglo.
La lnea 5 permite crear una sentencia de control repetiviva para llenar el arreglo el mismo que se lo
hace a travs de una funcin Math.random, aqu puede llenar el arreglo ubicando valores que ud. crea
conveniente.
113
GLOSARIO
En la lnea 10 se crea una sentencia de control repetitiva la misma que servir para presentar los elementos
que tiene el arreglo, la impresin en pantalla del arreglo se lo hace en la lnea 12 a travs del uso de la
palabra reservada System.out.println.El resultado de la ejecucin del programa es el siguiente:
8.2
package ec.edu.utpl.anexos.collections;
10
11
12
13
14
System.out.println( );
15
16
17
System.out.print(Arreglo[i][j] + );
18
19
20
21
}
}
Explicacin: En la lnea 4 se realiza la declaracin del arreglo bidimensional, para proceder a su llenado
se utiliza dos sentencias de control repetivivas las mismas que se encuentran en las lneas 5 y 7.
114
GLOSARIO
Para la presentacin o impresin de los elementos del arreglo se utiliza dos sentencias de control
repetitivas, las mismas que pueden ser las utilizadas para el ingreso de los datos a la matriz de orden m
x n y en la lnea 17 se procede a la impresin de los datos.
El resultado de la ejecucin del programa es el siguiente:
8.3
package ec.edu.utpl.anexos.collections;
LlenarMatriz();
PresentarMatriz();
PasaElementosDiagPrincipal();
LeerElementosDiagPrincipal();
10
11
12
13
14
15
16
17
18
19
20
21
115
System.out.println( );
23
24
GLOSARIO
System.out.print(ArregloBidimensional[i][j] + );
25
26
27
28
29
30
int x=0;
31
32
33
System.out.println( );
34
35
if (i==j){
36
ArregloUnidimensional[x] = ArregloBidimensional[i][j];
37
x++;
38
39
40
41
42
43
44
System.out.print(Arreglo Unidimensional: );
45
46
47
System.out.print(ArregloUnidimensional[i]+ - );
48
49
50
116
}
}
GLOSARIO
8.4 Uso de clase, subclases, clases abstractas, objetos, instanciacin, constructores, atributos,
mtodos.
1
package ec.edu.utpl.anexos.collections;
System.out.print(p.PresentarNombres() + + p.PresentarApellidos());
9
10
}
}
11
12
class Persona{
13
String Nombres;
14
String Apellidos;
15
int Edad;
16
public Persona(){}
17
117
this.Nombres = Na1;
19
this.Apellidos = Ap1;
20
this.Edad = Ed1;
GLOSARIO
21
22
23
return this.Nombres;
24
25
26
return this.Apellidos;
27
28
29
return this.Edad;
30
31
32
33
String Carrera;
34
String Estado;
35
public Estudiante(String Na1, String Ap1, int Ed1, String Ca1, String Es1){
36
super(Na1,Ap1,Ed1);
37
this.Carrera = Ca1;
38
this.Estado = Es1;
39
40
41
return this.Carrera;
42
43
44
return this.Estado;
45
46
47
48
String Institucion;
49
int AnioServicio;
118
GLOSARIO
50
public Empleado(String Na1, String Ap1, int Ed1, String In1, int An1){
51
super(Na1,Ap1,Ed1);
52
this.Institucion = In1;
53
this.AnioServicio = An1;
54
55
56
return this.Institucion;
57
58
59
return this.AnioServicio;
60
61
}
}
Explicacin:
En la lnea 4 y 6 se crean los objetos para la clase Persona y Empleado respectivamente, se hacen llamadas
a los constructores correspondientes para setear los valores que utiliza la clase.
En la lnea 12 se crea la clase Persona, el constructor de dicha clase se lo realiza en la lnea 17 a la 20, los
mtodos se encuentran en las lneas 22 a la 28.
La creacin de la clase Estudiante est en la lnea 32, sus atributos en las lneas 22 y 34, el constructor en
la lnea 35 y los mtodos de la 40 a la 46.
La clase Empleado que tambien hereda de persona est en la lnea 47 a la 61, dentro de la cual estn sus
mtodos, atributos y constructor.
Recuerde que el constructor siempre lleva el mismo nombre de la clase.
El resultado de la ejecucin del programa es el siguiente:
119
8.5
GLOSARIO
package ec.edu.utpl.anexos.collections;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
9
10
11
12
13
14
EscribirArchivo();
15
LeerArchivo();
16
17
18
19
20
21
22
23
24
25
fSalida.print(12345);
26
fSalida.println();
27
fSalida.write(cadena);
28
29
fSalida.close();
30
31
120
GLOSARIO
32
33
34
35
36
37
38
39
40
while(leer)
41
42
cadena = fEntrada.readLine();
43
System.out.println(cadena);
44
if (cadena == null)
45
46
leer = false;
47
48
fEntrada.close();
49
50
51
52
Explicacin:
En las lneas 2 a la 8 se realiza la importacin de los paquetes que permiten trabajar con archivos en java.
En las lneas 14 y 15 se llama a los mtodos de escritura y lectura de archivos.
En la lnea 20 y 21 se crea la ruta donde se almacenarn los archivos y se utiliza el constructor para
asignar un nombre al archivo.
La lnea 22 se refiere al flujo de salida a utilizar cuando se trabaja con archivos de texro.
la lnea 36 hace referencia al flujo de entrada para realizar la lectura del archivo
Las lneas 29 y 48 permiten cerrar el archivo.
NOTA: Recuerde que para ejecutar el archivo debe crear una carpeta Archivos en el directorio C:, si desea
cambiar la ruta la puede hacer sin ningun inconveniente.
121
8.6
GLOSARIO
package ec.edu.utpl.anexo4.evaluation;
2
3
4
5
8
9
10
public Person(){
11
this.dni=0;
12
this.name=;
13
this.lastname=;
14
15
16
17
this.dni=dni;
18
this.name=name;
19
this.lastname=name;
20
21
22
23
24
return dni;
}
25
26
27
28
this.dni = dni;
}
29
30
31
122
GLOSARIO
32
33
34
35
this.lastname = lastname;
36
37
38
39
return name;
40
41
42
43
this.name = name;
44
45
46
@Override
47
48
49
50
}
}
DG/RL/sd/2011-03-18-123
gg/2015-07-22
123