You are on page 1of 123

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja


MODALIDAD ABIERTA Y A DISTANCIA

Departamento de Ciencias de la Computacin y Electrnica


Seccin Ingeniera del Software y
Gestin de Tecnologas de la Informacin

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

5. Orientaciones generales para el estudio............................................................. 9


6. Proceso de enseanza-aprendizaje para el logro de competencias........ 11
PRIMER BIMESTRE
6.1. Competencias genricas.................................................................................................. 11
6.2. Planificacin para el trabajo del alumno......................................................................... 11
6.3. Sistema de evaluacin de la asignatura (primero y segundo bimestre)........................ 13
6.4. Orientaciones especficas para el aprendizaje por competencias.................................... 14

UNIDAD I: REVISIN DE CONCEPTOS DE PROGRAMACIN........................................................... 14


1.1. Estructuras de seleccin.................................................................................................. 14
1.2. Estructuras de repeticin................................................................................................. 18
1.3. Arreglos y mtodos......................................................................................................... 24
1.4. Archivos .......................................................................................................................... 30
Autoevaluacin 1.................................................................................................................... 34

UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOS.................................................................. 36


2.1. Herencia.......................................................................................................................... 36
2.2. Polimorfismo................................................................................................................... 42
2.3. Clases abstractas e interfaces......................................................................................... 45
2.4. UML: Diagramas de clase y secuencia............................................................................ 49
Autoevaluacin 2.................................................................................................................... 53

UNIDAD III: INTERFZ GRFICA DE USUARIO............................................................................. 54


3.1. Elementos de la GUI....................................................................................................... 54
3.2. Layouts............................................................................................................................ 54
3.3. Eventos........................................................................................................................... 55
3.4. Reutilizacin de GUI........................................................................................................ 55
Autoevaluacin 3.................................................................................................................... 56

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

UNIDAD IV: ESTRUCTURA DE DATOS AVANZADOS........................................................................ 60


4.1. Estudio de API Collections............................................................................................... 60
4.2. Genricos........................................................................................................................ 67
4.3. APIs de Consulta............................................................................................................ 71
Autoevaluacin 4.................................................................................................................... 74

UNIDAD V: EXPRESIONES REGULARES EN JAVA........................................................................... 75


5.1. Expresiones regulares en Java........................................................................................ 75
5.2. Validaciones con expresiones regulares.......................................................................... 77
Autoevaluacin 5.................................................................................................................... 81

UNIDAD VI: LA ACCIN MISIONERA. UNIDAD VI: CONECTIVIDAD JDBC......................................... 82


6.1. Conexiones base de datos.............................................................................................. 82
6.2. Ejecucin de Sentencias CRUD........................................................................................ 85
Autoevaluacin 6.................................................................................................................... 89

UNIDAD VII: PROGRAMACIN MULTI-TAREA............................................................................... 90


7.1. Subprocesamiento Mltiple............................................................................................. 90
7.2. Estado de los procesos.................................................................................................... 90
7.3. Creacin y ejecucin de subprocesos.............................................................................. 91
7.4. Interfaz runnable............................................................................................................ 93
Autoevaluacin 7.................................................................................................................... 96

7. Solucionario...................................................................................................................... 97
8. Anexos................................................................................................................................. 113

Gua didctica: Programacin Avanzada

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!!

La suma de la sabidura consiste en esto: en que el tiempo empleado


en el trabajo nunca se pierde.
Ralph Waldo Emerson.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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



Beltrn, A. y Santamara, J. (2009): Programacin en Java I OpenCourseWare de la Universidad


Politcnica de Madrid [En lnea] Madrid. Disponible en:
http://ocw.upm.es/lenguajes-y-sistemas-informaticos/programacion-en-java-i. [Consulta 15-012011]
Recurso OCW de la asignatura Programacin en Java I que se dicta en la Universidad Politcnica
de Madrid. Abarca temas relacionados con tipo de datos, sentencias condicionales y repetitivas,
programacin orientada a objetos.

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.

Sarriguren, A., Serrano, J y Alonso, L. (2009): Introduccin a la programacin en java - OpenCourseWare


de la Universidad del Pas Vasco [En lnea]. Madrid. Disponible en:
http://ocw.ehu.es/ensenanzas-tecnicas/introduccion-a-la programacion-en-java/Course_listing.
[Consulta 15-01-2011]

Presentacin de los elementos bsicos de programacin y de la programacin orientada a objetos,


con vistas a usar adecuadamente esos elementos para desarrollar, adaptar y depurar aplicaciones
con un tamao moderado, que no precisen de conocimientos algortmicos avanzados.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

PRELIMINARES

Gua didctica: Programacin Avanzada

Gonzalez, A. Programacion en Java [En lnea]. Disponible en http://issuu.com/arnaldogonzales/


docs/realizaciondemiprimerprogramaennetbeans[Consultada en 23/02/2011].
En este video se explica el uso del ide NetBeans para realizar programas en java.

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/

carlislemc. Programacion en Java y modo grfico [En lnea]. Disponible en http://www.youtube.


com/watch?v=LFr06ZKIpSM [Consultada en 23/02/2011].

Se expica la Programacin de GUI en Java.
Mdumse. Programacion en Java y modo grfico [En lnea]. Disponible en http://www.youtube.com/
watch?v=A9ZX5rWcDOE [Consultada en 23/02/2011].

Se muestra como elaborar una calculadora en modo grfico java.
Nuverlomm. Programacion en Java y modo grfico [En lnea]. Disponible en http://www.youtube.
com/watch?v=nR1Z6waoa_o [Consultada en 23/02/2011].

Se explica la Suma de nmeros en java.
Pbeltran. Programacion de Archivos en Java [En lnea]. Disponible en http://www.youtube.com/
watch?v=6E90QsyJbac [Consultada en 23/02/2011].

Se explica el manejo de Archivos en java. Parte I.
Pbeltran. Programacion de Archivos en Java [En lnea]. Disponible en http://www.youtube.com/wa
tch?v=0foctrktBQw&feature=related [Consultada en 23/02/2011].

Se explica el manejo de Archivos en java. Parte II.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

PRELIMINARES

Pbeltran. Programacion de Archivos en Java [En lnea]. Disponible en http://www.youtube.com/


watch?v=yB43khzF-iA&feature=related [Consultada en 23/02/2011].

Se explica el manejo de Archivos en java. Parte III.
marsalRoom. Programacion Orientada a Objetos Java [En lnea]. Disponible en http://www.youtube.
com/watch?v=C4X_bt5_nQs [Consultada en 23/02/2011].

En el video se muestra la programacin de Objetos, Herencia en java. Parte I.
niktutos. Programacion Orentada a Objetos en Java [En lnea]. Disponible en http://www.youtube.
com/watch?v=AygRt5vVaMM [Consultada en 23/02/2011].

En el video se muestra la programacin de Objetos, Herencia en java. Parte II.
pbeltran. Programacion Orentada a Objetos en Java [En lnea]. Disponible en http://www.youtube.
com/watch?v=Aoyn1b52fls&feature=related [Consultada en 23/02/2011].

En el video se muestra la programacin de Objetos, Herencia en java. Parte III.
kasper1987. Programacion Orentada a Objetos en Java [En lnea]. Disponible en http://www.
youtube.com/watch?v=raQuvQFn1kk&feature=related [Consultada en 23/02/2011].

En el video se muestra la programacin de Objetos, Herencia en java. Parte IV.
PixelCreation Tuts. Programacion Orentada a Objetos en Java [En lnea]. Disponible en http://www.
youtube.com/watch?v=6LnlqO7fm9g&feature=related [Consultada en 23/02/2011].
En el video se muestra la programacin de Objetos, Instanciacin.

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.

Xxenzitoxx. Programacion Orentada a Objetos en Java [En lnea]. Disponible en http://www.


youtube.com/watch?v=SM17X7bJx78&feature=related [Consultada en 23/02/2011].

En el video se muestra la programacin de Objetos, Polimorfismo. Parte II.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

PRELIMINARES

Gua didctica: Programacin Avanzada

5. Orientaciones generales para el estudio


La asignatura Programacin Avanzada, al ser una materia troncal de Ingeniera en Informtica, constituye
una de las bases fundamentales para la formacin del estudiante dentro de su rea profesional, por lo
tanto, le ofrecemos algunas orientaciones de como aprovechar al mximo las diversas ayudas que se
incluyen en recursos didcticos como:

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.

Como parte de su autoaprendizaje es recomendable que resuelva las autoevaluaciones ubicadas


al final de cada unidad de estudio, hgalas sin consultar ningn documento y luego verifique las
respuestas en el solucionario ubicado al final de la gua didctica.

El contenido cientfico para el desarrollo de la evaluacin a distancia usted lo encontrar en el


texto bsico y la gua didctica.

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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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.

Finalmente se sugiere no esperarhastalos ltimos das de entrega de trabajos a distancia para


iniciar a desarrollar los mismos, ya que esto le podra ocasionar un rendimiento acadmico
inadecuado.

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

Indicaciones del profesor

Revisar Texto bsico

Buscar informacin en Internet

Revisar Anexos

10

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

PRIMER BIMESTRE

6. Proceso de enseanza-aprendizaje para el logro de competencias


PRIMER BIMESTRE
6.1. Competencias genricas

Capacidad de abstraccin, anlisis y sntesis.

Capacidad de aplicar los conocimientos en prctica.

Conocimiento sobre el rea de estudio y la profesin.

Habilidades para buscar, procesar y analizar informacin procedente de fuentes diversas.

Capacidad de aprender a aprender como poltica de formacin contnua.

Capacidad crtica y auto crtica.

Capacidad para identificar, plantear y resolver problemas.

Capacidad creativa e innovadora.

6.2. Planificacin para el trabajo del alumno


COMPETENCIAS
ESPECFICAS
Habilidad para solucionar
y optimizar problemas de
programacin.
Habilidad para realizar
integraciones de
soluciones software.
Desenvolvimiento
en la utilizacin de
otros lenguajes de
programacin de alto
nivel, los cuales permitan
resolver problemas de
nivel intermedio.
Dominio en la aplicacin
de los conceptos de
Orientacin a Objetos para
realizar anlisis, diseo
y programacin de los
mismos.
Disear e implementar
aplicaciones robustas que
contengan estndares de
programacin, lgica bien
definida y entorno grfico
amigable.

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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

CRONOGRAMA
ORIENTATIVO
Tiempo
Estimado
Semana 1,2
8 horas de
autoestudio
8 horas de
interaccin

La Universidad Catlica de Loja

11

Gua didctica: Programacin Avanzada

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

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

Gua didctica: Programacin Avanzada

PRIMER BIMESTRE

6.3. Sistema de evaluacin de la asignatura (primero y segundo bimestre)


Formas de evaluacin

Interaccin en el EVA

Prueba objetiva

Cumplimiento, puntualidad,
responsabilidad

Esfuerzo e inters en los trabajos

Respeto a las personas y a las


normas de comunicacin

X
X

Contribucin en el trabajo
colaborativo y de equipo

Presentacin, orden y ortografa


Emite juicios de valor
argumentadamente

Aporta con criterios y soluciones

Anlisis y profundidad en el
desarrollo de temas

PORCENTAJE

Puntaje

10% 20% 30%

TOTAL

70%

14

20 puntos

Actividades
presenciales y en el
EVA

Estrategia de
aprendizaje

Investigacin (cita fuentes de


consulta)

Mximo 1 punto
(completa la
evaluacin a
distancia)

Habilidades

Creatividad e iniciativa

Conocimientos

3. Coevaluacin

Parte de ensayo

Dominio del contenido

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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

13

Gua didctica: Programacin Avanzada

PRIMER BIMESTRE

6.4. Orientaciones especficas para el aprendizaje por competencias

Maana ser siempre un nuevo da. Convirtelo en un nuevo da; no lleves


contigo las experiencias negativas del pasado.
Scott Shaw.

UNIDAD I: REVISIN DE CONCEPTOS DE PROGRAMACIN


En la presente unidad iniciaremos el estudio de algunas estructuras que en su momento revis pero
ahora las enfocaremos en un mbito de trabajarlas a travs de un lenguaje de programacin como lo es
java, por lo que le invitamos a revisar los siguientes temas.

1.1. Estructuras de seleccin


Las estructuras de seleccin son parte fundamental e importante de las instrucciones de control las
cuales sirven para desarrollar aplicaciones de software que tengan en su codificacin ciertas secciones
que necesiten una o varias condiciones y as controlar su comportamiento. Cabe recalcar que para iniciar
con el estudio de estas estructuras es necesario que usted posea conocimientos bsicos y necesarios de
temas ya estudiados y conocidos como: tipos de datos, variables, constantes y su correcto uso.
Inicie el estudio del texto bsico en los captulos relacionados con los temas:
-

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

Estructuras de seleccin if simple.


Estructuras de seleccin if .else

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

PRIMER BIMESTRE

Gua didctica: Programacin Avanzada

Ha revisado la definicin, elementos y declaracin de las estructuras de seleccin simple y con su


condicin de caso contrario?, esta es una de las estructuras bsicas de programacin, para relacionar
las sentencias de decisin o control con aspectos de la vida cotidiana le proponemos los siguientes
ejercicios que afianzarn sus conocimientos.

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:

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

15

Gua didctica: Programacin Avanzada


Lenguaje Natural

PRIMER BIMESTRE

Usando Programacin Java


(Primera declaracin)

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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:

Se considera un adolescente cuando tiene de 0 a 18 aos.

Se considera mayor de edad cuando tiene 18 aos o mas.

Se considera de tercera edad cuando tiene ms de 60 aos.

Cmo declarara las variables? y qu tipo de dato tendrn las mismas?

Cuntas condiciones utilizara?

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);
}
}

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

17

Gua didctica: Programacin Avanzada

PRIMER BIMESTRE

El resultado de la ejecucin del programa anterior debera ser:

Ejercicios 1.6

En base al ejercicio 1.5 de la gua didctica identifique lo siguiente:


Cul es el nombre de la clase?

Cuntas condiciones existen?

Cuntos operadores de condicin existen?

Cuntas condiciones resultantes existen si se cumple la condicin?

Cuntas condiciones resultantes existen si no se cumple la condicin?

1.2. Estructuras de repeticin


Bien, una vez que hemos estudiado los aspectos fundamentales de las estructuras de seleccin, vamos
a ir combinando stas con otras estructuras que harn que nuestras aplicaciones se hagan cada vez ms
robustas y con una lgica que permita que los tiempos de respuesta sean los adecuados, es importante
que ponga especial atencin en las estructuras de control repetitivas ya que le ayudarn en prximos
apartados de la gua.
Dentro de las sentencias de control encontrar estructuras como while, for, repeat, for each; cada una
adopta un comportamiento y nomenclatura diferente a travs de la programacin con lenguaje java,
es necesario que revise en el texto bsico los temas relacionados a estructuras de control repetitivas
o iterativas los mismos que le ayudarn a comprender de mejor manera lo que se pretende en este
captulo.
Revise en el texto bsico el captulo relacionado a estructuras de repeticin.
Subtemas a estudiar:
-
-
-
-
-

18

Estructuras while.
Estructuras for
Estructuras do while.
Ordenacin por insercin.
Bsqueda en listas.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

19

Gua didctica: Programacin Avanzada

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.

Qu significa: int valor = 10?

b.

En qu valor se inicializa la variable valor?

c.

Qu tipo de dato tiene la variable valor?

d.

Cuntas veces se ejecuta el proceso indicado?

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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:
-
-

Instrucciones de repeticin for


Ejemplos sobre el uso de la instruccin for

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

Cul es el resultado de ejecucin de los siguientes programas en java?

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

21

Gua didctica: Programacin Avanzada

A)

Cdigo en java:
1

package ec.edu.utpl.unidad1.estructuras;

public class Main {

public static void main(String[] args) {

for (int i = 0; i < 5; i++) {

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;

public class Main {

public static void main(String[] args)

for (int i=1; i<6; i++)

switch (i)

case 1:

10

System.out.println (a);

11

break;

12

case 2:

13

System.out.println(e);

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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

La diferencia existente entre el while y el do while radica en su estructura ya que su comportamiento


sigue siendo similar, es decir, se debe ubicar una variable para incrementar la misma y el programa no
tienda hacia el infinito.
Los siguientes ejemplos de declaracin son similares a los que ud. encontrar en el texto bsico:
a.

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).

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

23

Gua didctica: Programacin Avanzada

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.

1.3. Arreglos y mtodos


En la presente unidad iniciaremos el estudio de los arreglos: declaracin, tipos y operaciones que se
llevan a cabo con los mismos.
Los arreglos son parte fundamental e importante de las estructuras de datos que en su momento
estudi, estos sirven para el almacenamiento en memoria de datos o informacin considerada pequea,
tales como: cadenas de caracteres o registros. Cabe recalcar que para iniciar con el estudio de estas
estructuras es necesario que usted posea conocimientos bsicos de temas ya estudiados como: tipos de
datos, variables, constantes, sentencias de control, entre otros, si an existen vacios por favor revise la
bibliografa bsica y complementaria.
En el captulo denominado arreglos o arrays del texto bsico revise los temas:
- Arreglos.
-
Inicializacin de un arreglo.
-
Ordenamiento de arreglos.

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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

Si la palabra PROGRAMACION, estuviera en un arreglo de caracteres, qu posicin o cul sera el ndice


de la letra C? y cul sera el tamao del arreglo?, programe este ejercicio en java, defina el tamap del
arreglo y lea cada posicin del mismo, imprimiendo cada letra en pantalla.
Cmo resultaron los ejercicios?, esperamos que muy bien, para complementar estos temas revisemos
las siguientes caractersticas que poseen los arreglos:
Finitos: Todo arreglo tiene un lmite, debe determinarse cul es el nmero mximo de elementos
que podrn formar parte del arreglo.
Homogneos: Todos los elementos de un arreglo son del mismo tipo de dato es decir: entero,
string, char, double, etc., pero nunca una combinacin de estos.
Ordenados: Se puede determinar cul es el primer, segundo, tercer, ensimo elemento.
Adems recordemos que los arreglos pueden ser de varios tipos destacando los siguientes:


Unidimensionales (una dimensin).


Bidimensionales (dos dimensiones)
Tres o ms dimensiones.

En la figura 1.1 se representa un array unidimensional de lenguajes de programacin.

Elemento

Java

PHP

C#

C++

Visual Basic

ndice

Figura 1.1: Representacin grfica de un arreglo unidimensional.

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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

25

Gua didctica: Programacin Avanzada

PRIMER BIMESTRE

Por favor retome el estudio del texto bsico y revise el captulo de arreglos o arrays.
-

Subcaptulo: Declaracin de arreglos


Subndices.

Almacenamiento en memoria.
Tamao.

Verificacin del rango del ndice de un array.

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:

Cmo declarara el arreglo? y qu tipo de dato tendr ste?

Cul es el tamao o longitud del arreglo?

Cul es el ndice inferior del arreglo?

Cul es el ndice superior del arreglo?

Qu sentencias de control utilizara?

Si el arreglo estuviera ordenado qu elemento se encontraran en la posicin 3 y en la


posicin 27?

1.3.1 Operaciones con Arreglos


Bien, una vez que hemos estudiado los aspectos fundamentales de los arreglos vamos a revisar algunos
algoritmos y tcnicas para manipular los datos de estas estructuras, es importante que ponga especial
atencin a estos algoritmos ya que los mismos son la base para desarrollar y resolver aplicaciones
especficas en programacin utilizando cualquier lenguaje de programacin.
Dentro de las operaciones que intervienen en los arreglos constan: lectura/escritura, asignacin,
actualizacin, ordenacin y bsqueda; las operaciones como declaracin, lectura y asignacin de datos
ya se estudiaron en los ejercicios anteriores que usted realiz; ahora conviene revisar los temas de
bsqueda, ordenacin.
Antes de abordar estos temas es necesario que revise en el texto bsico los temas relacionados a
Algoritmos de Ordenacin y Bsqueda los mismos que le ayudarn a comprender de mejor manera lo
que se pretende en este captulo.

26

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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

En los siguientes ejercicios, qu ordenamiento (ascendente o descendente) y tamao tienen los


arreglos?; si estn desordenados identifquelo y ordene como Ud. desee. Como parte adicional puede
programarlos en java.
1.

Notas de los estudiantes del primer ciclo de la carrera de informtica, asignatura matemticas.
18
26
30
34
38
40

2.

Niveles de estudio de la carrera de informtica.


1

3.

10

Materias de la carrera de informtica.


ALGEBRA
ANLISIS MATEMTICO
CLCULO
ESTRUCTURAS DE DATOS
FUNDAMENTOS DE LA
PROGRAMACIN
LENGUAJE DE ALTO NIVEL
MATEMTICAS

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

27

Gua didctica: Programacin Avanzada

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

PRIMER BIMESTRE

Cuntos y cuales son los parmetros?


Los parmetros son dos (x e y).
En el ejemplo anterior cabe mencionar que las variables o parmetros x e y deben tener un tipo de dato
el mismo que es numrico, ahora bien, si se ubica como valor del parmetro un string esto arrojar un
error porque no est programado el mtodo para soportar estas excepciones.
Muy bien, Ud. se preguntar Cul ser el algoritmo que el mtodo usa para obtener el mayor valor?,
cmo el mtodo interpreta que las variables sean de tipo entero y arrojen las excepciones adecuadas?,
justamente esas son interrogantes que uno debera hacerse para empezar a desarrollar un mtodo,
tmelo como el concepto de caja negra que en cierta ocasin estudi, es decir poseer: Entradas
y Salidas, los Procesos que se realicen para obtener las salidas adecuadas es lo que Ud. debe aplicar
cuando programa los mtodos.

SALIDAS

ENTRADAS

PROCESOS

Figura1.2: Representacin de modelo de caja negra

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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

29

Gua didctica: Programacin Avanzada

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

Resuelva el ejercicio 1.16 de la gua didctica utilizando mtodos.


Espero que los ejercicios hayan servido para poder aplicar la programacin con los conocimientos
relacionados a mtodos, y recuerde siempre aplicar los mismos cuando sea posible, pensando siempre
en la reutilizacin y acoplamiento para diferentes alternativas de solucin en sus programas.

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

PRIMER BIMESTRE

Gua didctica: Programacin Avanzada

Figura 1.3: Representacin grfica de archivos

En el texto bsico encontrar informacin relacionada a la programacin de archivos en java, por


ejemplo; es importante recordar algunos puntos que se indican a continuacin:
-
Importar la clase io de java (Import java.io)
-
Validar si el archivo existe
File f = new File (archive.txt);
{
If (f.exists())

///ubicar el cdigo correspondiente para leer o escribir //cuando se cumpla la condicin
}
Antes que inicie el repaso de archivos en java, el programador debe conocer algunos tips importantes
que se indican a continuacin:
-

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 relacin al tamao de los archivos estos no tienen una dimensin fija.

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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

31

Gua didctica: Programacin Avanzada

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:
-
-

Relaciona nombre lgico con el fichero fsico.


La operacin de creacin depende del lenguaje de programacin.

2. Apertura:
-
-

Es indispensable realizar el paso 1.


Identificar las formas de abrir un archivo, esto depende del lenguaje de programacin (slo lectura,
slo escritura, lectura/escritura)

32

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

PRIMER BIMESTRE

3. Operar:
-
-
-
-

Operaciones de lectura/escritura: leer y escribir sobre los archivos.


Operaciones de inserciones/borrado: modificar los valores de los registros en archivos.
Operaciones de renombrado/eliminacin: modificar o eliminar el nombre fsico de un archivo.
Operaciones de desplazamiento: facilidad de moverse sobre los registros para procesos de
bsqueda de informacin en los archivos.

4. Cerrar:
-

Siempre se debe cerrar los archivos que se aperturen.


Algunos ejemplos adicionales relacionados a archivos Ud. los encontrar en la parte de anexos.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

33

Gua didctica: Programacin Avanzada

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.

Un arreglo est compuesto por ndices.

( )

3.

En el arreglo de texto AUTOEVALUACION, la letra E se encuentra en la posicin 5.

( )

4.

El tamao de un arreglo es mximo de 10 elementos.

( )

5.

La siguiente declaracion de arreglo: int notas [8], hace referencia a un arreglo de 8 elementos
de tipo entero.

( )

6.

El dividir un programa en modulos pequeos es trabajar con mtodos.

( )

7.

Los arreglos bidimensionales son tambin conocidos como tablas o matrices.

( )

8.

Los arreglos bidimensionales contienen columnas y filas.

( )

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.

En archivos, un registro es un grupo de campos relacionados.

( )

Resuelva la siguiente parte prctica


A)
1.
Declare un arreglo de orden m x n, puede ser tres filas y tres columnas.
5

10

2.

Escriba los elementos de la matriz creada en el punto 1.

3.

Obtenga los elementos de la diagonal principal de la matriz declarada y pselos a un arreglo


unidimensional.
5

34

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

PRIMER BIMESTRE

4.

Ordene los elementos del arreglo resultante del punto 3.

Ordenado ascendentemente

Ordenado descendentemente

5.

Presente el arreglo unidimensional ordenado.

1.

Cul es la diferencia entre un archivo de acceso secuencial y de acceso aleatrorio.

2.

Cules son las formas de inicializar un archivo?

B)

Ir a solucionario

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

35

Gua didctica: Programacin Avanzada

PRIMER BIMESTRE

UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOS


Cuando hablamos de programacin orientada a objetos en java especficamente, entendemos que
usted posee el conocimiento necesario de temas como: objetos y clases. Haremos un breve recuento de
estos temas importantes antes de entrar en materia de anlisis.
Recordemos que una clase define a un conjunto de objetos que tienen un comportamiento similar, es
decir, las clases permiten crear un objeto a nivel abstracto y definir su comportamiento.
Algunos ejemplos relacionados con clases y que estn relacionados con la vida cotidiana son: vehculos,
animales y figuras.
Para definir una clase se debe tener en cuenta el nivel de abstraccin que tiene cada una de las mismas,
la abstraccin se la considera como agrupar objetos dentro de una clase.
Los elementos que debe tener una clase son: nombre de la clase, nombre de los atributos y los mtodos;
los conceptos de objeto y clase son paralelos e inseparables, siempre para hablar de uno se debe tener
en cuenta al otro.
Para reforzar los temas que se estudiarn en la presente unidad le invitamos a revisar el captulo o bloque
3 y 4 del recurso OCW de la UPM indicado en la bibliografa complementaria, en la cual encontrar temas
relacionados a objetos, clases, atributos, mtodos, herencia, interfaces.
Es importante revisar los temas relacionados a clases y constructores ya que a partir de stos podemos
empezar a revisar el tema de herencia.

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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

Tratando de representar a travs de un diagrama seria:


CLASE BASE
Atributo 1
Atributo 2

SUBCLASE 1

SUBCLASE 2

SUBCLASE 3

Atributo 1
Atributo 3

Atributo 4

Metodo 1

Metodo 2
Figura2.1: Representacin de Herencia

En la herencia existe una relacin es hijo de, es padre de, pertenece a.


Algunos ejemplos de clases, con sus relaciones lo pueden encontrar en el texto bsico, sin embargo es
necesario verificar el avance en la materia, para ello le invitamos a desarrollar los siguientes ejercicios.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

37

Gua didctica: Programacin Avanzada

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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);
}

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

39

Gua didctica: Programacin Avanzada


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73

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

En la siguiente representacin UML, identifique el nombre de la clase, atributos y mtodos.

40

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

PRIMER BIMESTRE

Gua didctica: Programacin Avanzada

Ejercicios 2.5

Represente el siguiente diagrama de clases en un programa en Java y aplique herencia.

Recuerde que al aplicar herencia el mtodo ObtenerDatosEstudiante debera presentar el nombre,


apellidos e identificacin en este caso de estudiante, de forma similar debera aplicar al utilizar el mtodo
ObtenerDatosEmpleado.
Espero que hasta este momento no vayan quedando pendientes dudas respecto al tema de programar
clases con sus atributos, mtodos y utilizar herencia, esto es muy importante puesto que para el tema
de polimorfismo que viene a continuacin se requiere conocer y aplicar correctamente herencia, les
invitamos a empezar a revisar el tema de polimorfismo.
Es indispensable que revise el recurso OCW de la Universidad del Pais Vasco, este le ayudar
en temas relacionados a herencia y polimorfismo, esperamos sea de gran ayuda para
complementar el estudio, especficamente puede revisar el mdulo 2 del recurso.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

41

Gua didctica: Programacin Avanzada

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

PRIMER BIMESTRE

Clase

Metodo

Operaciones

Condiciones

EstudiantePrimario

CalcularNotas

Primer Trimestre /20 +


Segundo Trimestre/20

No hay supletorio

EstudianteSecundario

CalcularNotas

PrimerTrimestre/20
+
Segundo Trimestre/20 +
Proyecto Final

Hay un Supletorio
Final por todo el curso

EstudianteUniversitario

CalcularNotas

Primer Bimestre /40 +


Segundo
Bimestre/40
+Participacion EVA

Hay Supletorio por


cada Bimestre

Figura 2.2: Representacin de Polimorfismo

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

Escriba 3 ejemplos de clases en los cuales pueda implementar polimorfismo.

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());

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

43

Gua didctica: Programacin Avanzada


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
39
40
41
42
43
44
45
46

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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.

2.3. Clases abstractas e interfaces


Hasta ahora hemos trabajado con clases, subclases, jerarqua de clases, lo que implica que a partir de una
clase padre se puede desprender una o varias subclases (clases hijas) lo contrario es cuando se trabaja
con clases asbstractas, las mismas que tal como se menciona en el texto bsico son clases a partir de las
cuales no se puede instanciar; si nos fijamos en lo ltimo que se menciona se podra indicar que una
clase abstracta siempre ser una superclase.
Para aclarar este tema le invito a retomar la lectura en el texto bsico.
Revise el texto bsico el captulo relacionado a polimorfismo y ejemplos programados en java.
Subtemas a estudiar:
-
Clases y mtodos abstractos
-
Ejemplos prcticos creacin y uso de interfaces

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.

Figura 2.3: Representacin Clases Abstractas

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

45

Gua didctica: Programacin Avanzada

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

//nombre del paquete sobre el cual se generar sus programas java


package ec.edu.utpl.unidad2.objetos;

public class Main

public static void main(String[] args)

//creacin del objeto para manejar la clase


Triangulo t= new Triangulo(4,5,2,1);

System.out.print(El area del tringulo es: + t.GetArea());

8
9

10

abstract class Figura

11

12

//Atributos

13

protected int X1;

14

protected int Y1;

15

//Constructor

16

public Figura (int X, int Y){

17

this.X1 = X;

18

this.Y1 = Y;

19

20

//Metodo Abstracto

21

public abstract double GetArea();

22

23

class Triangulo extends Figura

24

25

private double base;

26

private double altura;

27

public Triangulo(int X, int Y, double b, double a){

28

46

//llamada al contructor de la clase padre

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

PRIMER BIMESTRE

29

super(X,Y);

30

this.base= b;

31

this.altura= a;

32

33

public double GetArea(){

34

return (this.base * this.altura)/2;

35

36

37

class Cuadrado extends Figura

38

39

private double lado;

40

public Cuadrado(int X, int Y, double l){

41

//llamada al contructor de la clase padre

42

super(X,Y);

43

this.lado = l;

44

45

public double GetArea(){

46
47

return (Math.pow(lado, 2));

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:

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

47

Gua didctica: Programacin Avanzada

PRIMER BIMESTRE

Figura 2.4: Representacin Clases y Mtodos Abstractos

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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

Mencione la diferencia existente entre: clases, clases abstractas, herencia, interfaces.

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.

2.4. UML: Diagramas de clase y secuencia


Cuando desarrollemos software una de las tareas importantes especialmente cuando se trabaja con
POO es poder identificar, modelar y ubicar correctamente las clases que se utilizan en dicho proyecto,
de ah que los diagramas de clases se transforman en el diagrama principal para el anlisis y diseo ya
que en l se presenta las clases del sistema con sus relaciones estructurales y de herencia (si fuera el
caso), as como la definicin para atributos y mtodos que se vayan a implementar dentro de cada una
de las clases. De alguna manera en las representaciones de clases que utilizamos para herencia hemos
empezado a utilizar dicho modelamiento, sin embargo pongo a conocimiento de Ud. que para dicho
modelamiento existen por lo general herramientas que ya permiten realizar el diseo.
Tal como su nombre lo indica un diagrama es una representacin grafica de las relaciones que existirn
entre cada una de las clases objeto del sistema o aplicativo que se desea elaborar.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

49

Gua didctica: Programacin Avanzada

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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

Uno y solo uno

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

51

Gua didctica: Programacin Avanzada

PRIMER BIMESTRE

Como parte de nuestro estudio no vamos a profundizar en temas de representacin de diagramas de


clase como mencionamos anteriormente, nos queda por representar la agregacin y composicin, le
invitamos a que haga referencia a la bibliografa bsica o complementaria para poder completar el
trabajo que se ubica en el siguiente ejercicio.

Ejercicio 2.11

Realice la representacin con diagramas de clase de los temas correspondientes a agregacin y


composicin, represntelos utilizando ejemplos de clases.
Para poder finalizar el tema relacionado a la diagramacin UML revisemos los diagramas de secuencia
que a diferencia de los de clase muestran la forma en la cual los objetos se comunican a lo largo de una
lnea de tiempo, es decir, estos diagramas permiten: visualizar los objetos y su interaccin, la secuencia
de los mensajes que se envan entre cada uno de ellos y describen el orden temporal de los distintos
entes que tienen relacin en un desarrollo de software.
Por lo general los diagramas de secuencia (DDS) se trabajan conjuntamente con los diagramas de caso
de uso, los mismos que se estudiarn en asignaturas posteriores relacionadas a temas de ingeniera de
software, sin embargo se tratar de explicar los DDS y sus elementos, dentro de los cuales destacan:
objetos, mensajes y tiempo.
Los mensajes pueden ser de varios tipos:
Sincrnico:
El que emite el mensaje espera que la activacin del mtodo destino finalice antes
de continuar su actividad.
Asincrnico:
destino.
De retorno:

El que emite el mensaje no espera el trmino de la activacin invocada por el

Devuelve el resultado de la operacin.

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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.

Un objeto de una clase puede ser objeto de otra clase.

( )

2.

Los miembros pblicos son accesibles solo desde la clase que los crea

( )

3.

Los constructores de una clase se heredan.

( )

4.

En la herencia simple una clase se deriva de una superclase directa.

( )

5.

Una relacin es un representa el polimorfismo.

( )

6.

Una relacin tiene un representa la herencia.

( )

7.

Los miembros private de una superclase son accesibles dentro de la declaracin de la superclase.

( )

8.

Se pueden crear objetos a partir de una clase abstract.

( )

9.

Se pueden declarar variables de tipo abstract.

( )

10.

Una interfz se utiliza en lugar de una clase abstract.

( )

Resuelva la siguiente parte prctica


A)
1.
Crear la estructura en UML y luego programe en java lo siguiente:
a.

Clase Padre (Persona)


i.
II.

b.

Clase Alumno (Hijo 1)


i.
ii.

c.

Atributos: Cedula, Nombre, Direccion Telefono


Mtodos: Obtener Cedula, Modificar Nombres, Presentar Info.

Atributs: Arreglo de Notas


Mtodos: Ingresar Notas, Mostrar Notas.

Clase Profesor (Hijo 2)


i.
ii.

Atributos: Arreglo de Asignaturas, Horario


Mtodos: Ingresar Profesor, Mostrar Profesor

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

53

Gua didctica: Programacin Avanzada

PRIMER BIMESTRE

UNIDAD III: INTERFZ GRFICA DE USUARIO


Cuando se desarrolla software con cualquier lenguaje de programacin algo fundamental que no
puede faltar es una interfaz grfica de usuario conocida tambin como GUI, la cual permite al usuario
interactuar con el sistema y poder llevar a cabo las operaciones y funcionalidades que tiene el mismo.
Algo caracterstico de las GUI es que tienen que ser amigables, fcil manipulacin y uso, es por ello que
luego de conocer cmo definir y crear clases es hora de dar una buena imagen a nuestro software.

3.1. Elementos de la GUI


Los elementos principales de una GUI generalmente son las etiquetas, botones, cajas de texto, listas,
combobox, paneles, entre otros, cabe indicar que cuando trabajamos con java y con un ide superior al 5
tenemos incorporado la posibilidad de crear aplicaciones windows o web a travs de los cuales es fcil
poder agregar los componentes que necesite para su aplicacin en un panel con tan solo arrastrar los
componentes con el mouse al panel deseado.

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

PRIMER BIMESTRE

Gua didctica: Programacin Avanzada

mantener un estndar de programacin y as mantener un cdigo organizado a nivel de diseo y porque


no decirlo a nivel de programacin.

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:
-

Subtemas a estudiar manejo de eventos, como funciona el manejo de eventos.

3.4. Reutilizacin de GUI


La reutilizacin de GUI, est enfocada a cmo una interfz puede ser utilizada de varias formas, por
ejemplo un panel lo podramos reutilizar cuando se haga un registro de personal, estudiantes o ingreso
de productos, un men de opciones, entre otros. Hay muchos mbitos en los cuales se puede utilizar
la reutilizacin de GUI, solo la prctica y el entender como est organizada las clases de GUI permitirn
identificar de mejor manera estos temas.
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 con toda libertad y
responsabilidad, recuerde que sta autoevaluacin al igual que las anteriores tiene solucionario para la
parte objetiva la misma que se encuentra al final de esta gua. xitos!

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

55

Gua didctica: Programacin Avanzada

PRIMER BIMESTRE

Autoevaluacin 3
1.

Conteste a las siguientes interrogantes utilizando una V si es Verdadero o una F si es Falso.

1.

Los componentes en GUI tambin se los conoce como controles o widgets.

( )

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.

Uno de los eventos de JButton es getSelectedIndex.

( )

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.

( )

Se puede ubicar men y submen al trabajar con GUI.

( )

4.
5.

2.

Resuelva la siguiente parte prctica

Desarrolle el siguiente programa utilizando GUI


A)

( )

( )

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:
-
-
-
-
-
-
-
-
-

identificacion (Caja de Texto)


Nombres (Caja de Texto)
Apellidos (Caja de Texto)
Fecha Nacimiento
Sexo (Combobox desplegable, M y F)
Tipo de Sangre (Combobox desplegable, al menos 4 tipos de sangre)
Boton Limpiar (Limpie los campos o inicialice los mismos)
Boton Cancelar (Similar a limpiar)
Boton Guardar (Almacena la informacin en el arreglo o archivo)

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

SEGUNDO BIMESTRE

SEGUNDO BIMESTRE
6.5. Competencias genricas

Capacidad de abstraccin, anlisis y sntesis.

Capacidad de aplicar los conocimientos en prctica.

Habilidades para buscar, procesar y analizar informacin procedente de fuentes diversas.

Capacidad crtica y auto crtica.

Capacidad para identificar, plantear y resolver problemas.

Capacidad creativa e innovadora.

6.6. Planificacin para el trabajo del alumno


COMPETENCIAS
ESPECFICAS
Habilidad para
solucionar
y optimizar
problemas de
programacin.
Capacidad
para gestin y
recuperacin de la
informacin.
Habilidad para
administracin
de bases de datos
empresariales.
Desarrollo de
programas para
la resolucin de
problemas de nivel
intermedio.

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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

57

Gua didctica: Programacin Avanzada

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

6.1 Conexiones a base


de datos
6.2 Ejecucin de
sentencias CRUD

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

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

La Universidad Catlica de Loja

4 horas de
interaccin

8 horas de
interaccin

Gua didctica: Programacin Avanzada

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

8 horas de
interaccin

La Universidad Catlica de Loja

59

Gua didctica: Programacin Avanzada

SEGUNDO BIMESTRE

6.7. Orientaciones especficas para el aprendizaje por competencias

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.

UNIDAD IV: ESTRUCTURA DE DATOS AVANZADOS


Antes de adentrarnos en el estudio de las estructura de datos avanzados, se debe mencionar la
importancia que tienen las mismas dentro de la vida diaria de un programador; estas ayudan a organizar
la informacin de una forma ordena y sencilla. Le invitamos a revisar la gua didctica junto al texto
bsico para que usted vaya fortaleciendo el conocimiento de estructura de datos avanzados.
El manejo de datos dentro de una aplicacin es una actividad que comunmente se suele hacer, ya que
ayuda a mantener un orden de datos. Las estructuras de datos tienen una relacin estrecha entre tiempo
de ejecucin del procesador y uso de memoria. Es muy importante definir qu tipo de estructura es la
que se va a utilizar, ya que dentro de Java existen un sin nmero que ayudan a resolver determinados
problemas; depender de las necesidades del desarrollador para escoger la estructura adecuada para
resolver los problemas.
Entre las principales estructuras de datos que tiene java estn las API Collections, dispongmonos a
revisarlas.

4.1. Estudio de API Collections


Las API Collections estn divididas en 3 tipos de colecciones: listas, conjuntos y mapas, las cuales se
menciona a continuacin.
Un conjunto contiene elementos nicos, es decir; no acepta elementos duplicados.
Una lista acepta elementos duplicados. La forma de recorrer es a travs de un ndice, el
mismo que inicia en cero (0).
Un mapa a diferencia de los conjuntos y listas; almacenan una llave o clave y estos son
asociados a un valor.
El uso de cada una de ellas depender en gran medida del problema que se va a resolver; generalmente
este API se encuentra en el paquete java.util. y para su uso se debe importar mismo.

60

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

SEGUNDO BIMESTRE

Revise en el texto bsico el captulo relacionado a colecciones.


Subtemas a estudiar:
-
Generalidades acerca de las colecciones.
- Listas.
- Conjuntos.
- Mapas.

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

A qu definimos como objeto Set y objeto Map? Cal es su principal diferencia?

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

public class TestSet {

6
7

public static void main(String arg[]){

HashSet personSet = new HashSet();

personSet.add(Pedro);

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

61

Gua didctica: Programacin Avanzada

SEGUNDO BIMESTRE

10

personSet.add(Sergio);

11

personSet.add(Juan);

12

personSet.add(Sergio);

13

for (Object personName : personSet) {

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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

public class TestSet{

6
7

public static void main(String arg[]){

HashSet<String> personSet = new HashSet<String>();

personSet.add(Pedro);

10

personSet.add(Sergio);

11

personSet.add(Juan);

12

personSet.add(Sergio);

13

for (String personName : personSet) {

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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

63

64

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

System.out.println(personName);

14

La Universidad Catlica de Loja

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);

for (String personName : personSet) {

personSet.add(Sergio);

personSet.add(Juan);

personSet.add(Sergio);

personSet.add(Pedro);

HashSet<String> personSet = new HashSet<String>();

public static void main(String arg[]){

public class TestSet{

import java.util.HashSet;

package ec.edu.utpl.unidad4.collections;

Cdigo B

17

16

for (Object personName : personSet) {

13

15

personSet.add(Sergio);

12

personSet.add(Sergio);

10

personSet.add(Juan);

personSet.add(Pedro);

11

HashSet personSet = new HashSet();

public static void main(String arg[]){

public class TestSet {

import java.util.HashSet;

package ec.edu.utpl.unidad4.collections;

Cdigo A

Resumen:
Gua didctica: Programacin Avanzada
SEGUNDO BIMESTRE

Gua didctica: Programacin Avanzada

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

public class TestList {

7
8

public static void main(String arg[]) {

List<String> personList = new ArrayList<String>();

10

personList.add(Sergio);

11

personList.add(Pedro);

12

personList.add(Sergio);

13

personList.add(Angelica);

14
15

for (String string : personList) {

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:

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

65

Gua didctica: Programacin Avanzada

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

public class TestMap {

6
7

public static void main(String arg[]) {

8
9

HashMap<Integer,String> personMap = new HashMap<Integer,String>();

10

personMap.put(1, Sergio);

11

personMap.put(2, Pedro);

12

personMap.put(3, Sergio);

13

personMap.put(4, Angelica);

14

for (int index = 0; index < personMap.size(); index++) {

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

SEGUNDO BIMESTRE

Gua didctica: Programacin Avanzada

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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

67

Gua didctica: Programacin Avanzada

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

public class Generics {

7
8

public static void main(String arg[]) {

9
10

List personList = new ArrayList();

11

personList.add(new Employee(1L, Joaquin, Lopez));

12

personList.add(new Person(3L, Pedro, Miroslav));

13

personList.add(new Student(5L, Boris, Valarezo));

14

personList.add(new Person(10L, Angelica, Gomez));

15
16

for (Object object : personList) {

17

Person person = (Person) object;

18

System.out.println(person.getName());

19

20
21

68

}
}

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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

public class Generics {

7
8

public static void main(String arg[]) {

9
10

List<Person> personList = new ArrayList<Person>();

11

personList.add(new Employee(1L, Joaquin, Lopez));

12

personList.add(new Person(3L, Pedro, Miroslav));

13

personList.add(new Student(5L, Boris, Valarezo));

14

personList.add(new Person(10L, Angelica, Gomez));

15
16

for (Person person : personList) {

17

System.out.println(person.getName());

18

19
20

}
}

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

69

Gua didctica: Programacin Avanzada

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

En base a la siguiente clase:


public class Person {
private Long id;
private String name;
private String lastname;
public Person(Long id, String name, String lastname){
this.id=id;
this.name=name;
this.lastname=lastname;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getLastName() {
return lastname;
}
public void setLastName(String lastName) {
this.lastname = lastName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

70

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

SEGUNDO BIMESTRE

Desarrollar un programa usando la coleccin Lista tomando en cuenta el concepto de generics o


genrico.

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.

4.3. APIs de Consulta


Ahora revisaremos las principales caractersticas que posee todo elemento o coleccin dentro de una
estructura de datos, como por ejemplo: usar los mtodos disponibles que ofrece cada uno de ellos para
realizar consultas tales como:
-
-
-
-

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

public class ApiTest{

7
8

public static void main(String arg[]) {

List<String> personList = new ArrayList<String>();

10

personList.add(Sergio);

11

personList.add(Pedro);

12

personList.add(Sergio);

13

personList.add(Angelica);

14

//buscando un especifico elemento

15

boolean flag = personList.contains(Pedro);

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

71

Gua didctica: Programacin Avanzada

SEGUNDO BIMESTRE

16

//recuperando el tamao de la lista

17

int size = personList.size();

18

//Presentacion del tamao

19

System.out.println(The size list is + size);

20

if (flag == true) {

21

System.out.println(Element found);

22

} else {

23

System.out.println(Element not found);

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 aplicacin desarrollada en el ejercicio 4.3. Agregue la funcionalidad de buscar una


persona en base a su nombre, apellido o identificador.

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.

Realizar la bsqueda de los turnos de una cooperativa de transporte y mostrar cuantos


turnos tienes, mostrar la lista de turnos; el resultado debe ser almacenado en otro archivo
llamado salidas.txt.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

SEGUNDO BIMESTRE

El formato de salida.txt es el siguiente para la Cooperativa Loja.


Cooperativa Loja

Tiene 15 salidas

Loja-Quito-22H00
Loja-Guayaquil-21H00
Loja-Macara-15H00

La estructura del archivo turnos.txt es el siguiente:


Cooperativa;Destino;Hora-Salida
Loja;Quito;22H00

Santa; Quito;15H00

Loja;Guayaquil;02H00
Cital;Piura;22H00

San Luis;Cuenca;02H00

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

73

Gua didctica: Programacin Avanzada

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.

Un mapa es una secuencia de elementos almacenados.

3.

A partir de la versin de Java 1.4, existe el manejo de genricos.

4.

5.

La ventaja principal de un arraylist frente un array, es la de crecer de forma dinmica en cuanto


a su tamao.
A partir de la versin 5 de Java existe el termino autoboxing.

6.

Una lista es una asociacin de una llave (key) y un objeto (object).

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.

Resuelva la siguiente parte prctica


A:

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.

El fracaso consiste en no persistir, desanimarse despus de un error,


en no levantarse despus de caer.
Thomas Edison.

74

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

SEGUNDO BIMESTRE

UNIDAD V: EXPRESIONES REGULARES EN JAVA


Hemos llegado a la unidad 5, es ahora cuando debe esforzarse un poco ms ya que estamos a unos
cuantos pasos de llegar a la meta.
En esta unidad abarcaremos temas como: expresiones regulares y su funcin dentro de una aplicacin.
El tema de expresiones regulares no es algo nuevo dentro del mbito de programacin, ya que estas se
vienen utilizando en casi todos los lenguajes tales como: python, awk, perl, entre otros. Una expresin
regular, a menudo llamada tambin patrn, es una expresin que describe un conjunto de cadenas sin
enumerar sus elementos.
Comnmente, todos los que estamos inmersos en la tecnologa las usamos, por ejemplo, cuando se
quiere obtener el listado de archivos que estn dentro de un determinado directorio. Por ejemplo si
usamos unix, gnu/Linux colocamos el siguiente comando: ls *.doc, este nos ayudar a visualizar los
archivos que tengan la extensin doc.
Otro ejemplo puede ser al eliminar los archivos temporales de nuestro sistema operativo, para lo cual
utilizamos: rm fr *.tmp.
Las expresiones regulares en Java, aparecieron por primera vez en la versin Java 1.4 con el paquete java.
util.regex que contiene algunas clases que permiten el manejo o manipulacin de patrones. Dentro de la
programacin esto ayuda a validar cadena de caracteres. Por ejemplo, validar una fecha de nacimiento
en formato YYYY/MM/DD o validar un email.

5.1. Expresiones regulares en Java


Como se coment anteriormente, las expresiones regulares hicieron su aparecimiento en java en la
versin 1.4 haciendo que este lenguaje sea verstil tal como lo es python, perl y otros.
El paquete java.util.regex esta compuesto por dos clases: la clase Matcher y la clase Pattern y por una
excepcin, PatternSyntaxException.
La clase Matcher es un tipo de objeto que se crea a partir de un patrn mediante la invocacin del
mtodo Pattern.matcher. Este objeto es el que nos permite realizar operaciones sobre la secuencia de
caracteres que se desea validar o la en la secuencia de caracteres en la que se desea buscar.
Por lo tanto tenemos patrones que deben ser compilados, a partir de estos creamos objetos Matcher
para poder realizar las operaciones sobre la cadena en cuestin.
Las expresiones regulares son muy utiles a la hora de validar campos, es por ello que iniciaremos con
expresiones sencillas como por ejemplo:

[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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

75

Gua didctica: Programacin Avanzada

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

Cul es la diferencia entre el mtodo match de la Clase Pattern y la Clase Matcher?

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

SEGUNDO BIMESTRE

Cul es la diferencia entre el cuantificador {n} y el cuantificador {n,m}?.

5.2. Validaciones con expresiones regulares


Hemos superado el estudio de patrones y expresiones regulares, las mismas que ud. las ha revisado en
la bibliografa bsica y complementaria, ahora revisemos el tema correspondiente a las validaciones de
expresiones regulares con Java.
Para validar expresiones regulares en java se debe utilizar las clases Pattern y Matcher. En el siguiente
ejemplo tomaremos en cuenta la validacin de una fecha que tenga el siguiente formato YYYY-MM-DD;
se tomar en cuenta solo aquellas fechas que estn dentro del ao 2010.
Cdigo en Java: 5A
1

package ec.edu.utpl.unidad5.pattern;

2
3

import java.util.regex.Matcher;

import java.util.regex.Pattern;

5
6

public class EjemploPatrones {

7
8

public static void main(String arg[]) {

Pattern expression = Pattern.compile(2010-(0[1-9]|[1-9]|1[012])-([0][1-9]|[1|2][0-9]|3[01]));

10

//Validate dates in format 2010-dd-dd

11

String test = 2010-15-55\n + 2010-4-27;

12

Matcher matcher = expression.matcher(test);

13

while (matcher.find()) {

14

System.out.println(matcher.group());

15

16
17

}
}

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

77

Gua didctica: Programacin Avanzada

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

public class Replace {

7
8

78

public static void main(String arg[]){

Pattern expresion = Pattern.compile(zepolar);

10

String test = the zepolar is the nickname of Alexander Lopez;

11

Matcher matcher = expresion.matcher(test);

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

79

Gua didctica: Programacin Avanzada

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:
-

La cedula debe ser numrica en el formato 1105064985

El correo electrnico debe ser el institucional de la utpl.edu.ec

El formato del archivo agenda.txt es el siguiente:


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.

El caso de no cumplirse con la validacin el usuario no ser cargado en la estructura.

Bien, hemos finalizado el estudio de la presente unidad, le invitamos a desarrollar la autoevaluacin, la


misma que tiene como finalidad poner a prueba los conocimientos adquirios hasta este instante.

80

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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.

La siguiente expresin regular [0-9] equivale a decir [0123456789].

( )

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.

La siguiente expresin regular ^EC-[0-2]{2}-[0-9]{2}-[0-9]{3} validar correctamente el siguiente


valor EC-11-01-608

( )

7.

La siguiente expresin de caracteres predifinida \d es similar a decir [^0-9]

( )

8.

Cuando en programacin java se usa Pattern.compile(,Pattern.CASE_INSENSITIVE), significa


que se a activado la bandera de sensibilidad de maysculas y minsculas.

( )

9.

La siguiente expresin regular [a-z]?[a-z]?lopez$, validara correctamente valores como jalopez,


ralopez, raslopez.

( )

10.

El siguiente conjunto de simbolos es un metacaracter ^, que lo que hace es validar la iniciacin


de una expresin regular.

( )

Para la ejecucin de las expresiones regulares, se puede ayudar del siguiente recurso web:

http://www.fileformat.info/tool/regex.htm

Resuelva la siguiente parte prctica


A)

Cree una clase utilitario que permita validar:


-
-
-

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

81

Gua didctica: Programacin Avanzada

SEGUNDO BIMESTRE

UNIDAD VI: LA ACCIN MISIONERA. UNIDAD VI: CONECTIVIDAD JDBC


Antes de iniciar con el estudio de conectividad JDBC, debemos tener claro algunos trminos que
abarcaremos en esta unidad tales como:

Base de Datos: Es una coleccin organizada de datos.

JDBC: Tambin conocida como Java Database Conectivity.

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.

6.1. Conexiones base de datos


Una vez revisado el texto bsico, se tendr una visin mucho ms clara de lo que es una base de datos y
las operaciones que comnmente se suele ejecutar.
Para realizar conexiones a las base de datos primero debemos definir que JDBC vamos usar, puesto
que bases de datos relaciones como Postgres, MySQL tienen sus propias libreras las mismas que son
facilitadas por su casa comercial. Para nuestro caso usaremos el JDBC de MySQL, el mismo que lo
podemos descargar de la propia pgina de MySQL.
A continuacin se muestra la importacin de las libreras necesarias para lograr una conexin a la base
de datos.
1

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;

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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

public class Mysql {

13
14

private Connection con;

15

private PreparedStatement stmt;

16
17

public Mysql() {

18

String sDriver = com.mysql.jdbc.Driver;

19

String sURL = jdbc:mysql://192.168.1.3:3306/cms;

20

try {

21

con = null;

22

Class.forName(sDriver).newInstance();

23

con = (Connection) DriverManager.getConnection(sURL, root, ibmlnx);

24

} catch (Exception e) {

25

Logger.getLogger(Mysql.class.getName()).log(Level.SEVERE, null, e);

26
27
28

}
}

29
30
31
32

public void closeConection() {


try {
con.close();

33
34
35

} catch (SQLException ex) {


Logger.getLogger(Mysql.class.getName()).log(Level.SEVERE, null, ex);

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

83

Gua didctica: Programacin Avanzada


36
37

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

SEGUNDO BIMESTRE

6.2. Ejecucin de Sentencias CRUD


Luego de haber revisado la unidad de conexin a base de datos a travs de los drives JDBC, podemos
continuar con el desarrollo del siguiente tema.
En esta seccin revisaremos las sentencias/operaciones que comnmente se suele utilizar cuando se
trabaja con una base de datos. El termino CRUD significa: Create, Read, Update y Delete.
Las mismas que se detallan en la siguiente tabla:
Operacin

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

public void selectOperation() throws SQLException, Exception {


if (con != null) {
stmt = con.prepareStatement(SELECT title, resume, body, creationDate, modificationDate
from CONTINGUT);

51

ResultSet rs = stmt.getResultSet();

52

int count = 0;

53

while (rs.next()) {

54

String titleVal = rs.getString(title);

55

String resumeVal = rs.getString(resume);

56

String creationVal = rs.getString(creationDate);

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

85

Gua didctica: Programacin Avanzada


57

SEGUNDO BIMESTRE

System.out.println(

58

title = + titleVal

59

+ , resume = + resumeVal

60

+ , creationDate = + creationVal);

61

++count;

62

63

rs.close();

64

System.out.println(count + rows were retrieved);

65

} else {

66

throw new Exception(Error);

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();

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

SEGUNDO BIMESTRE

81

return true;

82

} catch (SQLException ex) {

83

Logger.getLogger(Mysql.class.getName()).log(Level.SEVERE, null, ex);

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

public boolean updateOperation(String title, String resume) {

89

try {

90

stmt = con.prepareStatement(UPDATE CONTINGUT set title=? where resume=?);

91

stmt.setString(1, title);

92

stmt.setString(2, resume);

93

stmt.executeUpdate();

94

return true;

95

} catch (SQLException ex) {

96

Logger.getLogger(Mysql.class.getName()).log(Level.SEVERE, null, ex);

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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

87

Gua didctica: Programacin Avanzada

SEGUNDO BIMESTRE

Ejemplo Delete:
101

public boolean deleteOperation(String title) {

102

try {

103

stmt = con.prepareStatement(DELETE FROM CONTINGUT WHERE title=?);

104

stmt.setString(1, title);

105

stmt.executeUpdate();

106

return true;

107

} catch (SQLException ex) {

108

Logger.getLogger(Mysql.class.getName()).log(Level.SEVERE, null, ex);

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 a la conexin a la base de datos PostgreSQL, realice operaciones de INSERT/UPDATE/


DELECT/SELECT. Para ello deber crear una base de datos llamada TestJDBC y crear una tabla USER
que contenga los siguiente datos: ID, LASTNAME, EMAIL.

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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.

Las operaciones que el JDBC permite realizar son:


Recuperar Informacin
Conectar a una base de datos relacional
Procesar informacin

7.

El JDBC puede ser utilizado tanto en aplicaciones escritorio as como tambin en aplicaciones
web.

8.

El Api de programacin de Java dentro de la librera java.sql me permite habilitar o deshabilitar


el autocommit para el manejo de la transaccionalidad de la base.

9.

Dentro de un JDBC se puede invocar a procedimientos almacenados (store procedure) dentro


de la base de datos.

10.

Dentro de la clasificacin de los JDBC existen 4 tipos, siendo el tipo 4 el ms nativo.

Resuelva la siguiente parte prctica


A)
B)

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.

Es duro fracasar en algo, pero es mucho peor no haberlo


intentado
Mensajes de nimo.

Ir a solucionario

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

89

Gua didctica: Programacin Avanzada

SEGUNDO BIMESTRE

UNIDAD VII: PROGRAMACIN MULTI-TAREA


Felicitaciones! ya falta poco para terminar el estudio de la presente asignatura, hemos llegado hasta
aqu luego de mucho esfuerzo y sacrificio.
En la presente unidad incursionaremos en el mundo de la programacin multi-hilo o multi-tarea.
Desde la aparicin de los sistemas operativos multi-usuarios y multi-tarea se ha introducido en los
lenguajes de programacin la caracterstica multi-tarea.
Multitarea es la capacidad de ejecutar varios procesos de forma simultnea. En Java, la implementacin
de multitarea se la puede hacer a travs de dos formas: la primera es la utilizacin de la clase Thread ya
sea instanciando un objeto o heredando atributos de la clase y la segunda forma es el uso de la interface
llamada Runnable.
Le invitamos a leer el texto bsico para reforzar cada uno de los temas tratados, no olvide tomar nota de
los temas ms relevantes. Recuerde que el profesor/tutor le ayudar a despejar las dudas que tenga en
relacin a los temas estudiados.
Revise en el texto bsico el captulo relacionado al subprocesamiento mltiple.
Subtemas a estudiar:
- Introduccin
-
Estados de los subprocesos

7.1. Subprocesamiento Mltiple


En base a la lectura del texto bsico se puede mencionar que el crear aplicaciones con multiprocesamiento
puede ser una tarea complicada pero no imposible de realizar. Cada proceso tiene una prioridad la que
demanda el uso de recursos importantes de memoria y procesador.
El hablar de multitarea en Java hace que sus caractersticas pueden ser manejadas de acuerdo al punto
de vista del programador. Un ejemplo clsico de procesamiento mltiple es el cerebro, un rgano que
puede enviar mltiples ordenes a nuestro cuerpo para escuchar mientras observamos al interlocutor.

7.2. Estado de los procesos


Los seres humanos tenernos un ciclo de vida que debemos cumplir: nacer, crecer, reproducirse y morir.
De igual forma un proceso dentro de un sistema operativo o proceso programado mediante un lenguaje
de programacin de alto nivel tiene un ciclo que debe cumplir:

90

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

SEGUNDO BIMESTRE

Figura 7.1 Ciclo de Vida Hilo


Fuente: Tutorial Java

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

7.3. Creacin y ejecucin de subprocesos


Tal como se explic al inicio de la presente unidad existen 2 formas conocidas para la creacin de
subprocesos en Java. La utilizacin de la clase Thread y la interface Runnable esta ltima la trataremos
ms adelante.
La creacin de hilos a travs de la clase Thread, tiene un mtodo llamado run que puede o no ser sobreescrito, es decir colocar lgica de programacin.
Cdigo en Java: 7A
1

package ec.edu.utpl.unidad7.thread;

2
3

public class ThreadExample extends Thread {

4
5

public ThreadExample(String str) {

6
7

super(str);
}

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

91

Gua didctica: Programacin Avanzada


9

@Override

10

public void run() {

11

SEGUNDO BIMESTRE

for (int i = 0; i < 2; i++) {

12

System.out.println(i + + getName() + id + getId());

13

14

System.out.println(thread finish + getName());

15

16
17

public static void main(String[] args) {

18

ThreadExample mich = new ThreadExample(Michael);

19

mich.setPriority(MIN_PRIORITY);

20
21

ThreadExample pet = new ThreadExample(Peter);

22

pet.setPriority(MAX_PRIORITY);

23
24

pet.start();

25

mich.start();

26
27

System.out.println(thread main finish);

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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

7.4. Interfaz runnable


Anteriormente se trat el tema de creacin de hilos con la clase Thread, la misma que es sencilla, la
diferencia que existe entre Runnable y Thread es que runnable al ser una interface el procedimiento run
debe ser obligatorio para cada clase donde se implemente la misma.
A continuacin un ejemplo aplicando Runnable:

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

public class RunnableExample implements Runnable {

12
13

public void run() {

14

for (int i = 0; i < 2; i++) {

15

System.out.println(i );

16

17

System.out.println(thread finish );

18

19
20

public static void main(String[] args) {

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

93

Gua didctica: Programacin Avanzada

SEGUNDO BIMESTRE

21
22

RunnableExample runnable = new RunnableExample();

23
24

Thread mich = new Thread(runnable);

25

mich.setPriority(Thread.MIN_PRIORITY);

26

mich.setName(Michael);

27

mich.start();

28
29

Thread pet = new Thread(runnable);

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

SEGUNDO BIMESTRE

Gua didctica: Programacin Avanzada

Revise en el texto bsico el captulo relacionado al subprocesamiento mltiple.


Subtemas a estudiar:
-
Interfaz runnable

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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

95

Gua didctica: Programacin Avanzada

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.

Para cambiar al estado de dormido a un hilo, se debe usar el mtodo sleep.

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.

La declaracin de un hilo es como sigue:


Runnable runnable = new Runnable().

10.

El orden de ejecucin de hilos, determinar el orden de ejecucin de los hilos.

Resuelva la siguiente parte prctica


A)
B)
C)

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.

Nunca se ha logrado nada sin entusiasmo.


Emerson.
Ir a solucionario

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

SOLUCIONARIO

7. Solucionario
Autoevaluacin 1
Pregunta

Respuesta

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

97

Gua didctica: Programacin Avanzada

SOLUCIONARIO

Autoevaluacin 2

98

Pregunta

Respuesta

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

SOLUCIONARIO

Autoevaluacin 3
Pregunta

Respuesta

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

99

Gua didctica: Programacin Avanzada

SOLUCIONARIO

Autoevaluacin 4
Pregunta

Respuesta

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

V
Solucin Parte Ensayo

A9

Solucion 1

Cdigo Fuente: Clase Person


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

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;
}

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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

public Integer getDni() {


return dni;
}
public void setDni(Integer dni) {
this.dni = dni;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return Person{ + dni= + dni + lastname= + lastname + name= + name + };
}
}

Cdigo Fuente: Problema List Person


1
2
3
4
5
6
7
8
9
10
11
12
13
14

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;

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

101

Gua didctica: Programacin Avanzada


15
16
17
18
19
20
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
51
52
53
54
55
56
57
58
59
60
61

102

SOLUCIONARIO

//Declaracion de variables, necesarias para asignar


//los atributos al objeto person
Integer dni;
String name;
String lastname;
String option = n;
//Inicio de estructura ciclica do-while
do {
System.out.println(Menu);
System.out.println(1) Add user);
System.out.println(2) List users);
System.out.println(3) Quit);
//Lectura desde teclado a traves de la Clase Scanner
Scanner scan = new Scanner(System.in);
//asignacion de la lectura del teclado
//Revisar API Clase Scanner
option = scan.next();
switch (option.charAt(0)) {
case 1:
//Creacion del objeto person
person1 = new Person();
System.out.print(Enter user id\t);
//lectura de teclado, recibir un parametro del tipo entero
dni = scan.nextInt();
//envio de parametro dni al objeto person a traves del metodo set del objeto
person1.setDni(dni);
System.out.print(Enter name\t);
//lectura de teclado, recibir parametro del tipo string.
name = scan.next();
//envio de parametro name al objeto person a traves del metodo set del objeto
person1.setName(name);
System.out.print(Enter lastname\t);
//lectura de teclado, recibir parametro del tipo string
lastname = scan.next();
//envio de parametro lastname al objeto person a trabes de metodo set del objeto
person1.setLastname(lastname);
//se agrega el objeto person a la coleccion, sin antes
//preguntar. Si metodo add devuelve true, la operacion se
//realizo con exito. Si devuelve false, la operacion no se ejecuto con exito.
if (personList.add(person1)) {
System.out.println(User added with successful);
} else {
System.out.println(Error);
}
System.out.println(person1.toString());
break;
case 2:

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

SOLUCIONARIO

62
63
64
65
66
67
68
69
70
71
72
73

//Recorrido de la coleccion, para ello usamos el foreach.


for (Person person : personList) {
System.out.println(person.getDni()+\t+person.getName()+\t+person.getLastname());
}
break;
case 3:
option=s;
break;
}
} while (option.charAt(0) != s);
}
}

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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

103

Gua didctica: Programacin Avanzada

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)

Problema Hashmap Person


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
39
40
41
42
43

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);

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

105

Gua didctica: Programacin Avanzada

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

SOLUCIONARIO

Autoevaluacin 5
Pregunta

Respuesta

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

Solucin Parte Ensayo a la Clase Utilitario


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.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){

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

107

Gua didctica: Programacin Avanzada


24
25
26
27
28

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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);
}
}

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

109

Gua didctica: Programacin Avanzada


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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

110

SOLUCIONARIO

public void closeConection() {


try {
con.close();
} catch (SQLException ex) {
System.out.println(Error base de datos);
}
}
public boolean saveOperation(String title, String resume, String author) {
try {
stmt = con.prepareStatement(INSERT BOOK (title, resume, author)
+ VALUES (?,?,?));
stmt.setString(1, title);
stmt.setString(2, resume);
stmt.setString(3, author);
stmt.executeUpdate();
return true;
} catch (SQLException ex) {
System.out.println(Error Operacoin Insert);
}
return false;
}
public boolean updateOperation(String title, String resume) {
try {
stmt = con.prepareStatement(UPDATE BOOK set title=? where resume=?);
stmt.setString(1, title);
stmt.setString(2, resume);
stmt.executeUpdate();
return true;
} catch (SQLException ex) {
System.out.println(Error Operacion Update);
}
return false;
}
public boolean deleteOperation(String title) {
try {
stmt = con.prepareStatement(DELETE FROM BOOK WHERE title=?);
stmt.setString(1, title);
stmt.executeUpdate();
return true;
} catch (SQLException ex) {
System.out.println(Error Operacion Delete );

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

SOLUCIONARIO

70
71
72
73

Gua didctica: Programacin Avanzada

}
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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

111

Gua didctica: Programacin Avanzada

SOLUCIONARIO

Autoevaluacin 7

112

Pregunta

Respuesta

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

DICTIONARY

8. Anexos

THESAURUS

Gua didctica: Programacin Avanzada

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.

Arreglos unidimensionales en java, uso de sentencias de control repetitivas.


1

package ec.edu.utpl.anexos.collections;

public class Main {

public static void main(String[] args) {

int Arreglo[] = new int[5];

for (int i=0; i<5; i++)

Arreglo[i] = (int) (Math.random()*100);

9
10

for (int i=0; i<5; i++)

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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

113

Gua didctica: Programacin Avanzada

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

Arreglos bidimensionales en java, uso de sentencias de control repetitivas.


1

package ec.edu.utpl.anexos.collections;

public class Main {

public static void main(String[] args) {

int Arreglo[][] = new int[3][3];

for (int i=0; i<3; i++)

for (int j=0; j<3; j++)

Arreglo[i][j] = (int) (Math.random()*100);

10

11

12

for (int i=0; i<3; i++)

13

14

System.out.println( );

15

for (int j=0; j<3; j++)

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

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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

Uso de mtodos, sentencias de control repetitivas, sentencias de control condicionales.


1

package ec.edu.utpl.anexos.collections;

public class Main {

static int ArregloBidimensional[][] = new int[3][3];

static int ArregloUnidimensional[] = new int[3];

public static void main(String[] args) {

LlenarMatriz();

PresentarMatriz();

PasaElementosDiagPrincipal();

LeerElementosDiagPrincipal();

10

11

public static void LlenarMatriz()

12

13

for (int i=0; i<3; i++){

14

for (int j=0; j<3; j++){

15

ArregloBidimensional[i][j] = (int) (Math.random()*100);

16

17

18

19

public static void PresentarMatriz()

20

21

for (int i=0; i<3; i++){

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

115

Gua didctica: Programacin Avanzada


22

System.out.println( );

23

for (int j=0; j<3; j++){

24

GLOSARIO

System.out.print(ArregloBidimensional[i][j] + );

25

26

27

28

public static void PasaElementosDiagPrincipal()

29

30

int x=0;

31

for (int i=0; i<3; i++)

32

33

System.out.println( );

34

for (int j=0; j<3; j++){

35

if (i==j){

36

ArregloUnidimensional[x] = ArregloBidimensional[i][j];

37

x++;

38

39

40

41

42

public static void LeerElementosDiagPrincipal()

43

44

System.out.print(Arreglo Unidimensional: );

45

for (int i=0; i<3; i++)

46

47

System.out.print(ArregloUnidimensional[i]+ - );

48

49
50

116

}
}

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

GLOSARIO

Explicacin: En las lneas 3 y 4 se declara los arreglos bidimensionales y unidimensionales respectivamente.


A partir de la lnea 6 a la 9 se hace la llamada a los mtodos declarados.
Las lneas 11, 19, 28 y 42 corresponden a los mtodos los cuales contienen lgica programada para
cumplir con el requerimiento solicitado.
En la lnea 35 se obtienen los elementos de la diagonal principal de la matriz en base a una condicin, en
la lnea 36 se pasan los elementos de la diagonal principal a un arreglo unidimensional.
El resultado de la ejecucin del programa es el siguiente:

8.4 Uso de clase, subclases, clases abstractas, objetos, instanciacin, constructores, atributos,
mtodos.
1

package ec.edu.utpl.anexos.collections;

public class Main {

public static void main(String[] args) {

Persona p = new Persona(Daniel, Guaman,29);

System.out.print(p.PresentarNombres() + + p.PresentarApellidos());

Empleado e = new Empleado(p.Nombres, p.Apellidos, p.Edad, UTPL, 4);

System.out.print( trabaja en + e.PresentarInstitucion() + y tiene

+ e.PresentarAnio() + Anios de servicio);

9
10

}
}

11
12

class Persona{

13

String Nombres;

14

String Apellidos;

15

int Edad;

16

public Persona(){}

17

public Persona(String Na1, String Ap1, int Ed1){

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

117

Gua didctica: Programacin Avanzada


18

this.Nombres = Na1;

19

this.Apellidos = Ap1;

20

this.Edad = Ed1;

GLOSARIO

21

22

public String PresentarNombres(){

23

return this.Nombres;

24

25

public String PresentarApellidos(){

26

return this.Apellidos;

27

28

public int PresentarEdad(){

29

return this.Edad;

30

31

32

abstract class Estudiante extends Persona{

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

public String PresentarCarrera(){

41

return this.Carrera;

42

43

public String PresentarEstado(){

44

return this.Estado;

45

46

47

class Empleado extends Persona{

48

String Institucion;

49

int AnioServicio;

118

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

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

public String PresentarInstitucion(){

56

return this.Institucion;

57

58

public int PresentarAnio(){

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:

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

119

Gua didctica: Programacin Avanzada

8.5

GLOSARIO

Creacin, apertura, escritura, lectura y cierre de archivos, uso de mtodos.


1

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

public class Main {

11
12
13

public static void main(String[] args) throws FileNotFoundException, IOException {

14

EscribirArchivo();

15

LeerArchivo();

16

17
18

public static void EscribirArchivo() throws FileNotFoundException

19

20

String ruta = new String(C:\\Archivos);

21

File archtxt = new File (ruta,prueba.txt);

22

FileOutputStream Salida = new FileOutputStream(archtxt);

23

PrintWriter fSalida = new PrintWriter(archtxt);

24

char []cadena = {a,b,c};

25

fSalida.print(12345);

26

fSalida.println();

27

fSalida.write(cadena);

28

fSalida.println(Prueba de escritura en archivos);

29

fSalida.close();

30

31

120

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

GLOSARIO

32

public static void LeerArchivo() throws FileNotFoundException, IOException

33

34

String ruta = new String(C:\\Archivos);

35

File archtxt = new File (ruta,prueba.txt);

36

FileReader Entrada = new FileReader(archtxt);

37

BufferedReader fEntrada = new BufferedReader(Entrada);

38

String cadena = fEntrada.readLine();

39

boolean leer = true;

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.

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

121

Gua didctica: Programacin Avanzada

8.6

GLOSARIO

Archivo Clase Persona para resolver ejercicio de unidad 4. Colecciones


1

package ec.edu.utpl.anexo4.evaluation;

2
3

public class Person {

4
5

private Integer dni;

private String lastname;

private String name;

8
9
10

public Person(){

11

this.dni=0;

12

this.name=;

13

this.lastname=;

14

15
16

public Person(Integer dni, String name, String lastname){

17

this.dni=dni;

18

this.name=name;

19

this.lastname=name;

20

21
22

public Integer getDni() {

23
24

return dni;
}

25
26

public void setDni(Integer dni) {

27
28

this.dni = dni;
}

29
30
31

122

public String getLastname() {


return lastname;

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

Gua didctica: Programacin Avanzada

GLOSARIO

32

33
34

public void setLastname(String lastname) {

35

this.lastname = lastname;

36

37
38

public String getName() {

39

return name;

40

41
42

public void setName(String name) {

43

this.name = name;

44

45
46

@Override

47

public String toString() {

48

return Person{ + dni= + dni + lastname= + lastname + name= + name + };

49
50

}
}

DG/RL/sd/2011-03-18-123
gg/2015-07-22

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

123

You might also like