Você está na página 1de 99

TCNICAS DE

PROGRAMACIN

Pedro Yuri Mrquez Solis


Cada autor es responsable del contenido de su propio texto.
De esta edicin:
Universidad Continental S.A.C 2012
Jr. Junin 355, Miraflores, Lima-18
Telfono: 213 2760

Derechos reservados
Primera Edicin: abril 2013
Tiraje: 500 ejemplares

Autor: Pedro Yuri Mrquez Solis

Impreso en el Per en los talleres de Rebelars S.A.C


Los Bosques 555 - El Tambo - Huancayo

Fondo Editorial de la Universidad Continental

Todos los derechos reservados.

Esta publicacin no puede ser reproducida, en todo ni en parte, ni registrada en o


trasmitida por un sistema de recuperacin de informacin, en ninguna forma ni por
ningn medio sea mecnico, fotoqumico, electrnico, magntico, electroptico, por
fotocopia, o cualquier otro sin el permiso previo por escrito de la Universidad.
NDICE
INTRODUCCIN 7

DIAGRAMA DE PRESENTACIN DE LA ASIGNATURA 9

UNIDAD I: FUNDAMENTOS DE PROGRAMACIN. 11

DIAGRAMA DE PRESENTACIN DE LA UNIDAD 11

TEMA N 1: CONCEPTOS DE PROGRAMACIN 12


1 Tcnicas para el diseo de algoritmos 12
2 Estructura de un programa 14

TEMA N 2: EL PRIMER PROGRAMA EN JAVA 17


1 Verificando la instalacin de Java 17
2 La variable de sistema PATH 18
3 Creando el primer programa 19
4 Explicacin del primer programa hola.java 22

TEMA N 3: ELEMENTOS DEL LENGUAJE DE PROGRAMACIN 22


1.Comentarios, operadores, variables, expresiones, strings 22

TEMA N 4: ESTRUCTURAS DE PROGRAMACIN 27


1 Estructuras de flujo selectivas 27
2 Estructuras de flujo repetitivas 29
3 Estructuras de salto 31
4 Funciones 32

EJEMPLO DE FUNCIN: 33
5 Tipos genricos y arrays 34
LECTURA SELECCIONADA I 36
ACTIVIDAD I 38
BIBLIOGRAFIA I 38
AUTOEVALUACIN I 38

SOLUCIONARIO DE LA AUTOEVALUACIN I 38

UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOS 40

DIAGRAMA DE PRESENTACIN DE LA UNIDAD II 40

TEMA N 01: CONCEPTOS BSICOS DE POO 41


1 Introduccion: 41
2 Clases, objetos, mtodos y propiedades, constructores, mensajes 42
3 Herencia y subclases 46
TEMA N 02: ELEMENTOS DE LA POO 47
1 Polimorfismo y encapsulamiento, clase Object, clases abstractas, interfaces y paquetes 47
ACTIVIDAD II 54
LECTURA SELECCIONADA II 54
BIBLIOGRAFIA II 57
AUTOEVALUACIN II 57

UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFICO 61


DIAGRAMA DE PRESENTACIN DE LA UNIDAD III 61
TEMA N 01:APLICANDO POO CON JAVA EN AMBIENTE GRFICO CON AWT 62
1 Programacin orientada a objetos: Clase Graphics 62
2 Aplicacin Fecha. Clases Java. Excepciones 63
3 AWT 65

TEMA N 02: SWING 73


4 Swing 73
LECTURA SELECCIONADA III 76
ACTIVIDADES III 79
BIBLIOGRAFIA III 80
AUTOEVALUACIN III 80
SOLUCIONARIO DE LA AUTOEVALUACIN III 80

UNIDAD IV: ACCESO A DATOS Y PROGRAMACIN ORIENTADA A OBJETOS 85


DIAGRAMA DE PRESENTACIN DE LA UNIDAD IV 85
TEMA N 01: BASES DE DATOS Y JAVA 86
1 Conectividad a Base de datos 86
2 Conectividad JDBC, Modelo de 2 capas 87

TEMA N 02: ENLAZANDO A BASE DE DATOS 88


1 Modelo de tres capas, puente JDBC-ODBC 88
LECTURA SELECCIONADA IV 94
BIBLIOGRAFIA IV 95
AUTOEVALUACION IV 95
SOLUCIONARIO DE LA AUTOEVALUACIN IV 95
INTRODUCCIN

T
cnicas de Programacin, es una asignatura material de estudio, se dividen en cuatro unidades:
que trata temas de Programacin Orientada Introduccin al Java, principios de la P.O.O.,
a Objetos (P.O.O.), en bsqueda de Caractersticas Fundamentales de la P.O.O.,
proporcionar al estudiante una herramienta portable Implementacin de interfaces de usuario y Acceso
y extensible para generar software profesionalmente, a Datos, recopilados cuidadosamente de los libros:
tal y cual se hace en la industria del software. Tcnicas de Programacin (Jos Gallego, Editorial
Para ellos empleamos el lenguaje de Programacin McGraw-Hill, 1998 2003) y Java 2: Manual de usuario
Java, tras el cual hay toda una tecnologa orientada y tutorial (Agustn Frouge, Alfaomega, 2000).
al desarrollo de software, con el cual podemos Es recomendable que el estudiante desarrolle
realizar cualquier tipo de programa. Hoy en da, la en forma permanente los diversos programas
tecnologa Java ha cobrado mucha importancia en y aplicaciones con interfaz de usuario y el acceso
el mbito de Internet gracias a su plataforma J2EE. a datos que se basarn en un Lenguaje de
Pero Java no se queda ah, ya que en la industria para Programacin Orientada a Objetos. El contenido
dispositivos mviles tambin hay una gran acogida del material se complementar con las lecciones
para este lenguaje. presenciales e investigacin usando la tecnologa de
En general, los contenidos propuestos en el internet.

EL AUTOR.
8
TCNICAS DE PROGRAMACIN
Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
9

Lecturas Glosario Bibliografa


seleccionadas

DIAGRAMA DE PRESENTACIN
DE LA ASIGNATURA
Recordatorio Anotaciones

Diagrama Objetivos Inicio

COMPETENCIA:

Crea o implementa programas y/o en su conjunto sistemas, haciendo uso del


ordenador
Desarrollo yActividades
lenguajes Autoevaluacin
de programacin para resolver problemas especficos
de contenidos
aplicando tcnicas de programacin orientada a objetos utilizando: control, arreglos,
clases y objetos, constructores y destructores, mensajes, herencia, polimorfismo,
encapsulamiento, clases abstractas y acceso a datos con la implementacin de
interfaces grficas de manera responsable en el desarrollo de programas empleando
el anlisis, la lgica, y el ingenio orientado a objetos.
Lecturas Glosario Bibliografa
seleccionadas

UNIDADES DIDCTICAS:

UNIDAD I UNIDAD II UNIDAD III UNIDAD IV


Recordatorio Anotaciones
Fundamentos de Programacin Programacin Acceso a datos
programacin orientada a objetos orientada a objetos y programacin
en accin en entorno orientada a
grafico objetos

TIEMPO MNIMO DE ESTUDIO:


UNIDAD I UNIDAD II UNIDAD III UNIDAD IV
1era. Semana y 3era. Semana y 5ta. Semana y 7ma. Semana y
2da. Semana 4ta. Semana 6ta. Semana 8va. Semana
16 horas 16 horas 16 horas 16 horas
10
TCNICAS DE PROGRAMACIN
Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
11

Diagrama Objetivos Inicio Lecturas Glosario Bibliografa


seleccionadas

Desarrollo
UNIDAD I: FUNDAMENTOS DE PROGRAMACIN
Actividades Autoevaluacin
de contenidos
Recordatorio Anotaciones

DIAGRAMA DE PRESENTACIN DE LA UNIDAD


Diagrama
Lecturas Objetivos
Glosario Inicio
Bibliografa
seleccionadas

CONTENIDO EJEMPLOS ACTIVIDADES


Desarrollo Actividades Autoevaluacin
de contenidos
Recordatorio Anotaciones

BIBLIOGRAFA AUTOEVALUACIN
Lecturas Glosario Bibliografa
seleccionadas

CONOCIMIENTOS PROCEDIMIENTOS ACTITUDES


Unidad I: Fundamentos de 1. Reconoce las partes de Muestra inters por
Programacin
Recordatorio
Anotaciones un programa la construccin de
1 Clase Presencial/ Virtual 2. Reconoce y valora programas empleando el
(Video conferencia) la importancia de la control de flujo y Arrays
Tema N 1 : Conceptos de metodologa de la
programacin programacin
1. Tcnicas para el diseo 3. Entiende y aplica los
de algoritmos distintos tipos de control
de Flujo Selectivos,
2. Estructura de un
control de Flujo
programa
repetitivos
Tema N 2 : El primer
4. Emplea funciones y
programa en Java
estructuras de datos en
1. Verificando la la solucin de diversos
instalacin de Java problemas
2. Creando el primer
programa
Tema N 3 : Elementos
Actividad N 1
del lenguaje de
programacin Resuelve problemas
especficos aplicando
1. Comentarios,
Comentarios,
operadores, variables,
Identificadores,
expresiones, strings
Separadores,
Tema N 4: Estructuras Operadores, Variables,
de programacin Expresiones, Strings
1. Estructuras de flujo y Controles de Flujo
selectivas selectivos
2. Estructuras de flujo
repetitivas Actividad N 2:
3. Funciones Resuelve una serie de
4. Tipos genricos y problemas tipo que
arrays requieren de la aplicacin
Lectura seleccionada 1: de diversas estructuras de
Historia de los Lenguajes datos
de Programacin de Jos
F. Velez Serrano. Control de lectura N 1:
Lectura seleccionada Responde un cuestionario
2: Que es Java? de los temas 1, 2 y 3
Referencia:http://www.
aprendeaprogramar.
com/mod/resource/view.
php?id=204
Autoevaluacin N 1
ollo
nidos 12
Actividades Autoevaluacin UNIDAD I: FUNDAMENTOS DE PROGRAMACIN

as Glosario Bibliografa
nadas
TEMA N 1: CONCEPTOS DE PROGRAMACIN

torio Anotaciones
Permtanme hacer un repaso sobre conceptos acerca de programacin, empe-
zando por la definicin de programa, especficamente programa de computador

Programa de Computador: Es una secuencia de comandos que emplea instruc-


ciones de algn lenguaje de Programacin para indicar acciones a ejecutar al
procesador. Un programa est compuesto bsicamente de dos partes: instruc-
ciones y datos.

PROGRAMA= INTRUCCIONES + DATOS

Debo recalcar que el responsable de idear la secuencia de instrucciones es pre-


cisamente el programador, esta forma de trabajo donde el programador es el
que idea la solucin del problema funcionara para problemas no muy comple-
jos, pero en el caso de requerir resolver problemas grandes requerir de pasos
previos.
Por ejemplo un arquitecto; al que se ha encargado el diseo de un edificio, no
empieza inmediatamente a elaborar los planos estructurales, mas bien inicia con
la elaboracin de bosquejos que plasman la idea que tiene en mente.
En forma similar en la creacin de programas, debemos iniciar entendiendo el
problema es decir conociendo que se necesita, luego debemos saber que pasos
seguir para obtener el resultado final, finalmente crear el programa necesario
en base a los pasos estimados anteriormente.

1 TCNICAS PARA EL DISEO DE ALGORITMOS


1.1. Algoritmo
Se entiende por algoritmo a un conjunto finito de instrucciones que se deben
seguir para resolver un problema. No obstante, desde el punto de vista de la pro-
gramacin de computadores, la definicin del algoritmo como la especificacin
de una serie de pasos, es incompleta. Debe observarse que los computadores
son equipos que tienen limitaciones fsicas en cuanto a capacidad de memoria y
procesamiento. Por consiguiente al llevar un algoritmo a un programa debemos
considerar que se haga un uso eficiente de estos recursos.
Los algoritmos, como procedimiento para solucionar problemas, han existido
desde muchos siglos atrs, sin embargo, se han convertido en tema de inters de
estudiante y profesionales por cuanto son el fundamento de la programacin de
computadores.
A menudo los algoritmos requieren una organizacin bastante compleja de los
datos, y es por tanto necesario un estudio previo de las estructuras de datos fun-
damentales. Dichas estructuras pueden implementarse de diferentes maneras, y
es ms, existen algoritmos para implementar dichas estructuras.
El uso de estructuras de datos adecuadas pueden hacer trivial el diseo de un al-
goritmo, o un algoritmo muy complejo puede usar estructuras de datos muy sim-
ples. Uno de los algoritmos ms antiguos conocidos es el algoritmo de Euclides.
El trmino algoritmo proviene del matemtico Muhammad ibn Musa al-Khwa-
rizmi, que vivi aproximadamente entre los aos 780 y 850 d.C. en la actual
nacin Iran. El describi la realizacin de operaciones elementales en el sistema
de numeracin decimal. De al-Khwarizmi se obtuvo la derivacin algoritmo.
Existen varias tcnicas para representar algoritmos, las ms conocidas son: pseu-
docdigo, diagrama de flujo y diagrama N-S. En este manual emplearemos Pseu-
docdigo.

http://es.wikibooks.org/wiki/Fundamentos_de_programaci%C3%B3n/Algo-
ritmos_y_programas
TCNICAS DE PROGRAMACIN
UNIDAD I: FUNDAMENTOS DE PROGRAMACINDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
13

Lecturas Glosario Bibliografa


seleccionadas
1.2. Algoritmo
Los algoritmos estn, con mayor o menor complejidad, en todas las actividades
desarrolladas por el hombre y han sido utilizados por todos, infinidad de veces,
sin embargo, cuando se aborda el tema como parte de la educacin formalRecordatorio
se Anotaciones

mitifica y se difunde el prejuicio sobre que es un tema complicado.


Desde los primeros aos de escolaridad se trabaja con algoritmos, en especial en
el campo de las matemticas. Los mtodos utilizados para sumar, restar, multi-
plicar y dividir son algoritmos que cumplen perfectamente las caractersticas de
precisin, finitud, definicin y eficiencia.

Para que la solucin de un problema sea llevada hasta un lenguaje


de programacin, los pasos expresados en el algoritmo deben ser lo ms
detallados posible, de manera que cada uno de ellos implique una opera-
cin trivial; es decir, que los pasos no impliquen procesos que requieran
de una solucin algortmica. En caso de presentarse esta situacin, el
algoritmo debe ser refinado, lo que equivale a desarrollar nuevamente el
algoritmo para la tarea concreta a la que se hace mencin.
Si el problema que se desea solucionar es muy grande o complejo, es reco-
mendable dividirlo en tareas que se puedan abordar independientemente
y que resulten ms sencillas de solucionar. A esto se le llama diseo
modular.

Formalmente estas son algunas tcnicas de diseo de algoritmos:

1.2.1. Algoritmos voraces


Un algoritmo voraz (tambin conocido como vido, devorador o goloso) es
aquel que, para resolver un determinado problema, sigue una heurstica consis-
tente en elegir la opcin ptima en cada paso local con la esperanza de llegar a
una solucin general ptima. Este esquema algortmico es el que menos dificul-
tades plantea a la hora de disear y comprobar su funcionamiento. Normalmen-
te se aplica a los problemas de optimizacin.

1.2.2. Algoritmos divide y vencers


En la cultura popular, divide y vencers hace referencia a un refrn que implica
resolver un problema difcil, dividindolo en partes ms simples tantas veces
como sea necesario, hasta que la resolucin de las partes se torna obvia. La solu-
cin del problema principal se construye con las soluciones encontradas.
En las ciencias de la computacin, el trmino divide y vencers (DYV) hace refe-
rencia a uno de los ms importantes paradigmas de diseo algortmico. El m-
todo est basado en la resolucin recursiva de un problema dividindolo en dos
o ms subproblemas de igual tipo o similar. El proceso contina hasta que stos
llegan a ser lo suficientemente sencillos como para que se resuelvan directamen-
te. Al final, las soluciones a cada uno de los subproblemas se combinan para dar
una solucin al problema original.
Esta tcnica es la base de los algoritmos eficientes para casi cualquier tipo de pro-
blema como, por ejemplo, algoritmos de ordenamiento (quicksort, mergesort,
entre muchos otros), multiplicar nmeros grandes (Karatsuba), anlisis sintcti-
cos (anlisis sintctico top-down) y la transformada discreta de Fourier.
Por otra parte, analizar y disear algoritmos de DyV son tareas que lleva tiempo
dominar. Al igual que en la induccin, a veces es necesario sustituir el problema
original por uno ms complejo para conseguir realizar la recursin, y no hay un
mtodo sistemtico de generalizacin.

1.2.3. Algoritmos de programacin dinmica


En informtica, la programacin dinmica es un mtodo para reducir el tiempo

http://www.algoritmia.net/articles.php?id=30
ollo
nidos 14
Actividades Autoevaluacin UNIDAD I: FUNDAMENTOS DE PROGRAMACIN

as Glosario Bibliografa
nadas
de ejecucin de un algoritmo mediante la utilizacin de subproblemas super-
puestos y subestructuras ptimas, como se describe a continuacin.
El matemtico Richard Bellman invent la programacin dinmica en 1953 que
torio Anotaciones se utiliza para optimizar problemas complejos que pueden ser discretizados y
secuencializados.
Una subestructura ptima significa que se pueden usar soluciones ptimas de
subproblemas para encontrar la solucin ptima del problema en su conjunto.
Por ejemplo, el camino ms corto entre dos vrtices de un grafo se puede encon-
trar calculando primero el camino ms corto al objetivo desde todos los vrtices
adyacentes al de partida, y despus usando estas soluciones para elegir el mejor
camino de todos ellos. En general, se pueden resolver problemas con subestruc-
turas ptimas siguiendo estos tres pasos:
a) Dividir el problema en subproblemas ms pequeos.
b) Resolver estos problemas de manera ptima usando este proceso de tres pa-
sos recursivamente.
c) Usar estas soluciones ptimas para construir una solucin ptima al proble-
ma original.

1.2.4. Algoritmo backtracking:


Vuelta atrs, (Backtracking) es una estrategia para encontrar soluciones a pro-
blemas que satisfacen restricciones. El trmino backtrack fue acuado por
primera vez por el matemtico estadounidense D. H. Lehmer en la dcada de
1950. En su forma bsica, la idea de backtracking se asemeja a un recorrido en
profundidad dentro de un grafo dirigido. El grafo en cuestin suele ser un rbol,
o por lo menos no contiene ciclos. Sea cual sea su estructura, existe slo implci-
tamente. El objetivo del recorrido es encontrar soluciones para algn problema.
Esto se consigue construyendo soluciones parciales a medida que progresa el
recorrido; estas soluciones parciales limitan las regiones en las que se puede en-
contrar una solucin completa. El recorrido tiene xito si, procediendo de esta
forma, se puede definir por completo una solucin. En este caso el algoritmo
puede bien detenerse (si lo nico que se necesita es una solucin del problema)
o bien seguir buscando soluciones alternativas (si deseamos examinarlas todas).
Por otra parte, el recorrido no tiene xito si en alguna etapa la solucin parcial
construida hasta el momento no se puede completar. En tal caso, el recorrido
vuelve atrs exactamente igual que en un recorrido en profundidad, eliminando
sobre la marcha los elementos que se hubieran aadido en cada fase. Cuando
vuelve a un nodo que tiene uno o ms vecinos sin explorar, prosigue el recorrido
de una solucin.

2 ESTRUCTURA DE UN PROGRAMA
En la programacin estructurada, hay un inicio y un fin perfectamente bien de-
finido de acuerdo a la solucin que se plante al concebir la idea del programa.
Por ello para fines acadmicos debemos entender que el procesamiento de un
computador se reduce a:

ENTRADA PROCESO SALIDA

Nuestros programas deben adaptarse a esta forma de trabajo y en su estructura


proveer lo necesario para que le computador pueda completar estos pasos.

2.1. Esquema de un programa


En un programa de computador podremos distinguir las siguientes secciones:
ENTORNO
Declaracin de variables

http://es.wikipedia.org/wiki/Algoritmo_voraz
http://es.wikipedia.org/wiki/Algoritmo_divide_y_venceras
TCNICAS DE PROGRAMACIN
UNIDAD I: FUNDAMENTOS DE PROGRAMACINDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
15

Lecturas Glosario Bibliografa


seleccionadas
INICIO
Procesamiento

Recordatorio Anotaciones
Muestra de resultados
FIN

2.1.1. Entorno
Como sabemos un programa consiste de Instrucciones y Datos, la zona de en-
torno permite indicar al computador que debe separar una zona de la memoria
RAM para permitir el almacenamiento de los datos que requerir el programa.
Los datos se almacenan en variables.
Las variables no son ms que espacios de la memoria Ram que se emplean para
que el computador los vaya modificando de acuerdo al avance del programa.
Como hemos visto, el computador sigue una serie de instrucciones. Pero esas
instrucciones tienen que operar sobre una serie de datos. El computador tpico
slo procesa una instruccin a la vez, por lo que necesita espacios de memoria
donde guardar o depositar, a modo de cajones, por usar un smil conocido, los
diversos datos con los que trabaja. Aqu es donde entran en juego las variables
y constantes.
Podemos entonces resumir a una variable como:

Zona de memoria para almacenar un dato temporalmente a la que se


reconoce con un nombre, el nombre y tipo de la variable lo decide el pro-
gramador.

2.1.2. Inicio
Todo programa debe tener un principio, se puede considerar a esto como el
punto de entrada, o simplemente la preparacin por el sistema operativo para
que este programa llegue a ejecutarse.

2.1.3. Procesamiento
Todo programa requiere ejecutar las instrucciones que se le indique.

2.1.4. Muestra de resultados


Los resultados de la ejecucin deben poder ser utilizados, para ello se deben
devolver de alguna forma, que podra ser por pantalla, a impresora, hacia un
Diagrama Objetivos Inicio
archivo, hacia un puerto de memoria, de acuerdo a lo que se requiera.

Desarrollo Actividades Autoevaluacin


de contenidos

LECTURA SELECCIONADA:
Lecturas Glosario Bibliografa
seleccionadas

Evolucin de los lenguajes de programacin de tcnicas avanzadas de diseo de


Software; una introduccin a la programacin orientada a objetos usando UML
y Java. Jos Velez Serrano Pag. 2,3
Recordatorio Anotaciones

EVOLUCIN DE LOS LENGUAJES DE PROGRAMACIN


El desarrollo de sistemas de software cada vez ms grandes y complicados
ha influido en la creacin de lenguajes de programacin que faciliten
tcnicas para tratar la complejidad. Esto a su vez ha permitido abordar

http://es.wikipedia.org/wiki/Programacion_dinamica
http://es.wikipedia.org/wiki/Vuelta_atr%C3%A1s
ollo
nidos 16
Actividades Autoevaluacin UNIDAD I: FUNDAMENTOS DE PROGRAMACIN

as Glosario Bibliografa
nadas
problemas ms complejos, para entrar en una espiral de evolucin que nos trae
hasta la actualidad.
La primera generacin de lenguajes de programacin aparece entre los
torio Anotaciones aos 1954 y 1958. En aquella poca aparecieron Fortran (Formula Translator
de la mano de J. W. Backus), ALGOL, FlowMatic e IPL V. Esta primera etapa
se caracteriza por programas muy lineales, con una sola lnea principal de
ejecucin, y por una clara orientacin hacia ingenieros y cientficos. En
estos lenguajes no existe una separacin clara entre datos y programas, y como
mecanismo de reutilizacin de cdigo se propone la biblioteca de funciones
En la segunda generacin (1959 1961) aparecen Fortran II y Cobol (Common
Business Oriented Language). Este ltimo tuvo un alto arraigo en el mundo em-
presarial al que iba dirigido. Adems, aparece Lisp (List Processing creado en
el MIT por J. McCarthy y otros) orientado a los problemas de inteligencia
artificial y que tuvo un gran impacto en multitud de lenguajes posteriores.
En todos estos lenguajes, aunque ya existe separacin entre datos y programa,
el acceso a los datos es desordenado y no se proporcionan mecanismos que
preserven la integridad de los mismos. Utilizando estos lenguajes no existe
ninguna restriccin en cuanto al orden de los datos y adems se puede acceder
a ellos directamente desde cualquier parte de un programa. As, los cambios en
una parte de un programa, que acceda a ciertos datos, pueden ocasionar errores
en otra parte del programa ya cerrada, que accede a los mismos datos. Lgica-
mente, esto da lugar a que los programas de cierta complejidad desarrollados
con estos lenguajes sean muy inestables y difcilmente puedan crecer
La tercera generacin (1962 1975) es muy prolfica. Entre la multitud de len-
guajes que aparecen podemos destacar Pascal, C y Simula. En esta etapa apa-
recen conceptos como el de programacin estructurada y el de abstraccin
de datos. La programacin estructurada se basa en un teorema de Dijkstra que
demuestra que cualquier programa de ordenador puede escribirse con un len-
guaje que permita la ejecucin secuencial de instrucciones, la instruccin condi-
cional y la realizacin de bucles de instrucciones. Por otro lado, las abstracciones
de datos consisten en la definicin de tipos complejos de datos y su asociacin
a operadores para tratarlos. Estas abstracciones permiten que se puedan abor-
dar programas ms complejos. Sin embargo, estos lenguajes an no formalizan
mecanismos de proteccin adecuados para evitar violaciones en los protocolos
de acceso a los datos. Tampoco aaden ningn mecanismo de reutilizacin de
cdigo distinto a las bibliotecas de funciones
En la etapa que comprende desde el ao 1976 hasta 1980 los lenguajes de la
etapa anterior evolucionan y se estandarizan
Aparecen adems lenguajes funcionales como los de la familia ML, y lenguajes
lgicos como Prolog
En las dcadas de 1980 y 1990 aparecen los lenguajes orientados a objetos
como SmallTalk, C++ y Java. Estos lenguajes estn especialmente diseados
para adaptarse a la descomposicin orientada a objetos. Para ello, existen
mecanismos que permiten restringir el acceso a los datos que forman
parte de los objetos. Es responsabilidad de cada objeto el manteni-
miento de sus datos, y el resto de objetos que interaccionan con l lo hace a
travs de una interfaz bien definida. Tambin aparece en estos lenguajes el
mecanismo de herencia que permite la reutilizacin de cdigo de una
manera controlada. Casi todos los lenguajes evolucionan desde sus orgenes. Por
ejemplo, las versiones ms actuales de Cobol, Fortran y Pascal incorporan carac-
tersticas de orientacin a objetos.
Paradigmas de programacin:
Un paradigma de programacin es un modelo conceptual para desarrollar pro-
gramas. El uso de un paradigma se refuerza por el lenguaje que se escoja para
realizar un programa concreto, aunque en general, con mayor o menor dificul-
tad, se puede usar cualquier lenguaje de programacin para seguir cualquier
paradigma. Grady Booch cita diferentes paradigmas:
Orientado al procedimiento.- Que se expresa de manera imperativa en
forma de algoritmos. Por ejemplo C y Fortran
Orientado a funciones. Se basa en el concepto matemtico de funcin y se
expresa de manera declarativa. Por ejemplo Lisp, SML, Hope, Hasckel
Orientado a la lgica.- Que se expresa por metas en forma de clculo
TCNICAS DE PROGRAMACIN
UNIDAD I: FUNDAMENTOS DE PROGRAMACINDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
17

Lecturas Glosario Bibliografa


seleccionadas
de predicados. Utilizan reglas e inferencia lgica. Por ejemplo Prolog
Orientado a objetos.- Se expresa en forma de relaciones entre objetos y
responsabilidades de cada uno. Por ejemplo SmallTalk o Java
Esta clasificacin no es estanca, algunos lenguajes pertenecen a varios paradig-
Recordatorio Anotaciones

mas. Existen paradigmas ms generales, como el paradigma imperativo


o el estructurado, que engloban a otros. Adems, continuamente apa-
recen nuevos paradigmas, como la orientacin a aspectos que complementa
a la Programacin Orientada a Objetos fomentando la separacin de conceptos
Cada uno de estos paradigmas tiene ciertas ventajas. As, el paradigma
procedimental aporta ventajas cuando son tareas sencillas que se pueden des-
cribir con unos pocos pasos, o cuando es importante optimizar la velocidad de
ejecucin. El uso del paradigma orientado a la lgica facilita la implementacin
de sistemas expertos en los que se deba manejar una base de conocimiento. El
paradigma funcional permite construir programas concisos, fciles de probar y
paralelizar, lo cual es muy adecuado para la prueba matemtica de algoritmos y
para programas en los que se requiera un alto grado de fiabilidad. El paradigma
de Programacin Orientada a Objetos est demostrando su utilidad en una
amplia variedad de problemas (interfaces grficas, simuladores, aplicaciones
ofimticas, juegos...). Adems, est demostrando que puede ser un marco de
alto nivel ideal para integrar sistemas desarrollados siguiendo diferentes para-
digmas.

TEMA N 2: EL PRIMER PROGRAMA EN JAVA

1 TCNICAS PARA EL DISEO DE ALGORITMOS


Para iniciar a programar en Java, se debe instalar la plataforma de desarrollo
(JDK) el cual incluye la plataforma de ejecucin (JRE).
Se puede descargar desde:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
A continuacin se muestra la secuencia a seguir:

Grafico 1: Descarga de Java

Efectua Clic sobre


este enlace
ollo
nidos 18
Actividades Autoevaluacin UNIDAD I: FUNDAMENTOS DE PROGRAMACIN

as Glosario Bibliografa
nadas
Grafico 2: Descarga de Java- Eligiendo la versin

torio Anotaciones

Si estas trabajando
con el sistema opera-
tivo Windows elige la
versin de 32 o 64 bits
segn corresponda

Luego de descargar el instalador solo es cuestin de continuar con la secuencia.


Al finalizar la instalacin comprobamos que esta se completado exitosamente,
para lo cual podemos revisar el siguiente directorio:

Grafico 3: Verificando la instalacin de Java

Tambien podemos comprobar el comando java, para ello abre una ventana del
smbolo del sistema.
Presiona la tecla Windows + R escribe cmd.
En la ventana DOS mostrada escriba java y pulse Enter.
La salida en pantalla ser una parecida a esta imagen.

Grafico 4: Verificando Java

El comando java.exe sirve para ejecutar el cdigo ya compilado a bytecode. La


TCNICAS DE PROGRAMACIN
UNIDAD I: FUNDAMENTOS DE PROGRAMACINDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
19

Lecturas Glosario Bibliografa


seleccionadas
salida que ves por pantalla es la ayuda disponible puesto que no le hemos indi-
cado ningn parmetro.

2 LA VARIABLE DE SISTEMA PATH Recordatorio Anotaciones

Esta variable es en realidad un texto que le permite al sistema operativo buscar


en las rutas que contenga los ejecutables que necesite. Vamos a comprobar el
valor normal de esta variable:

Grafico 5: Estado de la varible PATH

Como se puede ob-


servar no contiene
la ruta de la carpeta
BIN de java

Ahora agregaremos a la variable PATH la direccion del directorio BIN de JAVA-


contrandonos en la ventana de comandos, escribimos
set path=%path%;c:\Archivos de Programa\Java\jdl1.7.0\bin
El ; que esta a continuacion de %path% sirve para mantener los valores actuales
y agregar a continuacin. Al volver a preguntar por el estado de esta variable
tenemos:

Grafico 6: Nuevo estado de la variable PATH

La variable path
ahora contiene la
ruta de la carpeta
BIN de java

3 CREANDO EL PRIMER PROGRAMA


Elaboraremos nuestros programas empleando el IDE(Entorno de desarrollo
Integrado) NETBEANS, el cual se puede descargar desde:
http://netbeans.org/downloads/index.html

Luego de efectuar la instalacin respectiva

1. Para escribir nuestro programa abriremos el NetBeans que acabamos de ins-


talar y efectuaremos la siguiente secuencia:
Menu File --> New Project
ollo
nidos 20
Actividades Autoevaluacin UNIDAD I: FUNDAMENTOS DE PROGRAMACIN

as Glosario Bibliografa
nadas
Grafico 7: Paso 1 para crear un programa en NetBeans

torio Anotaciones

En la ventana de New Project , elegir categories luego en projects: Java Aplication.

Grafico 8: Paso 2 para crear un programa en NetBeans

A continuacin ingresamos el nombre del proyecto, en este caso ejemplo1, en


Project location indicamos el directorio donde guardaremos el proyecto, en este
caso C:\tec_prog.

Grafico 9: Paso 3 para crear un programa en NetBeans

Desactivar
la casilla
Create
main class

Finalmente iniciara el entorno de NetBeans, donde solo faltar agregar una


clase:
Efectuaremos clic derecho en el nombre del proyecto, en este caso ejemplo1, y
elegimos la opcin New a continuacin Java Class.

Grafico 10: Paso 4 para crear un programa en NetBeans


TCNICAS DE PROGRAMACIN
UNIDAD I: FUNDAMENTOS DE PROGRAMACINDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
21

Lecturas Glosario Bibliografa


seleccionadas

Recordatorio Anotaciones

Aparecer una ventana para indicar el nombre de la clase a crear:


Ingresamos el nombre de la clase en este caso Hola, y clic al botn Finish.

Grafico 11: Paso 1 para crear un programa en NetBeans

2. Escribiremos el siguiente cdigo:


public class Hola {public static void main(String argumentos[]){
System.out.println("Hola a todos!");{{

El nombre del archivo debe ser exactamente igual al nombre de la


clase que se us en el programa tanto en maysculas y minsculas.

En el ejemplo anterior la clase ha sido llamada Hola, por lo tanto el archivo


guardado deber llamarse Hola.java necesariamente.
3. Ahora vamos a ejecutarlo: basta con presionar la tecla F6, debemos ver en la
ventana output , el mensaje Hola a todos!

Grafico 12: Ejecucion del Primer programa


ollo
nidos 22
Actividades Autoevaluacin UNIDAD I: FUNDAMENTOS DE PROGRAMACIN

as Glosario Bibliografa
nadas
4 EXPLICACIN DEL PRIMER PROGRAMA HOLA.JAVA

Se define el nombre de la clase.


torio Anotaciones
public : Indica que la clase tiene alcance pblico.
class : Palabra reservada para definir clases.
Hola: Corresponde a el nombre de la clase. El archivo fuente debe llevar el mis-
mo nombre pero con extensin java ( Hola.java ).
{ Comienza el bloque de declaracin de la clase (termina en }

public : Define alcance pblico.


static : Quiere decir que no necesita instancia de clase.
void : El mtodo principal main no retorna valor (numrico).
main : El mtodo main debe declararse con el especificador de acceso public, lo
que quiere decir que puede ser llamado desde fuera de su clase. Tambin debe
declararse como static, que significa que main es un mtodo de una clase, no un
mtodo de un objeto. Cuando se termine de ejecutar, no debe devolver ningn
valor, por lo cual usamos la palabra void en este cdigo (en otras palabras, un
valor de retorno de tipo void significa que actualmente no devuelve valor).
String argumentos[ ] : Parmetro opcional para pasar argumentos (datos) desde
la lnea de comandos. En este caso, estamos indicando que a main se le pasa
un array cuyos elementos son cadenas de caracteres, llamado argumentos. Estos
elementos son valores que se pasan desde la lnea de comandos cuando se inicia
la aplicacin; por ejemplo, si escribe java Hola amigo estudiante", entonces
"amigo" y "estudiante" seran las dos cadenas del array args
System : Coleccin (paquete) de clases
out : Clase de salida estndar de datos
println : Mtodo que escribe en pantalla y luego hace un salto de lnea
La clase System del paquete java.lang. En Java, las libreras de clases se llaman
paquetes y el paquete java.lang est en todo programa Java, lo que quiere decir
que no hay que hacer nada especial para utilizarlo, a diferencia de otros pa-
quetes Java. La clase System del paquete java.lang incluye un campo (es decir,
un miembro de datos de la clase) llamado out, y este campo, a su vez, tiene un
mtodo llamado println, que hace que se visualice el texto.

Como out es una clase perteneciente al paquete System se debe poner un punto
como medio de acceso a la clase desde el paquete : (System.out).
De forma similar, como el mtodo println es parte de la clase out se usa el punto
como medio de acceso al mtodo: ( System.out.println ).

TEMA N 3: ELEMENTOS DEL LENGUAJE DE PROGRAMACIN

1 COMENTARIOS, OPERADORES, VARIABLES, EXPRESIONES,STRINGS


1.1. Comentarios en Java
Los comentarios son una parte muy importante en la programacin Java y de
cualquier lenguaje. Nos sirven para escribir nuestras propias notas y aclaracio-
nes en el cdigo o simplemente podemos comentar una lnea de cdigo que no
queremos que se ejecute.

En Java existen 3 tipos de comentarios: de una sola lnea, de varias lneas, comen-
tarios JavaDoc o de documentacin.

Los comentarios de una lnea se escriben con //.


TCNICAS DE PROGRAMACIN
UNIDAD I: FUNDAMENTOS DE PROGRAMACINDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
23

Lecturas Glosario Bibliografa


seleccionadas
Ejemplo:
//Esto es un comentario de una lnea

Recordatorio Anotaciones
Los comentarios de varias lneas se escriben encerrados entre /* y */.
Ejemplo:
/*
Esto es un comentario
de varias lneas.
*/

Los comentarios JavaDoc son un poco ms complejos. Se colocan justamente


antes de una declaracin de un mtodo o una variable. El texto de estos comen-
tarios ha de ir encerrado entre los smbolos /** y */.
Ejemplo:
/**
Esto es un comentario de documentacin
y puede tener ms de una lnea.
*/

Para generar estos comentarios se utiliza la herramienta proporcionada con el


SDK llamada javadoc, y producen documentos HTML, con toda la informacin
de clases, mtodos, constructores, campos, etc. Para usar javadoc, escribe en la
consola: javadoc archivo-fuente.java

1.2. Operadores

1.2.1. Operadores aritmticos


Los operadores aritmticos se usan para realizar operaciones matemticas y son:
+ Adicin
- Sustraccin
* Multiplicacin
/ Divisin
% Mdulo (Residuo de la divisin de dos nmeros)

Ambos operandos deben ser de un tipo primitivo numrico, como int o double.
El operador suma (+) da la suma aritmtica de los dos operandos, por ejemplo:
int a=4;
int b=3;
System.out.print(a+b); // dar una salida de 7

Es importante recordar que los tipos de los dos operandos deben ser de la misma
categora, es decir, se pueden sumar int + long (entero ms entero) o int + float
(entero + coma flotante), pero si efectuamos una suma de un String con un en-
tero (o float), obtendremos una cadena del String unido al entero:
String a = "4";
int b=3;
System.out.print(a+b); // dar una salida de la cadena 43

Adems de los vistos anteriormente, tenemos a nuestra disposicin operadores


de suma y resta unitarios, es decir que suman y restan una unidad. Son ++ y --.
Dependiendo si se usan delante o detrs de la variable, se evala la expresin y
se suma o resta o viceversa. Lo vemos con un ejemplo:
int a = 2;
int b = 0;
ollo
nidos 24
Actividades Autoevaluacin UNIDAD I: FUNDAMENTOS DE PROGRAMACIN

as Glosario Bibliografa
nadas
b = ++a; // b=3, a=3;
// Primero a incrementa su valor en 1 b y luego asigna el valor a b
b = a++; b=2, a=3
torio Anotaciones
// Primero a asigna su valor a b y luego se incrementa en uno.

1.2.2. Operadores relacionales


Los operadores relacionales son aquellos que devuelven un valor booleano, es
decir true o false, verdadero o falso. En realidad nos sirve para realizar una com-
paracin entre dos valores. Estos son los operadores relacionales de los que dis-
pone Java:

== igual a
!= distinto de
> mayor que
< menor que
>= mayor o igual que
<= menor o igual que

Estos operadores no se pueden aplicar a String ni booleanos, tan solo a tipos


numricos, incluido char.
Ejemplos:
int a = 4;
int b = 3;
System.out.print(a<b); // dar una salida de false
int a = 4;
double b = 3;
System.out.print((a+b)>=b); // dar una salida de true
System.out.print(a==b); // dar una salida de false
System.out.print(true<false); // Arroja este error: el operador < no se pue-
de aplicar a boolean,double
String a = "4";
int b = 4;
System.out.print(a==b); // Arroja este error: el operador == no se puede
aplicar a java.lang.String,int

1.2.3. Operadores lgicos


Estos representan unin y (AND), la disyuntiva o (OR) y la negacin (NOT).
Las expresiones toman dos valores boolean para generar un valor booleano so-
bre el que trabajaremos para decidir si un bloque de cdigo se ejecuta o no (por
ejemplo en las sentencias if).

& (ampersand) AND


| OR
^ XOR (OR exclusivo)
|| OR condicional
&& AND condicional
! NOT unitario lgico
== Igual
!= Distinto

1.2.4.Precedencia en los operadores


Es importante ordenar y agrupar los operadores de forma que Java los pueda
ejecutar por una precedencia preestablecida, as en una expresin con distintos
operadores, unos se ejecutaran ANTES que otros, de acuerdo a la tabla prece-
TCNICAS DE PROGRAMACIN
UNIDAD I: FUNDAMENTOS DE PROGRAMACINDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
25

Lecturas Glosario Bibliografa


seleccionadas
dencia de operadores en Java.
La precedencia se muestra de arriba (la ms alta) hacia abajo (la ms baja):

Recordatorio Anotaciones
1. ( ) [ ] .
2. ++ -- !
3. * / %
4. + -
5.
> >= < <=
6. == !=
7. &
8. ^
9.
|
10. &&
11. ||

1.2.5. El operador ternario?

El operador ternario es una condicin que nos devuelve un resultado depen-


diendo si dicha condicin es true o false. Ejemplo:

int a = 2;
int b = 0;
System.out.println(a<b?"1":"2"); //salida: 2

Este operador es una alternativa mas rpida y corta a la sentencia if, pero mucho
mas complicada de ver y escribir, por lo que recomendamos usar if, siempre que
sea posible.

1.3. Variables
Las variables son espacios de memoria reservados para el almacenamiento de un
valor. Una variable se compone de un tipo, un identificador y un valor. Bsica-
mente es un identificador que guarda un determinado valor de un tipo especfi-
co, y el valor se puede modificar a lo largo del programa.
El tipo es la clase de datos que queremos guardar en la variable, por ejemplo un
nmero o un texto. Es obligatorio asignar el tipo en la declaracin de la variable.
El nombre que le demos a la variable es un identificador de esa variable y se rige
por las normas de los identificadores. A las variables se le suelen dar nombres
descriptivos. El valor debe ser del mismo tipo definido para esa variable, es decir,
si la variable es de tipo int (nmeros enteros), solo puede guardar valores num-
ricos enteros, y no letras o nmero con decimales.
En java un identificador es una palabra compuesta de letras y/o nmeros de has-
ta 32 caracteres significativos, empezando siempre con una letra. Existen reglas
en cuanto a variables:

Claras y con referencia directa al problema.


No espacios en blanco, ni smbolos extraos en ellas.
Se pueden usar abreviaturas, pero solo de carcter general.
No deben ser palabras reservadas del lenguaje.

Ejemplos de buenas variables: Nombre, Edad, SueldoDiario, ingMensual, Per-


metro, Calif1
ollo
nidos 26
Actividades Autoevaluacin UNIDAD I: FUNDAMENTOS DE PROGRAMACIN

as Glosario Bibliografa
nadas

Espacio en
Clasificacin Tipo de Dato Rango
memoria
Entero Byte 8 bits -128 127
torio Anotaciones
short 16 bits -32768 a 32767
int 32 bits -2147483648 a
2147483647
long 64 bits -9223372036854775808
a
9223372036854775807

Reales float 32 bits 1.4 x 10-45 a 3.4 x


1038
double 64 bits 4.9 x 10-324 a 1.8 x
10308

1.4. Declaracin de variables


La sintaxis para declarar variables es esta:
tipo nombre_de_la_variable;
Por ejemplo:
int miVariableNumerica;

Con esto le decimos al compilador de Java que debe crear una variable que se
llama miVariableNumerica y que solo debe almacenar nmeros enteros.
Pero para poder usar esta variable hay que inicializarla, y para ello solo hay que
igualar el nombre de la variable a un valor:
miVariableNumerica = 5;
Es posible iniciar una variable en su declaracin, de esta manera:
int miVariableNumerica = 5;

1.5. Expresiones
Una expresin es una determinada combinacin de operadores y operandos
que se evalan para obtener un resultado particular. Los operandos pueden ser
variables, constantes o llamadas a mtodos.
Una llamada a un mtodo evala el valor devuelto por el mtodo y el tipo de una
llamada a un mtodo es el tipo devuelto por ese mtodo.

1.6. Constantes
Java soporta constantes con nombre y se caracteriza porque el valor no puede
modificarse y la forma de crearlas es:
final float PI = 3.14159;
Esta lnea de cdigo produce un valor que se puede referenciar en el programa,
pero no puede ser modificado. La palabra clave final es la que evita que esto
suceda.

1.7. Strings
Un String o cadena se considera a toda secuencia de caracteres almacenados en
memoria y accesibles como una unidad. C/C++ no soportan un tipo String, sino
que simplemente disponen de un formato de almacenamiento de caracteres que
se puede tratar como un String. Sin embargo, Java implementa cadenas a travs
de las clases String y StringBuffer, a las que se dedicar un amplio estudio.
Concatenacin
La concatenacin de texto se denomina a la unin de trozos o fragmentos de
textos y comnmente se utiliza la conversin de nmeros o de objetos a su repre-
sentacin en texto, Java convierte automticamente los tipos de datos bsicos a
texto antes de unirlos y llama por cada objeto al mtodo especial toString() para
realizar la conversin de objetos.
TCNICAS DE PROGRAMACIN
UNIDAD I: FUNDAMENTOS DE PROGRAMACINDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
27

Lecturas Glosario Bibliografa


seleccionadas
TEMA N 4: ESTRUCTURAS DE PROGRAMACIN

1 ESTRUCTURAS DE FLUJO SELECTIVAS


Recordatorio Anotaciones
if/else
En esta estructura se efectua una comprobacion de la condicin, la cual simpre
incluye algn operador lgico, el resultado ser o bien verdadero o falso. En el
caso de resultar verdadero se efectua la operacin 1 y la estructura hace que el
flujo del programa salte hasta la llave el fin de la estructura IF.

if( Condicion)
Operacion 1 se efectua solo si al com-
{ probar condicion resulta verdadero,
operacin 1; luego se efectua un salto hasta el final
de a estructura.
}
Operacion 2 se efectua solo si
else {
al comprobar condicion resulta
Operacin 2; falso
}

public class Ejemplo01


{
public static void main( String args[] )
{
String entrada; float valor;
entrada = JOptionPane.showInputDialog ( "Ingrese un numero :" );
valor = Float.parseFloat( entrada );
if ( valor >= 0 )
JOptionPane. showMessageDialog ( "El numero es positivo:" );
else
JOptionPane. showMessageDialog ( "El numero es negativo:" );
}

if else if
Con esta estrcutura se pueden realizar multiples comprobaciones, cada una
de esta es excluyente de las dems es decir si se comprueba una de ellas no se
realizan mas pruebas y se efectua un salto hasta el fina de la estructura

if (comparacin 1) Se efectua accion1 y accion2


{ Accin_1_de_verdad; solo si al comprobar condicion
Accin_2_de_verdad; resulta verdadero.

} Se efectuan accion21 y accion22 luego
else if (comparacin 2) de comprobar que comparacion 1 re-
{ Accin_21_de_verdad; sult falso y que la nueva comparacin
(Comparacion 2) resulte verdadero.
Accin_22_de_verdad;
}
else if (comparacin 3) Se efectuan accion31 y accion32 solo
si comparacin 1 y comparacin 2 re-
{ Accin_31_de_verdad; sultaron falsas y comparacin 3 resulta
Accin_32_de_verdad;
verdadero.
}
else
Se efectua accin_2 de falsedad solo si
{ Accin_1_de_falsedad; comparacin 1, comparacin 2 y com-
Accin_2_de_falsedad; paracin 3 resultaron falsas.
}
ollo
nidos 28
Actividades Autoevaluacin UNIDAD I: FUNDAMENTOS DE PROGRAMACIN

as Glosario Bibliografa
nadas
En el ejemplo Ejemplo02.java, se utilizan varias sentencias if-else para determi-
nar en qu estacin del ao se encuentra un mes determinado.

torio Anotaciones

class Ejemplo02 {
public static void main( String args[] ) {
int mes = 8;
String estacion;
if( mes == 12 || mes == 1 || mes == 2 )
{ estacion = "el invierno";
}
else if( mes == 3 || mes == 4 || mes == 5 )
{ estacion = "la primavera";
}
else if( mes == 6 || mes == 7 || mes == 8 )
{ estacion = "el verano";
}
else if( mes == 9 || mes == 10 || mes == 11 )
{ estacion = "el otoo";
}
else
{ estacion = "Mes falso";
}
System.out.println( "Agosto esta en " + estacion + "." );
}
}

El programa Ejemplo02, trabaja del siguiente modo, se inicializa la variable mes


con el valor de 8, ya en la estructura if se realiza la primera comprobacion ave-
riguando si mes tiene un valor igual a 12 o 1 o 2, si esto es verdad, la variable
estacion queda con el texto el invierno, si no coincide con los valores antes men-
cionados se pasa a efectuar la siguiente comprobacin, averiguando si mes tiene
un valor igual a 3, 4 o 5, de ser cierto se coloca el texto la primavera en la variable
estacin. Se hace algo similar con los valores para 6,7 y 8 donde se coloca el ve-
rano o en el caso de 9,10 y 11 que se coloca el otoo.
En el caso que el valor de mes no sea un valor entre 1 a 12, se coloca en estacin
el texto mes falso.

Switch

switch (variable)
{ case valor1 : accin1; break;
case valor2 : accin2; break;
case valor3 : accin3; break;
case valor4 : accin4; break;
case valor5 : accin5; break;
// ...
[default: accinX;]
}
Ejemplo: El Ejemplo03.java es el mismo ejemplo que se cre en la seccin if-else,
reescrito para utilizar switch.
TCNICAS DE PROGRAMACIN
UNIDAD I: FUNDAMENTOS DE PROGRAMACINDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
29

Lecturas Glosario Bibliografa


seleccionadas

class Ejemplo03 {
public static void main( String args[] ) {
Recordatorio Anotaciones
int mes = 8;
String estacion;
switch( mes ) {
case 12: // Contina
case 1: // Contina
case 2:
estacion = "el invierno";
break;
case 3: // Contina
case 4: // Contina
case 5:
estacion = "la primavera";
break;
case 6: // Contina
case 7: // Contina
case 8:
estacion = "el verano";
break;
case 9: // Contina
case 10: // Contina
case 11:
estacion = "el otoo";
break;
default:
estacion = "Mes falso";
}

System.out.println( "Agosto esta en " + estacion + "." );


}
}

2 ESTRUCTURAS DE FLUJO REPETITIVAS


Las estructuras repetitivas permiten ejecutar n veces las mismas instrucciones,
en muchos casos se requiere de este tipo de operaciones para resolver multitud
de problemas, podemos decir que esta estructura aprovecha la velocidad de cl-
culo de un computador.
Sentencias se realizan si no se ha
Bucles for llegado al valor de terminacin.

for( inicializacin; terminacin; incremento ) {


sentencia1;
sentencia2; .
}
siguiente
Se pasa hasta la lnea siguiente si ya se ha llegado al
valor de terminacin.
ollo
nidos 30
Actividades Autoevaluacin UNIDAD I: FUNDAMENTOS DE PROGRAMACIN

as Glosario Bibliografa
nadas
En la estructura for, se debe tener una variable de control la cual es preferible
declarar en la zona de inicializacin, fjate que mediante esta variable podremos
definir cuando termina el bucle (terminacin) y adems decidir de cuanto en
torio Anotaciones
cuanto avanzara (incremento).

Ejemplo: Programa que imprime los 20 primeros nmeros naturales

public class Ejemplo07


{ public static void main(String args[])
{ int num;
System.out.println("Los 20 primeros nmeros naturales:");
for(num=1;num<=20;num++)
System.out.println(num);
}
}

En el programa ejemplo 07 se imprimen los 20 primeros numeros naturales, se


emplea una estructura for, donde se aprecia que la variable num, es la variable
de control, la cual se ha inicializado en el valor 1, el bucle continuara hasta que
la variable num llegue a tener el valor 20fijate que la variable se incrementa de
uno en uno.
Sentencias se realizan mientras sea
Bucles while verdad la expresin de terminacin
boolenana.
[inicializacin;]
while( terminacin-expresin-booleana ) {
El bucle termina por que se
sentencias; efectua un salto hasta este
[iteracin;] punto, solo si la evaluacin
} de la expresion booleana re-
sulta falso

Siguiente

La estructura while es similar a la estructura for, se recomienda el uso de while


para los casos en que no se conoce con anticipacin el numero de veces que se
repetirn las acciones.
While requiere de una variable de control que debe inicializarce fuera del bucle,
el bucle continuara mientras la terminacin-expresin-booleana sea veradera,
es importante considerar que en algn momento esta variable debe cambiar de
valor para que el bucle pueda concluir.

Ejemplo: Programa que imprime los 20 primeros nmeros naturales

public class Ejemplo08


{ public static void main(String args[])
{
System.out.println("Los 20 primeros nmeros naturales:");
int num=1;
while (num<=20)
{ System.out.println(num);
num++;
}
}

En el programa Ejemplo08 se ha inicializado la variable num con el valor 1, se


TCNICAS DE PROGRAMACIN
UNIDAD I: FUNDAMENTOS DE PROGRAMACINDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
31

Lecturas Glosario Bibliografa


seleccionadas
llega a la lnea de while (num<=20), se compara el valor actual de num que es 1
comprobando si es menor o igual a 20, como resulta verdadera la comprobacin
se ingresa al bucle y se imprime el valor de num, es decir 1, a continuacin el
valor de num se incrementa en uno con la instruccin num++, con lo cual numRecordatorio Anotaciones
a quedado con el valor de 2, se retorna nuevamente a la comprobacin esto se
logra mediante la llave que esta sealada con la flecha.
Al retornar se efectua nuevamente la comprobacin ahora num vale 2, al com-
probar con la condicin num<=20 resulta verdadero se imprime el valor de 2,
se incrementa en uno, resultando num en 3, todo esto se va a repetir hasta que
num llega a obtener el valor de 20, en esa iteracin se imprime 20, se incrementa
el valor de num, con lo cual obtiene 21, se retorna a la comprobacin la cual
efectua 21<=20 lo cual resulta falso, con lo cual se pasa a la lnea a continuacin
del fin de while, que en este programa coincide con la lnea de fin del mtodo
main, con lo cual se termina el programa.

Bucles do/while

[inicializacin;]
do {
sentencias;
[iteracin;]
}while( terminacin-expresin-booleana );

Ejemplo: Programa que imprime los 20 primeros nmeros naturales

public class Ejemplo09


{
public static void main(String[] args)
{
int num;
System.out.println("Los 20 primeros nmeros naturales:");
num=1;
do
{ System.out.println(num);
num++;
}
while (num<=20);

}
}

Uso de las estructuras de repeticin


while: El bucle se ejecuta cero o ms veces.
do-while: El bucle se ejecuta al menos una vez.
for: Se sabe el nmero de veces de ejecucin del bucle o se realiza un
recorrido de una estructura de almacenamiento.

3 ESTRUCTURAS DE SALTO
En Java existen dos estructuras que rompen el flujo secuencial de un programa
el cual produce un salto en la ejecucin. Estas estructuras son break y continue.

Sentencia BREAK
La sentencia breakse utiliza para terminar inmediatamente la ejecucin de una
ollo
nidos 32
Actividades Autoevaluacin UNIDAD I: FUNDAMENTOS DE PROGRAMACIN

as Glosario Bibliografa
nadas
estructura de repeticin o una estructura switch.

Sentencia CONTINUE
torio Anotaciones
La sentencia continueslo puede aparecer dentro de una estructura de repeti-
cin. El efecto que produce es que deja de ejecutar el resto del bucle para volver
a evaluar la condicin del bucle, continuando con la siguiente iteracin si el
bucle lo permite.

4 FUNCIONES
El primer avance en metodologa de programacin, vino con la Programacin
Estructurada (en este concepto vamos a incluir a las tcnicas de Programacin
con Funciones -tambin llamado procedural-, ya que ambos se hallan ntima-
mente relacionados, no creemos, que se pueda concebir la programacin estruc-
turada sin el uso masivo de funciones).
La programacin en ensamblador es lineal, es decir, las instrucciones se ejecutan
en el mismo orden en que las escribimos. Podemos, sin embargo, alterar este
orden haciendo saltos desde una instruccin a otro lugar del programa distinto
a la instruccin que le sigue a la que se estaba procesando.
El BASIC tradicional tambin trabaja de este modo. Este sistema de trabajo es
complicado, ya que obliga al programador a retener en su cabeza permanente-
mente todo el cdigo escrito hasta un momento determinado para poder seguir
escribiendo el programa; adems a la hora de leerlo, el programador se pierde
con facilidad porque debe ir saltando continuamente de unos trozos de cdigo
a otros.
Lo que se intenta, es que el programador pueda hacer programas cada vez ms
extensos sin perderse en un entramado de lneas de cdigo interdependientes.
Un programa en estilo lineal se parece a la red neuronal del cerebro, si usted
ha visto alguna vez una foto de estas, no lo habr olvidado: en esa maraa de
neuronas y conexiones nerviosas no hay quien lo entienda.
Para evitar esto, junto con la programacin estructurada aparece un concepto
que nos permite abarcar programas ms amplios con menor esfuerzo: el de fun-
cin.
La idea es muy simple: muchas veces realizo procesos que se repiten y en los que
slo cambia algn factor, si trato ese proceso como un subprograma al que llamo
cada vez que lo necesito, y cada vez que lo llamo puedo cambiar ese factor, estar
reduciendo el margen de error, al reducir el nmero de lneas que necesito en
mi programa, ya que no tengo que repetir todas esas lneas cada vez que quiera
realizar el proceso, con una sola lnea de llamada al subprograma ser suficiente;
adems, de haber algn fallo en este proceso el error queda circunscrito al trozo
de cdigo de la funcin.
As, las funciones podemos entenderlas como unas cajas negras, que reciben y
devuelven valores. Solo tengo que programarlas una vez, las puedo probar por
separado y comprobar que funcionan correctamente, una vez terminadas puedo
olvidarme de cmo las hice y usarlas siempre que quiera.
En Java una funcion es un modulo de un programa separado del cuerpo prin-
cipal, que realiza una tarea especifica y que puede regresar un valor a la parte
principal del programa u otra funcion o procedimiento que la invoque.
La forma general de una funcion es:
Tipo_acceso Tipo_de_datos_q_regresa Nombre_funcion(lista de parametros)
{ cuerpo de instrucciones;
instruccion return;
}
Tipo_Acceso puede ser:
private: significa que puede ser usada solo en esa clase y no por subclases.
protected: significa que puede ser usada solo en esa paquete y tambien por

Grupo EIDOS, Introduccin a la Programacin Orientada a Objetos


TCNICAS DE PROGRAMACIN
UNIDAD I: FUNDAMENTOS DE PROGRAMACINDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
33

Lecturas Glosario Bibliografa


seleccionadas
subclases; pero no en otro paquete.
public: significa que puede ser usada por cualquier clase en cualquier pa-
quete.
Tipo_de_datos_q_regresa: especifica el tipo de valor que la funcion regresara
Recordatorio Anotaciones

utlizando la instruccin return. Si no se especifica un tipo se asume de default


que el tipo regresado es int.
La lista de parmetros, es una lista de variables separadas por comas (,) que al-
macenaran los valores que reciba la funcion, estas variables actuan como locales
dentro del cuerpo de la funcion. Aunque no se ocupen parametros los parn-
tesis son requeridos. La declaracion de parametros es la especificacion de cada
tipo de parametro recibido.
instruccion return: Dentro del cuerpo de la funcin deber haber una instruccin
return cuando menos, para regresar el valor, esta instruccin permite regresar
datos.

Tipo_de_datos_q_regresa puede ser:


float: siempre que la salida sea un real de precisin simple.

double: siempre que la salida sea un real de doble precisin.

int: siempre que la salida sea un entero de precisin simple.

long: siempre que la salida sea un entero de doble precisin.

String: siempre que la salida sea una cadena alfanumrica.

boolean: siempre que la salida sea un valor booleano (true, false).

double[]: siempre que la salida sea un vector real de doble precisin.

double[][]: siempre que la salida sea una matriz real de doble precisin.

int[]: siempre que la salida sea un vector entera de doble precisin.

int[][]: siempre que la salida sea una matriz entera de doble precisin.

Nombre_funcion puede ser el que usted quiera pero no debe tener espacios ni
usar palabras reservadas de java, por ejemplo la palabra main esta reservada para
el procedimiento principal.

ejemplo:

esta lista de parmetros es correcta esta lista es incorrecta


int mcm(int n, int m){ int mcm(int n,m){
. .
. .
} .
}

Ejemplo de funcin:
Funcin que realice la suma de dos nmeros, el cdigo sera el siguiente:

private float FuncionSuma(float numero1, float numero2){


ollo
nidos 34
Actividades Autoevaluacin UNIDAD I: FUNDAMENTOS DE PROGRAMACIN

as Glosario Bibliografa
nadas
float Suma=numero1+numero2;
return Suma;
}
torio Anotaciones
Esta funcin ha sido nombrada como FuncionSuma, para su funcionamiento
requiere de 2 parametros(datos con los cuales operar), que se entregan en las
variables numero1 y numero2, la funcin retorna el valor de la variable Suma.

5 TIPOS GENRICOS Y ARRAYS


Como otras variables, antes de poder utilizar un array primero se debe decla-
rar. De nuevo, al igual que otras variables, la declaracin de un array tiene dos
componentes primarios: el tipo del array y su nombre. Un tipo de array incluye
el tipo de dato de los elementos que va contener el array. Por ejemplo, el tipo
de dato para un array que slo va a contener elementos enteros es un array de
enteros. No puede existir un array de tipo de datos genrico en el que el tipo de
sus elementos est indefinido cuando se declara el array.

5.1. Arrays unidimensionales


En Java podemos declarar un vector de dos maneras:

Tipo_de_dato nomb_vector [ ];
Tipo_de_dato [ ] nomb_vector;

Char letras[ ]; //array_De_Char


int numeros[ ] ; //array De Enteros

De cualquiera de las dos formas obtendramos un vector de tamao no definido,


sin embargo la declaracin no asegura un buen uso de los elementos del vector;
por lo que debe definir su tamao asignado en memoria suficiente para todos
sus elementos y as asignar valores a los elementos y recuperar sus valores

nom_array = new tipo_dato [tamao_array];

Ahora s tendramos un vector preparado para aceptar tanto elemento segn el


tamao indicado del tipo de datos que se haya elegido

Ejemplo:

int enteros [ ]; //declaracin del arreglo


enteros = new int[20]; //asignacin de memoria para 20 enteros

Ejemplo: Java permite una manera fcil de crear con valores iniciales:

String nombres [ ] = {Erick, Yuri, Jamil, Athina};

La lnea anterior es similar a: String nombres [ ] = new String [4]

String nombres[];
nombres = new String [4];
nombres[0] = Erick;
nombres[1] = Yuri;
nombres[2] = Jamil;
nombres[3] = Athina;
TCNICAS DE PROGRAMACIN
UNIDAD I: FUNDAMENTOS DE PROGRAMACINDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
35

Lecturas Glosario Bibliografa


seleccionadas
5.2. Control de tamao de array
El tamao de un arreglo puede ser determinado en tiempo de ejecucin usando
la variable miembro length por ejemplo:
Recordatorio Anotaciones

for (int j = 0; j < numeros.length; j ++) {


numeros[j] = j;
System.out.println("[j] = " + numeros[j]);
}

5.3. this
En algunos momentos puede resultar til tener una referencia a la instancia
actual, aquella que se est ejecutando. This ---- (yo mismo, asimismo).

public Persona(String ID, String Nombre, String Fono) {


this.ID=ID;
this.Nombre=Nombre;
this.Fono=Fono;
}

Ejemplo: Ingrese 4 nmeros, almacnalos y luego imprime su correspondiente


promedio.

//Programa que Ingresa 5 nmeros enteros los almacena


//y luego imprime su correspondiente promedio
import java.io.*;
public class Ejemplo1
{ public static void main(String[] args) throws IOException
{ BufferedReader br=new BufferedReader(new InputStreamReader(Sys-
tem.in));
int numeros []=new int[5];
int x,num;
double sum,prom;

System.out.println("Ingrese 5 nmeros enteros: \n");
sum=0;
for (x=0;x<numeros.length;x++)
{
System.out.print("Numero "+x+": ");
num=Integer.parseInt(br.readLine()) ;
numeros[x]=num;
sum=sum+num;
}
prom=sum/(numeros.length);
System.out.print("Los nmeros ingresados son:");
for (x=0; x<numeros.length;x++)
{ System.out.print("\n Numero "+x+": "+numeros[x]);
}
System.out.print("\n El promedio es: "+prom);
}
}
ollo
nidos 36
Actividades Autoevaluacin UNIDAD I: FUNDAMENTOS DE PROGRAMACIN

as Glosario Bibliografa
nadas
5.4. Arrays bidimensionales
Los arrays bidimensionales en java se tienen que construir uniendo dos arrays
bidimensional para declarar un array bidimensional es de la siguiente forma:
torio Anotaciones tipo_dato nomb_matriz [ ][ ];
Los vectores en Java son en realidad objetos (como casi todo) y por lo tanto se
inicializan llamando a un constructor con new, con lo cual se logra un asigna-
miento suficiente de memoria (instanciamiento) para que el vector funcione
correctamente.

char c[][]
Integer numeros[][]
Donde:
el primer corchete con las filas y el segundo las columnas:
Integer M[][] = new Int[4][5]

Ejemplo: Declarando e instanciando una matriz de nmeros de 30 filas por 10


columnas.

//Primera forma
int numeros[][];
numeros=new int[30][10];

//Segunda forma
int numeros[][] = new int[30][10];
Diagrama Objetivos Inicio

Desarrollo Actividades Autoevaluacin


de contenidos

LECTURA SELECCIONADA II
Lecturas
seleccionadas Qu
Glosario
es Java?,
Bibliografa
Nacho Cabanes, aprendera programar.com http://.aprendera-
programar,com/mod/resource/view.php?id=204
Java es un lenguaje de programacin de ordenadores, diseado como una mejo-
ra de C++, y desarrollado por Sun Microsystems (compaa actualmente absor-
Recordatorio bida por Oracle).
Anotaciones

Hay varias hiptesis sobre su origen, aunque la ms difundida dice que se cre
para ser utilizado en la programacin de pequeos dispositivos, como aparatos
electrodomsticos (desde microondas hasta televisores interactivos). Se preten-
da crear un lenguaje con algunas de las caractersticas bsicas de C++, pero que
necesitara menos recursos y que fuera menos propenso a errores de programa-
cin.
De ah evolucion (hay quien dice que porque el proyecto inicial no acab de
funcionar) hasta convertirse en un lenguaje muy aplicable a Internet y progra-
macin de sistemas distribuidos en general.
Pero su campo de aplicacin no es exclusivamente Internet: una de las grandes
ventajas de Java es que se procura que sea totalmente independiente del hard-
ware: existe una "mquina virtual Java" para varios tipos de ordenadores. Un
TCNICAS DE PROGRAMACIN
UNIDAD I: FUNDAMENTOS DE PROGRAMACINDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
37

Lecturas Glosario Bibliografa


seleccionadas
programa en Java podr funcionar en cualquier ordenador para el que exista
dicha "mquina virtual Java" (hoy en da es el caso de los ordenadores equipados
con los sistemas operativos Windows, Linux, Solaris y algn otro; incluso muchos
telfonos mviles actuales son capaces de usar programas creados en Java). A
Recordatorio Anotaciones
cambio, la existencia de ese paso intermedio hace que los programas Java no
sean tan rpidos como puede ser un programa realizado en C, C++ o Pascal y
optimizado para una cierta mquina en concreto.
Por qu usar Java?
Puede interesarnos si queremos crear programas que se vayan a manejar a travs
de un interfaz web (sea en Internet o en una Intranet de una organizacin),
programas distribuidos en general, o programas que tengan que funcionar en
distintos sistemas sin ningn cambio (programas "portables"), entre otros casos.
Cundo no usar Java?
Como debe existir un paso intermedio (la "mquina virtual") para usar un pro-
grama en Java, no podremos usar Java si queremos desarrollar programas para
un sistema concreto, para el que no exista esa mquina vritual. Y si necesitamos
que la velocidad sea la mxima posible, quiz no sea admisible lo (poco) que
ralentiza ese paso intermedio.
Qu ms aporta Java?
Tiene varias caractersticas que pueden sonar interesantes a quien ya es progra-
mador, y que ya ir conociendo poco a poco quien no lo sea:
La sintaxis del lenguaje es muy parecida a la de C++ (y a la de C).
Al igual que C++, es un lenguaje orientado a objetos, con las ventajas que eso
puede suponer a la hora de disear y mantener los programas.
Java soporta el manejo de threads (hilos), para crear programas multitarea.
Permite excepciones, como alternativa ms sencilla para manejar errores, como
ficheros inexistentes o situaciones inesperadas.
Es ms fiable y seguro que C++ (no existen los punteros).
Cada vez incorpora ms facilidades para la creacin de entornos "basados en
ventanas", para la creacin y manipulacin de grficos, para el acceso a bases de
datos, etc.
Qu hace falta para usar un programa creado en Java?
Las aplicaciones que deban funcionar "por s solas" necesitarn que en el orde-
nador de destino exista algn "intrprete" de Java, lo que hemos llamado la "m-
quina virtual". Esto es cada vez ms frecuente (especialmente en sistemas como
Linux), pero si no lo tuviramos (como puede ocurrir en Windows), basta con
instalar el "Java Runtime Enviroment" (JRE), que se puede descargar libremente
desde Java.com (unos 10 Mb de descarga).
Otra forma (actualmente menos frecuente) en que podemos encontrar progra-
mas creados en lenguaje Java, es dentro de pginas Web. Estas aplicaciones Java
incluidas en una pgina Web reciben el nombre de "Applets", y para utilizarlos
tambin deberamos tener instalada la mquina virtual Java (podra no ser ne-
cesario si nuestro Navegador Web reconoce automticamente el lenguaje Java,
algo que no es habitual hoy en da).
Qu hace falta para crear un programa en Java?
Existen diversas herramientas que nos permitirn crear programas en Java. La
ms habitual es la propia que suministra Sun, y que se conoce como JDK (Java
Development Kit). Es de libre distribucin y se puede conseguir en la propia
pgina Web de Oracle.
El inconveniente del JDK es que puede resultar incmodo de manejar para
quien est acostumbrado a otros entornos integrados, como los que incorporan
Delphi o Visual Basic, que incorporan potentes editores.
Pero no es un gran problema, porque es fcil encontrar editores que hagan ms
fcil nuestro trabajo, o incluso sistemas de desarrollo completos, como Eclipse o
NetBeans. Ambos son buenos y gratuitos.
ollo
nidos 38
Actividades Autoevaluacin UNIDAD I: FUNDAMENTOS DE PROGRAMACIN

as Glosario Bibliografa Diagrama Objetivos Inicio


nadas

ACTIVIDAD N 2:
Desarrollo Actividades Autoevaluacin
de contenidos
torio Anotaciones Diagrama Objetivos Inicio
Esta actividad puede consultarla en su aula virtual.

Lecturas Glosario Bibliografa


Desarrollo seleccionadas
Actividades Autoevaluacin
de contenidos

Recordatorio Anotaciones
BIBLIOGRAFA BASICA DE LA UNIDAD I:
Lecturas Glosario Bibliografa
seleccionadas

1. Agustn Froufe Quinta, Java 2: Manual de usuario y tutorial, Alfaomega Grupo Editor
(Mxico) Ra-Ma, 2008
2. Harvey M. Deitel, Cmo programar en C/C++ y Java, Pearson Educacin, 2004
Recordatorio Anotaciones
3. http://es.wikibooks.org/wiki/Fundamentos_de_programacin/Algoritmos_y_
programas
4. http://www.algoritmia.net
5. http://es.wikipedia.org/wiki/Algoritmo_voraz
6. http://es.wikipedia.org/wiki/Algoritmo_divide_y_venceras
7. http://www.oracle.com/technetwork

Diagrama Objetivos Inicio

AUTOEVALUACIN DE LA UNIDAD N I
Desarrollo Actividades Autoevaluacin
de contenidos

1. Disee un programa para jugar a adivinar un nmero entre 0 y 100. El pro-


grama ir dando pistas al jugador indicndole si el nmero introducido por el ju-
Lecturas Glosario Bibliografa
gador es menor o mayor que el nmero que tiene que adivinar. El juego termina
seleccionadas
cuando el jugador adivina el nmero o decide terminar de jugar (por ejemplo,
escribiendo un nmero negativo).

Recordatorio Anotaciones Solucionario de la autoevaluacin N 01

Ejercicio 1:

import javax.swing.JOptionPane;
public class ejercicio {
public static void main(String args[]) {
int n = numero();
while (true) {
int x = Integer.parseInt(JOptionPane.showInputDialog(null, "Indica el
nmero:"));
if (x == n) {
JOptionPane.showMessageDialog(null, "Adivinaste el nmero");
break;
} else {
if (x < 0) {
break;
} else {
JOptionPane.showMessageDialog(null, "Pista: " + pista(x, n));
}
}
TCNICAS DE PROGRAMACIN
UNIDAD I: FUNDAMENTOS DE PROGRAMACINDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
39

Lecturas Glosario Bibliografa


seleccionadas
}
}

Recordatorio Anotaciones
public static int numero() {
return (int) (Math.round(Math.random() * 100));
}

public static String pista(int x, int n) {


if (x > 100) {
return "El nmero a adivinar est entre 0 y 100";
} else {
if (n > x) {
return "El nmero " + x + " es menor que el nmero que estamos bus-
cando";
} else {
return "El nmero " + x + " es mayor que el nmero que estamos bus-
cando";
}
}
}
}
40
TCNICAS DE PROGRAMACIN
Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
41

Diagrama Objetivos Inicio Lecturas Glosario Bibliografa


seleccionadas

Desarrollo
UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOS
Actividades Autoevaluacin
de contenidos
Recordatorio Anotaciones

DIAGRAMA DE PRESENTACIN DE LA UNIDAD


Diagrama
Lecturas Objetivos
Glosario Inicio
Bibliografa
seleccionadas

CONOCIMIENTOS PROCEDIMIENTOS ACTITUDES


Desarrollo Actividades Autoevaluacin
de contenidos
Recordatorio Anotaciones
Unidad II: Programacin 1. Aplica los conceptos Valora la importancia y sus
orientada a objetos de clases, Objetos y ventajas de herencia,
la metodologa de subclases, polimorfismo
Lecturas Glosario Bibliografa programacin y encapsulamiento en la
Tema N 1: Conceptos
seleccionadas

2. Resuelve problemas solucin de problemas


bsicos de POO
que requieren de
1. Clases, objetos, mtodos
la Aplicacin de los
y propiedades, constructores,
Recordatorio Anotaciones conceptos de Herencia y
mensajes
Subclases
2. Herencia y subclases
3. Aplica los conceptos
de Polimorfismo y
Tema 2: Elementos de la Encapsulamiento
POO 4. Plantea las clases
1. Polimorfismo y a emplear para el
encapsulamiento, clase Desarrollo de una
Object, clases abstractas, aplicacin comercial
interfaces y paquetes empleando los conceptos
de POO
Lectura seleccionada:
La crisis del software Actividad N 1
apuntes de ingeniera del Elabora un diagrama de
software de gestin. Tema clases y sus respectivas
1. DSIC. UPV implementaciones

Lectura seleccionada Actividad N 2


2: Patrones de diseo Crea las clases, con sus
Nicols Tedeschi- MVP respectivos mtodos y
Microsoft propiedades para una
http://msdn.microsoft. aplicacin comercial que el
com/es-es/library/ estudiante se plante
bb972240.aspx
TAREA ACADEMICA 1
Desarrollo de Disea las clases que
Autoevaluacin N 2 emplear en una aplicacin
comercial
ollo
nidos 42
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOS

as Glosario Bibliografa
nadas
TEMA N 1: CONCEPTOS BSICOS DE POO

1 Introduccion:
torio Anotaciones
Para entender la Programacion Orientada a Objetos (POO), vamos a suponer
que deseamos crear un videojuego, el tpico Galaga; un juego de naves espaciales
que deben disparar a los invasores del espacio.
En este escenario pensemos en que la nave debera moverse de izquierda a de-
recha, disparar, destruirse si chocara con algn enemigo o con algn proyectil
del enemigo, tambin debemos preveer el hecho de los niveles, que vayan incre-
mentando su complejidad, al avanzar de nivel en nivel deberan atacarnos ms
enemigos, ser ms rpidos, inclusive cambiar de forma.
En esta situacin si emplearamos nicamente lo que hemos aprendido hasta
ahora; Programacin estructurada, deberamos definir elementos por separado,
es decir hacer que se muestre una imagen en pantalla de la nave espacial, que
pueda moverse de izquierda a derecha, crear otra imagen del proyectil, en caso
que sean varios proyectiles en pantalla crear varias imgenes de proyectil, en el
transcurso del juego debemos ir comprobando si ha habido alguna colisin con
un enemigo o proyectil y cambiar la imagen por una que simule el efecto de
destruccin.
Asi mismo para el caso de los enemigos debemos crear una imagen por cada uno
que pongamos en pantalla, esto signfica tener que copiar y pegar cdigo para
cada imagen, ir pasando por cada uno para verificar si han recibido un proyectil
nuestro, al pasar a otro nivel debemos nuevamente copiar y pegar cdigo por
cada imagen de enemigo a tener, asi mismo no nos olvidemos de la velocidad,
en cada imagen a copiar debemos establecer la velocidad a la que queramos se
movilicen por pantalla, finalmente para cambiar de imagen debemos copiar y
pegar el cdigo pero indicando la nueva imagen a establecer.
Si efectuaramos esto con POO, crearamos una plantilla de nave(Clase), de esta
plantilla de nave, podramos obtener n naves(instanciar), en la plantilla estable-
ceramos la imagen de nave a mostrar, agregaramos los procedimientos que le
permitan moverse, la plantilla de la nave podra generar la imagen del proyec-
til, la cual a su vez seria otra plantilla, RECUERDA, de una plantilla podemos
obtener n copias, solo es cuestin de instanciar, con lo cual podramos tener
n proyectiles en pantalla al mismo tiempo, no tendramos que copiar y pegar.
De la misma manera podramos proceder con los enemigos, primero definimos
una plantilla de enemigo, para tener varios enemigos en pantalla solo bastara
con instanciar(obtener un objeto desde una clase) desde la plantilla de enemigo
las veces que se requiera, al definir la plantilla podramos indicarle la velocidad ,
la imagen a mostrar, debo hacer notar que no se requiere copiar y pegar cdigos
de insercin de imagenes, sino dentro de un bucle instanciar las n veces reque-
ridas. Asi mismo en la plantilla de enemigo podramos detectar si hubo alguna
colisin, por lo tanto al instanciar los objetos creados heredaran la deteccin
por lo tanto la verificacin de la colision la hara el propio objeto, tal y como
sucede en la realidad, la accin se da y afecta a un objeto en concreto.

2 CLASES, OBJETOS, MTODOS Y PROPIEDADES, CONSTRUCTO-


RES, MENSAJES

2.1. Clases, mtodos y propiedades


Una clase es como una plantilla de la cual se pueden crear varios objetos con las
mismas caractersticas y funciones definidas en la plantilla.
OBJETO
INSTANCIAR

INSTANCIAR
INSTANCIAR

CLASE
OBJETO
OBJETO
TCNICAS DE PROGRAMACIN
UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
43

Lecturas Glosario Bibliografa


seleccionadas
Una clase es un modelo, el diseo de uno o muchos objetos
Define los atributos(caractersticas) y mtodos del objeto(lo que puede ha-
cer el objeto)
Las clases se almacenan en archivos, es decir una clase o plantilla no esRecordatorio
es Anotaciones

funcional.

Mtodo: Se implementa en una clase de objetos y determina cmo debe actuar


el objeto cuando recibe el mensaje vinculado con ese mtodo.
Atributos (propiedades): Son definidas en la clase permitirn almacenar infor-
macin para dicho objeto.

2.2. Objetos
Un objeto es una entidad que tiene atributos particulares, las propiedades y
unas formas de operar sobre ellos, los mtodos, todo esto se define desde la
clase desde la que se instanciaron. Uno o muchos objetos se obtienen desde una
clase, este proceso se llama INSTANCIAR.
Los objetos ocupan un lugar en memoria ram, son funcionales, en la analoga
son como las casas, ocupan un lugar en el espacion, es decir cumplen funciones
y tienen caractersticas.
Los objetos tienen las siguientes cualidades (identidad los objetos se distin-
guen del uno del otro, comportamiento pueden realizar tareas, estado alma-
cena informacin que varia a travs del tiempo).

Ejemplo: Clase Cliente

Nombre de la
Cliente
clase
- Nombre
- Apellido
Atributos
- Edad

Mtodos() + registrar()
+ mostrar()

Notacin UML :
El nombre de toda Clase debe comenzar con Maysculas.
El nombre de los objetos con Minsculas NOTACIN UML Y JAVA.

public class Cliente


Cliente
{
Nombre
private String Nombre;
Apellido
private String Apellido;
Edad
private int Edad;
public void registrar(){
registrar()
}
mostrar()
public void mostrar(){
}

Codificacin en Java de la clase Cliente Nombre del


Archivo
Cliente.java
ollo
nidos 44
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOS

as Glosario Bibliografa
nadas

public class Cliente


Inicio de
{ private String Nombre;
torio Anotaciones la Clase Parmetros del
private String Apellido; mtodo registar.
private int Edad;
public void Registrar(String Nombre, String Apellido, int Edad)
Inicio del { this.Nombre = Nombre;
mtodo re-
gistar. this.Apellido= Apellido;
this.Edad = Edad; El parntesis vacio indica que
} el Mtodo Mostrar no requiere
Parmetros.
public void Mostrar()
{System.out.println("Nombre "+ Nombre);
System.out.println("Apellido"+ Apellido);
System.out.println("Edad"+ Edad);
}
}

Fin de la Clase

Principal.java Archivo

public class Principal


{ public static void main(String[] args)
{ Cliente A1= new Cliente();
A1.Registrar("Juan","Hurtado", 22);
A1.Mostrar();
}
}

En el caso anterior A1, es una instancia de la clase Cliente, se ha registrado con


los datos Juan, Hurtado y edad 22.
Java nos permite tambin crear clases y el programa principal en uno solo archi-
vo como se muestra en las siguientes lneas.

Clienteprin1.java

class Cliente
{ private String Nombre;
private String Apellido;
private int Edad;
public void Registrar(String Nombre, String Apellido, int Edad)
{ this.Nombre = Nombre;
this.Apellido= Apellido;
this.Edad = Edad;
}
public void Mostrar()
{System.out.println("Nombre "+ Nombre);
System.out.println("Apellido"+ Apellido);
System.out.println("Edad"+ Edad);
}
}
TCNICAS DE PROGRAMACIN
UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
45

Lecturas Glosario Bibliografa


seleccionadas

Para este programa se tiene


public class Clienteprin1 que tener en cuenta que
{ public static void main(String[] args) todo el programa est reali-
{ Cliente A1= new Cliente(); zado en un solo archivo Recordatorio
o Anotaciones

nombre del programa para


A1.Registrar("Juan","Hurtado", 22); este ejemplo el nombre del
A1.Mostrar(); programa es Claseprin1.
}
}

2.3. Constructores
El constructor de la clase es un mtodo especial que inicializa un objeto creado
de dicha clase. El constructor es llamado por Java automticamente cuando usa-
mos new para crear un nuevo objeto de esa clase. Es en el constructor es donde
damos valores iniciales a las variables instancia.
El constructor pueden ser varios mtodos, es decir, se pueden sobrecargar. Y va
a ser al crear el objeto con new cuando segn los parmetros que le pasemos se
llamara a un constructor o a otro.
Siempre tienen el mismo nombre que la clase. No devuelven ningn tipo resul-
tado y no se antepone al nombre nada, ni void.

2.3.1.Llamando a otro constructor


Puede que en el cuerpo de la definicin de un constructor nos interese llamar a
otro constructor de nuestra clase, simplemente porque el nuevo constructor sea
una ampliacin del otro por ejemplo. Lo haramos haciendo uso de la palabra
this como sigue:
...
this(arg1, arg2, ...);
...
Llamaramos al otro constructor con sus argumentos propios.

La sobrecarga de constructores sigue las mismas reglas que la sobrecarga de


mtodos.

2.3.2.Sobreescribiendo mtodos
Al llamar a un mtodo, Java busca si esta dentro de los mtodos asociados al ob-
jeto que lo llama, si no lo encuentra, sube a la superclase de esta y lo busca all,
y as sucesivamente...
Por ello se ejecuta primero el de nuestra clase, por lo que al redefinir el mtodo,
estamos ocultando el de la clase madre. Naturalmente el mtodo se llamara igual
al de la clase madre (superclase de esta), devolver el mismo tipo y se le pasaran
los mismos argumentos.
Habr otras veces que nos interesara llamar al mtodo original. Para llamar al
mtodo original haremos uso de la palabra reservada super seguida de "." y del
nombre del mtodo con sus argumentos. Es decir:
...
super.nombreMetodo(arg1,arg2,...);
...
Los constructores no pueden ser sobrescritos porque tienen el mismo nombre
de la clase que creamos. Pero en nuestros constructores inicializamos las varia-
bles de nuestra nueva clase, pero las variables heredadas de nuestra superclase
no las inicializariamos, por ello debemos llamar al constructor de la superclase
y lo haremos:
super(arg1, arg2, ...);

Llama al constructor de la clase inmediatamente superior, que a su vez llamara


al constructor de la superclase suya propia,...
ollo
nidos 46
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOS

as Glosario Bibliografa
nadas
2.3.3.Destructores de clases
Realizan la funcin opuesta al constructor. El finalizador o destructor se llama
finalize() y para darle funcionalidad en nuestra clase debemos hacer uso de la
torio Anotaciones sobreescritura. Se hara:
protected void finalize() {
sentencia1;
sentencia2;
...
sentencian;
}
Dentro de esta funcin, podemos llamar a la funcin finalize de la superclase:
super.finalize();
El uso del finalizador es til, como mas adelante se ver, para ir optimizando la
memoria ocupada, con el fin de no agotarla.
2.4. Mensajes
Una comunicacin dirigida a un objeto, que le ordena que ejecute uno de sus
mtodos con ciertos parmetros asociados al evento que lo gener. Por ejemplo:
A1.Registrar("Juan","Hurtado", 22);

3 HERENCIA Y SUBCLASES

3.1. Herencia
La herencia es uno de los conceptos ms cruciales en la POO. La herencia b-
sicamente consiste en que una clase puede heredar sus variables y mtodos a
varias subclases (la clase que hereda es llamada superclase o clase padre). Esto
significa que una subclase, aparte de los atributos y mtodos propios, tiene in-
corporados los atributos y mtodos heredados de la superclase. De esta manera
se crea una jerarqua de herencia.
La herencia es el mecanismo que sirve de soporte para registrar y utilizar las re-
laciones conceptuales existentes entre las clases posibilita la definicin de una
clase a partir de otra.

3.2. Subclases
Como ya se ha indicado en mltiples ocasiones en esta seccin, cuando se pue-
de crear nuevas clases por herencia de clases ya existentes, las nuevas clases se
llaman subclases, mientras que las clases de donde hereda se llaman superclases.
Cualquier objeto de la subclase contiene todas las variables y todos los mtodos
de la superclase y sus antecesores.
La orientacin a objetos de Java, y en particular la caracterstica de herencia, nos
permite definir nuevas clases derivadas a partir de otra ya existente, que la espe-
cializan de alguna manera, extendindola. As logramos definir una jerarqua.

Ejemplos de herencia:

En todo lenguaje orientado a objetos existe una jerarqua de clases relacionadas


en base a trminos de herencia. En Java, el punto ms alto de la jerarqua es la
TCNICAS DE PROGRAMACIN
UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
47

Lecturas Glosario Bibliografa


seleccionadas
clase Object de la cual derivan en ltima instancia todas las dems clases. Esta
clase aporta una serie de funciones bsicas comunes a todas las clases. Si al de-
finir una nueva clase, no aparece la clasula extends, Java considera que dicha
clase desciende directamente de Object. Recordatorio Anotaciones

TEMA N 2: ELEMENTOS DE LA POO

1 POLIMORFISMO Y ENCAPSULAMIENTO, CLASE OBJECT, CLASES


ABSTRACTAS, INTERFACES Y PAQUETES.

1.1. Polimorfismo
El polimorfismo, se refiere a la posibilidad de acceder a un variado rango de
funciones distintas a travs del mismo interfaz. O sea, un mismo identificador
puede tener distintas formas (distintos cuerpos de funcin, distintos comporta-
mientos) dependiendo del contexto en el que se halle. El polimorfismo se pue-
de establecer mediante sobrecarga, sobre-escritura y enlace dinmico.
Ejemplo de polimorfismo: En este caso se implementa la clase articulo con 3
metodos setPrecio, es decir se repite el nombre del mtodo, pero se diferencian
por los parmetros que se emplena para llamarlos, por la cantidad o tipos de
parmetros es como Java los puede diferenciar.

public class Articulo {


private float precio;
public void setPrecio() {
precio = 3.50;
}
public void setPrecio(float nuevoPrecio) {
precio = nuevoPrecio;
}
public void setPrecio(float costo, int porcentajeGanancia) {
precio = costo + (costo * porcentajeGanancia);
}
}
Ejemplo 2 Polimorfismo mediante sobreescritura : La sobreescritura se aplica a
los mtodos y est directamente relacionada a la herencia; se refiere a la redefini-
cin de los mtodos de la clase base en las subclases. Por ejemplo, en la relacin
de herencia del ejemplo de las figuras aunque la clase base Figura tiene los m-
todos calcularArea y calcularPerimetro, la subclase Circulo, redefine estos
mtodos ya que el calculo del rea y el permetro es diferente.
class Figura {
protected double area;
protected double perimetro;
public Figura() {
this.area=0;
this.perimetro=0;
}
public double getArea() {
return area;
}
public double getPerimetro() {
return perimetro;
ollo
nidos 48
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOS

as Glosario Bibliografa
nadas
}
public void calcularArea(){}
public void calcularPerimetro(){}
torio Anotaciones
}
public class Circulo extends Figura {
private double radio;
public Circulo() {
super();
}
public double getRadio() {
return radio;
}
public void setRadio(double radio) {
this.radio = radio;
}
public void calcularArea() {
this.area = Math.PI*Math.pow(this.radio,2.0);
}
public void calcularPerimetro() {
this.perimetro = 2*Math.PI*this.radio;
}
}
Puedes visitar el siguiente link
http://javabasico.osmosislatina.com/curso/progfinal/polimorfico.htm
Posee un excelente ejemplo de polimorfismo.

1.2. Encapsulamiento
El encapsulamiento consiste en ocultar los detalles de la implementacin de un
objeto, a la vez que se provee una interfaz pblica por medio de sus mtodos per-
mitidos. Tambin se define como la propiedad de los objetos de permitir acceso
a su estado nicamente a travs de su interfaz o de relaciones preestablecidas
con otros objetos.

1.3. Clase Object


La clase Object, como ya se ha indicado anteriormente, es la clase raz de todo
el rbol de la jerarqua de clases Java, y proporciona un cierto nmero de mto-
dos de utilidad general que pueden utilizar todos los objetos. La lista completa
se puede ver en la documentacin del API de Java, aqu solamente se tratarn
algunos de ellos; por ejemplo, Object proporciona:
Un mtodo por el que un objeto se puede comparar con otro objeto
Un mtodo para convertir un objeto a una cadena
Un mtodo para esperar a que ocurra una determinada condicin
Un mtodo para notificar a otros objetos que una condicin ha cambiado
Un mtodo para devolver la clase de un objeto

1.4. Clases abstractas


Una de las caractersticas ms tiles de cualquier lenguaje orientado a objetos
es la posibilidad de declarar clases que definen como se utiliza solamente, sin
tener que implementar mtodos, son las clases abstractas. Mediante una clase
abstracta se intenta fijar un conjunto mnimo de mtodos (el comportamiento)
y de atributos, que permitan modelar un cierto concepto, que ser refinado y
especializado mediante el mecanismo de la herencia. Como consecuencia, la
implementacin de la mayora de los mtodos de una clase abstracta podra no
tener significado. Para resolver esto, Java proporciona los mtodos abstractos.
Estos mtodos se encuentran incompletos, slo cuentan con la declaracin y
TCNICAS DE PROGRAMACIN
UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
49

Lecturas Glosario Bibliografa


seleccionadas
no poseen cuerpo de definicin. Esto es muy til cuando la implementacin
es especfica para cada usuario, pero todos los usuarios tienen que utilizar los
mismos mtodos.
No se pueden crear instancias de una clase declarada como abstract. Recordatorio Anotaciones

Un ejemplo de clase abstracta en Java es la clase Graphics:

public abstract class Graphics {


public abstract void drawLine( int x1,int y1,int x2,int y2 );
public abstract void drawOval( int x,int y,int width,int height );
public abstract void drawArc( int x,int y,int width,
int height,int startAngle,int arcAngle );
...
}

Los mtodos se declaran en la clase Graphics, pero el cdigo que ejecutar el


mtodo est en algn otro sitio:

public class MiClase extends Graphics {


public void drawLine( int x1,int y1,int x2,int y2 ) {
<cdigo para pintar lneas -especfico de la arquitectura->
}
}

Cuando una clase contiene un mtodo abstracto tiene que declararse abstracta.
No obstante, no todos los mtodos de una clase abstracta tienen que ser abs-
tractos. Las clases abstractas no pueden tener mtodos privados (no se podran
implementar) ni tampoco estticos. Una clase abstracta tiene que derivarse obli-
gatoriamente, no se puede hacer un new de una clase abstracta.

Figura figura = new Circulo( );


figura.dibujate( ) ; // Dibujara un circulo
figura = new Triangulo ( ) ;
figura.dibujate( ) ; // Dibujara un triangulo
figura = new Cuadrado ( ) ;
figura.dibujate( ) ; // Dibujara un cuadrado

Puedes visitar el siguiente link


http://javabasico.osmosislatina.com/curso/progfinal/cabstractas.htm

1.5. Interfaces
Los mtodos abstractos son tiles cuando se quiere que cada implementacin
de la clase parezca y funcione igual, pero necesita que se cree una nueva clase
para utilizar los mtodos abstractos. Los interfaces proporcionan un mecanismo
para abstraer los mtodos a un nivel superior, lo que permite simular la herencia
mltiple de otros lenguajes.
Una interfaz en Java es una coleccin de mtodos abstractos y propiedades. En
ellas se especifica qu se debe hacer pero no su implementacin. Sern las clases
que implementen estas interfaces las que describan la lgica del comportamien-
to de los mtodos.
La principal diferencia entre interface y abstract es que un interfaz proporciona
un mecanismo de encapsulacin de los protocolos de los mtodos sin forzar al
usuario a utilizar la herencia.
Una interfaz es una clase completamente abstracta (una clase sin implementa-
cin). Puedes pensar que un interface es como una clase abstract en la que todos
ollo
nidos 50
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOS

as Glosario Bibliografa
nadas
sus metodos son abstract.
Los interfaces se declaran con la palabra reservada de interface

torio Anotaciones
public interface IdentificadorInterfaz{
// Cuerpo de la interfaz . . .
}

En la declaracin de una interfaz solamente puede ir las declaraciones de


los mtodos (su nombre y asignatura sin su implementacin) y definiciones
de constantes simblicas.
Una interfaz no encapsula los datos, solo define cuales son los mtodos que
implementarn los objetos de aquellos clases que se implementa la interfaz.
Cuando una Clase hace uso de una Interfase esta utiliza la palabra imple-
ments, adems es necesario definir todos los mtodos definidos en la Interfase
dentro de la Clase.
Por ejemplo, si definimos la interfaz Animal, podremos deducir que todos los
animales pueden comer, respirar, etc. pero puede ser que cada uno lo haga de
manera diferente, por ello, en la interfaz definimos el comportamiento que to-
dos los animales pueden tener pero no el cmo hacen las cosas ya que cada
animal lo realiza de manera diferente. En cdigo se traduce as:

interface Animal{
void comer();
int respirar();
}
class Perro implements Animal{
public void comer(){
//definimos cmo come el perro
}
public int respirar(){
//definimos cmo respira el perro
}
public String ladrar(){
//definimos un mtodo exclusivo del perro
}
}
Como podemos observar en el cdigo anterior, en la interfaz existen un par de
mtodos que definen lo que cualquier animal puede hacer, pero no especifica-
mos cmo es que lo hace, dentro de la clase Perro que implementa la interfaz
Animal es que hemos sobreescrito los mtodos que se definieron en la interfaz
y le dimos un comportamiento un poco ms especfico de un perro, as mismo,
creamos el mtodo ladrar() en el cual se describe cmo es que un perro ladra,
dicho mtodo no fue definido en la interfaz Animal por que no todos los ani-
males ladran.
Es importante mencionar algunos puntos importantes con respecto a las inter-
faces:
Todos los mtodos de una interfaz son abstractos y deben de ser sobreescritos
por la clase que implemente dicha interfaz, asimismo, todos los mtodos de una
interfaz son pblicos, independientemente si se ha especificado manualmente o
no con los modificadores public y abstract.
Los mtodos de una interfaz NO deben ser estticos.
Debido a que los mtodos de una interfaz son abstractos, NO deben
ser marcados finales.
Una interfaz puede extender una o ms interfaces.
Una interfaz no puede extender o heredar nada que no sea una interfaz.
Una interfaz no puede implementar nada
TCNICAS DE PROGRAMACIN
UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
51

Lecturas Glosario Bibliografa


seleccionadas
Una interfaz declarada como public debe ser definida en un archivo con el mis-
mo nombre de la interfaz y con extensin.java. Las cabeceras de los mtodos de-
clarados en el cuerpo de la interfaz se separan entre s por caracteres de punto y
coma y todos son declarados implcitamente como public y abstract(se pueden Recordatorio Anotaciones
omitir).Por su parte, todas las constantes incluidas en una interfaz se declaran
implcitamente como public, static y final(tambin se pueden omitir) y es nece-
sario inicializarlas en la misma sentencia de declaracin.
Ejemplo: Implementacin de la interface figura y las clases cuadrado y circulo.
// Clase Figura;
public interface Figura
{ public double area();
}
// Clase Cuadrado
public class Cuadrado implements Figura
{ private double lado;
public Cuadrado( double lado)
{ this.lado=lado;
}
public double area()
{ return lado*lado;
}
}
// Clase circulo
public class Circulo implements Figura
{ private double Radio;
public Circulo( double Radio){
this.Radio=Radio;
}
public double area(){
return (Math.PI)*Radio*Radio;
}
}
// Programa Principal
public class programa1 {
public static void main(String[] args) {
// TODO code application logic here
Circulos c1= new Circulos(4.00);
Cuadrado Cu2 = new Cuadrado(5.00);
System.out.println("area del circulo"+c1.area());
System.out.println("area del cuadrado"+Cu2.area());
}
}

Puedes visitar el siguiente link


http://javabasico.osmosislatina.com/curso/progfinal/interfases.htm
adems del enlace hacia
http://javabasico.osmosislatina.com/curso/progfinal/interfases2.htm
en el cual debes prestar atencin especial a la clase cardiologo.

1.6. Paquetes
Consideremos un paquete como un conjunto de clases agrupadas que guardan
una relacin entre s. Los paquetes se declaran utilizando la palabra package
seguida del nombre del paquete. Esta instruccin debe colocarse al inicio del
ollo
nidos 52
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOS

as Glosario Bibliografa
nadas
archivo y debe ser la primera sentencia que debe ejecutarse. Ejemplo:
package proyecto1;
public classAlumno{
torio Anotaciones
.. }
Al crearse un paquete se crea una carpeta con el mismo nombre del paquete.
En nuestro ejemplo se crear la carpeta proyecto1. Si coloca la misma instruc-
cin package al inicio de otras clases lograr agrupar varias clases en el mismo
paquete.

1.6.1. Declaracin de paquetes


Los paquetes se declaran utilizando la palabra package seguida del nombre del
paquete. Esto debe estar al comienzo del fichero fuente, en concreto, debe ser la
primera sentencia ejecutable del cdigo Java, excluyendo, claro est, los comen-
tarios y espacios en blanco. Por ejemplo:

package mamiferos;
class Ballena {
...
}
Java tambin soporta el concepto de jeraqua de paquetes. Esto es parecido a
la jerarqua de directorios de la mayora de los sitemas operativos. Se consigue
especificando mmtiples nombres en la sentencia package, separados por
puntos. Por ejemplo, en las sentencias siguientes, la clase Ballena pertenece al
paquete mamiferos que cae dentro de la jerarqua del paquete animales.

package animales.mamiferos;
class Ballena {
...
}
Esto permite agrupar clases relacionadas en un solo paquete, y agrupar paquetes
relacionados en un paquete ms grande. Para referenciar a un miembro de otro
paquete, se debe colocar el nombre del paquete antes del nombre de la clase. La
siguiente sentencia es un ejemplo de llamada al mtodo obtenerNombre() de
la clase Ballena que pertenece al subpaquete mamiferos del paquete animales:
animales.mamiferos.Ballena.obtenerNombre();
La analoga con la jerarqua de directorios se ve reforzada por el intrprete Java,
ya que ste requiere que los ficheros .class se encuentren fsicamente localizados
en subdirectorios que coincidan con el nombre del subpaquete. En el ejemplo
anterior, si se encontrase en una mquina Unix, la clase Ballena debera estar
situada en el camino siguiente:
animales/mamiferos/Ballena.class

1.6.2. Acceso a Otros Paquetes


Se deca que se pueden referenciar paquetes precediendo con su nombre la
clase que se quiere usar. Tambin se puede emplear la palabra clave import, si
se van a colocar mltiples referencias a un mismo paquete, o si el nombre del
paquete es muy largo o complicado.
La sentencia import se utiliza para incluir una lista de paquetes en los que buscar
una clase determinada, y su sintaxis es:
import nombre_paquete;
Esta sentencia, o grupo de ellas, deben aparecer antes de cualquier declaracin
de clase en el cdigo fuente. Por ejemplo:
import animales.mamiferos.Ballena;
En este ejemplo, todos los miembros (variables, mtodos) de la clase Ballena
estn accesibles especificando simplemente su nombre, sin tener que precederlo
del nombre completo del paquete.
Esta forma de abreviar tienes sus ventajas y sus desventajas. La ventaja principal
TCNICAS DE PROGRAMACIN
UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
53

Lecturas Glosario Bibliografa


seleccionadas
es que el cdigo no se vuelve demasiado difcil de leer y adems es ms rpido
de teclear. La desventaja fundamental es que resulta ms complicado el saber
exactamente a qu paquete pertenece un determinado miembro; y esto es
especialmente complicado cuando hay muchos paquetes importados. Recordatorio Anotaciones

En la sentencia import tambin se admite la presencia del carcter *, asterisco.


Cuando se emplea, se indica que toda la jerarqua de clases localizada a partir del
punto en que se encuentre, debe ser importada, en lugar de indicar solamente
una determinada clase. Por ejemplo, la siguiente sentencia indicara que todas la
clases del subpaquete animales.mamiferos, deben ser importadas:
import animales.mamiferos.*;
Esta es una forma simple y sencilla de tener acceso a todas las clases de un
determinado paquete. Aunque el uso del asterisco debe hacerse con cautela,
porque al ya de por s lento compilador, si se pone un asterisco, se cargarn
todos los paquetes, lo que har todava ms lenta la compilacin. No obstante, el
asterisco no tiene impacto alguno a la hora de la ejecucin, solamente en tiempo
de compilacin.
La sentencia import se utiliza en casi todos los ejemplos del Tutorial,
fundamentalmente para acceder a las distintas partes del API de Java. Por
defecto, el conjunto de clases bajo java.lang.* se importan siempre; las otras
libreras deben ser importadas explcitamente. Por ejemplo, las siguientes lneas
de cdigo premiten el acceso a las clases correspondientes a las libreras de
manipulacion de imgenes y grficos:
import java.awt.Image;
import java.awt.Graphics;
1.6.3. Paquetes de Java
El lenguaje Java proporciona una serie de paquetes que incluyen ventanas,
utilidades, un sistema de entrada/salida general, herramientas y comunicaciones.
En la versin actual del JDK, algunos de los paquetes Java que se incluyen son los
que se muestran a continuacin, que no es una lista exhaustiva, sino para que el
lector pueda tener una idea aproximada de lo que contienen los paquetes ms
importantes que proporciona el JDK de Sun. Posteriormente, en el desarrollo
de otros apartados del Tutorial, se introducirn otros paquetes que tambin
forman parte del JDK y que, incorporan caractersticas a Java que hacen de l un
lenguaje mucho ms potente y verstil, como son los paquetes Java2D o Swing,
que han entrado a formar parte oficial del JDK en la versin JDK 1.2.
java.applet
Este paquete contiene clases diseadas para usar con applets. Hay la clase
Applet y tres interfaces: AppletContext, AppletStub y AudioClip.
java.awt
El paquete Abstract Windowing Toolkit (awt) contiene clases para generar
widgets y componentes GUI (Interfaz Grfico de Usuario), de manipula-
cin de imgenes, impresin, fuentes de caracteres, cursores, etc.. Incluye
las clases Button, Checkbox, Choice, Component, Graphics, Menu, Panel,
TextArea, TextField...
java.io
El paquete de entrada/salida contiene las clases de acceso a ficheros, de
filtrado de informacin, serializacin de objetos, etc.: FileInputStream, Fi-
leOutputStream, FileReader, FileWriter. Tambin contiene los interfaces
que facilitan la utilizacin de las clases: DataInput, DataOutput, Externa-
lizable, FileFilter, FilenameFilter, ObjectInput, ObjectOutput, Serializa-
ble...
java.lang
Este paquete incluye las clases del lenguaje Java propiamente dicho: Ob-
ject, Thread, Exception, System, Integer, Float, Math, String, Package, Pro-
cess, Runtime, etc.
java.sql
Este paquete incluye todos los interfaces que dan acceso a Bases de Datos a
travs de JDBC, Java DataBase Connectivity, como son: Array, Blob, Connec-
tion, Driver, Ref, ResultSet, SQLData, SQLInput, SQLOutput, Statement,
Struct; y algunas clases especficas: Date, DriveManager, Time, Types...
ollo
nidos 54
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOS

as Glosario Bibliografa Diagrama Objetivos Inicio


nadas

ACTIVIDAD N 2:
Desarrollo Actividades Autoevaluacin
de contenidos
torio Anotaciones
Diagrama Objetivos Inicio
Esta actividad puede consultarla en su aula virtual.

Lecturas Glosario Bibliografa


seleccionadas
Desarrollo Actividades Autoevaluacin
de contenidos

Recordatorio Anotaciones LECTURA SELECCIONADA NRO 1: LA CRISIS DEL SOFTWARE


Lecturas Glosario Bibliografa
seleccionadas

El trmino Crisis del Software fue acuado a principios de los aos 70, cuando
la ingeniera de software era prcticamente inexistente. El trmino expresaba las
dificultades del desarrollo de software frente al rpido crecimiento de la deman-
Recordatorio daAnotaciones
por software, de la complexidad de los problemas a ser resueltos y de la inexis-
tencia de tcnicas establecidas para el desarrollo de sistemas que funcionaran
adecuadamente o pudieran ser validados. La percepcin de que esta crisis exista
empez a mediados de los aos 60. Una de las primeras referencias al trmino,
y de las ms notables, fue hecha por E.W.Dijkstra, en el discurso que pronuncio
durante la entrega del premio Turing en 1972. En este trabajo abordaremos por
que se produjo esta crisis, y cul fue el camino adoptado para resolverla, o mini-
mizar sus efectos de algn modo.
CAUSAS DE LA CRISIS DEL SOFTWARE
Durante finales de los aos 50 i principios de los 60, la potencia computacional
de las maquinas era bastante limitada. Es por esto que los programas que se
desarrollaban eran simples desde nuestro punto de vista actual. Seguan un
proceso de desarrollo bastante artesanal, sin una metodologa o un camino a
seguir para su desarrollo. En esta poca se solan usar los lenguajes de bajo nivel
para el desarrollo de Software.
Pero a finales de los 60, la potencia de las maquinas empez a aumentar de
forma considerable. Empezaron a aparecer los lenguajes de programacin de
alto nivel, y las maquinas necesitaban programas mucho ms complejos de los
desarrollados hasta la poca. En definitiva, fue un salto tremendo en cuanto a
potencial de hardware, que no fue acompaado por un salto en el desarrollo de
software.
En esta poca, se empez a concebir el Software como producto, y se empeza-
ron a desarrollar algunos proyectos para que funcionaran en las mquinas de
la poca. Pero aparecieron importantes problemas: los productos excedan la
estimacin de costes, haba retrasos en las entregas, las prestaciones no eran las
solicitadas, el mantenimiento se haca extremadamente complicado y a veces
imposible, las modificaciones tenan un coste prohibitivoen resumen, se de-
sarrollaba software de mala calidad, ya que la tcnica utilizada para desarrollar
pequeos programas para maquinas con mucho menos potencial se quedaba
desfasada, y muchas veces este software acababa en el olvido. Como ejemplo,
podemos ver este grfico del ao 1979, en el que se recoge la inversin en desa-
rrollo de sistemas software en ese ao ($6.8 Millones),y como acab ese software
Fuente: Apuntes Ingeniera del Software de Gestin. Tema 1: Software e Inge-
niera del Software

Una de las principales causas de todo esto, si no la principal, era el enfoque dado
al proceso de desarrollo de software, el cual era malo e incluso a veces era inexis-
tente. En este proceso, solo del tiempo de desarrollo se dedicaba a las fases de
anlisis, diseo, codificacin y pruebas, y ms de del tiempo se dedicaba a co-
rrecciones y mantenimiento. Es evidente que dedicndole sol del tiempo a las
primeras fases, se arrastran errores graves, sobre todo procedentes de las fases de
anlisis y diseo, lo que dificultaba muchsimo la implementacin, produciendo
constantes paradas y retrocesos para revisar este anlisis/diseo.
Para que nos hagamos una idea, el conjunto de las fases de anlisis y diseo abar-
caban el 8% del tiempo total de desarrollo de software. Adems casi el 80% de
los errores se producan en estas dos fases, con lo que se incrementaba el coste
TCNICAS DE PROGRAMACIN
UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
55

Lecturas Glosario Bibliografa


seleccionadas
de correccin de errores conforme evolucionaban las fases de manera bestial.
Con estos indicadores estaba claro que algo estaba fallando y que el proceso de
desarrollo de software necesitaba un cambio radical.
INGENIERA DEL SOFTWARE, LA SOLUCIN. Recordatorio Anotaciones

Viendo el camino directo al precipicio que estaba llevando el desarrollo de sof-


tware, haba que tomar medidas para solucionarlo. Y esas medidas se llamaron
Ingeniera del Software.
La Ingeniera del Software, segn R.Pressman, es Una disciplina que integra
mtodos, herramientas y procedimientos para el desarrollo de SW de computa-
dor. Es decir, es una disciplina que intenta racionalizar el proceso de desarrollo
de software y establecer unas pautas a seguir para el desarrollo que minimicen
tiempo, esfuerzo, y coste de desarrollo y maximicen la calidad del software.
Despus de esta crisis, se intentaron establecer estas pautas, aplicndolos a algu-
nos proyectos y aumentando la inversin. En 1991 se hizo un estudio para com-
probar los resultados de la aplicacin de estos mtodos, y los resultados fueron
bastante buenos. El 52% de los proyectos se terminaron con xito, frente al 2%
del ao 1979 y el 31,1% se termin con algunas modificaciones respecto a lo
acordado inicialmente, frente al 3% del ao 1979. Pero el resultado ms espec-
tacular se obtuvo en los proyectos abandonados. En 1991 slo se abandonaron
el 16,2% de proyectos, frente al casi 76% del ao 1979. Una reduccin increble
de casi el 60% que no haca mas que confirmar la bondad de estos mtodos apli-
cados al proceso de desarrollo de software. Haba nacido una nueva disciplina,
la Ingeniera del Software,
Para hacernos una idea mas concreta de lo que abarca la Ingeniera del Software
(cosa que nos ayudar a entender porque fue la solucin a esta Crisis del Softwa-
re), debemos de centrar nuestra explicacin en que la I.S busca principalmente
software de calidad, que es aquel software que cumple los requisitos funcionales
y de rendimiento establecidos previamente y consta de unos estndares de de-
sarrollo bien documentados. Adems todos sus factores de calidad deben cum-
plirse y tener un buen seguimiento durante todo el proceso de desarrollo (ca-
ractersticas operativas, capacidad de soportar cambios y adaptabilidad a nuevos
entornos). Y por ltimo, se incorporan al proceso nuevos modelos de desarrollo
y modificacin del ciclo de vida, nuevos paradigmas de programacin, etc.que
hacen que el desarrollo de software sea mucho mas metodolgico y estructura-
do, disminuyendo as notablemente fallos y correcciones costosas.
Como ejemplo de que la ingeniera del software es en la actualidad imprescin-
dible, la revista inglesa Private Eye dio detalles sobre importantes proyectos
de software que han dado malos resultados. Entre ellos destacan los del servicio
de ambulancias Asinfor de Londres, el servicio de sanidad regional de Wessex,
la Sociedad para los derechos de autor y el sistema de manejo de equipajes del
aeropuerto de Denver.

Diagrama Objetivos Inicio


Visita este link para ver detalles del articulo:
http://histinf.blogs.upv.es/2011/01/04/la-crisis-del-software/#more-1400

Desarrollo Actividades Autoevaluacin


de contenidos

LECTURA SELECCIONADA NRO 2: PATRONES DE DISEO.


Lecturas
ADAPTADO
seleccionadas
Glosario
DE:
Bibliografa

Patrones de diseo Nicols Tedeschi- MVP Microsoft.


http://msdn.microsoft.com/es-es/library/bb972240.aspx

Recordatorio Anotaciones
Qu es un Patrn de Diseo?
Esta fue la primer pregunta que me hice cuando comenc a investigar sobre
este tema. Al principio no tena mucha idea de por dnde comenzar, por lo que
mi primera reaccin fue realizar una bsqueda en Internet y obtener de esta
manera alguna base sobre la cual apoyarme. La definicin que ms me gust
fue la siguiente:
Los patrones de diseo son el esqueleto de las soluciones a problemas comunes
en el desarrollo de software.
ollo
nidos 56
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOS

as Glosario Bibliografa
nadas
En otras palabras, brindan una solucin ya probada y documentada a proble-
mas de desarrollo de software que estn sujetos a contextos similares. Debemos
tener presente los siguientes elementos de un patrn: su nombre, el problema
torio Anotaciones
(cuando aplicar un patrn), la solucin (descripcin abstracta del problema) y
las consecuencias (costos y beneficios).
Grande fue mi sorpresa al averiguar que existen varios patrones de diseo po-
pularmente conocidos, los cuales se clasifican como se muestra a continuacin:

PATRONES ESTRUCTURALES:
Separan la interfaz de la implementacin. Se ocupan de cmo las clases y objetos
se agrupan, para formar estructuras ms grandes.
Patrones de Comportamiento: Ms que describir objetos o clases, describen la
comunicacin entre ellos. Veamos un poco en qu consisten los distintos tipos
de patrones, cules son sus fines y qu beneficios nos aportan.

PATRONES CREACIONALES
Fbrica Abstracta ( Abstract Factory ): El problema a solucionar por este patrn
es el de crear diferentes familias de objetos, como por ejemplo la creacin de
interfaces grficas de distintos tipos (ventana, men, botn, etc.).
Mtodo de Fabricacin ( Factory Method ): Parte del principio de que las subcla-
ses determinan la clase a implementar.
Prototipado ( Prototype ): Se basa en la clonacin de ejemplares copindolos de
un prototipo.
Singleton: Restringe la instanciacin de una clase o valor de un tipo a un solo
objeto.
MVC ( Model View Controler ): Este patrn plantea la separacin del problema
en tres capas: la capa model, que representa la realidad; la capa controler , que
conoce los mtodos y atributos del modelo, recibe y realiza lo que el usuario
quiere hacer; y la capa vista, que muestra un aspecto del modelo y es utilizada
por la capa anterior para interaccionar con el usuario.

PATRONES ESTRUCTURALES
Adaptador (Adapter): Convierte una interfaz en otra.
Puente (Bridge): Desacopla una abstraccin de su implementacin permitiendo
modificarlas independientemente.
Objeto Compuesto (Composite): Utilizado para construir objetos complejos a
partir de otros ms simples, utilizando para ello la composicin recursiva y una
estructura de rbol.
Envoltorio (Decorator): Permite aadir dinmicamente funcionalidad a una
clase existente, evitando heredar sucesivas clases para incorporar la nueva fun-
cionalidad.
Fachada (Facade): Permite simplificar la interfaz para un subsistema.
Peso Ligero (Flyweight): Elimina la redundancia o la reduce cuando tenemos
gran cantidad de objetos con informacin idntica.

PATRONES DE COMPORTAMIENTO
Cadena de responsabilidad (Chain of responsibility): La base es permitir que
ms de un objeto tenga la posibilidad de atender una peticin.
Orden (Command): Encapsula una peticin como un objeto dando la posibili-
dad de deshacer la peticin.
Intrprete (Interpreter): Intrprete de lenguaje para una gramtica simple y sen-
cilla.
Iterador (Iterator): Define una interfaz que declara los mtodos necesarios para
acceder secuencialmente a una coleccin de objetos sin exponer su estructura
interna.
Mediador (Mediator): Coordina las relaciones entre sus asociados. Permite la
interaccin de varios objetos, sin generar acoples fuertes en esas relaciones.
TCNICAS DE PROGRAMACIN
UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
57

Lecturas Glosario Bibliografa


seleccionadas
Recuerdo (Memento): Almacena el estado de un objeto y lo restaura posterior-
mente.
Observador (Observer): Notificaciones de cambios de estado de un objeto.
Estado (Server): Se utiliza cuando el comportamiento de un objeto cambia Recordatorio
de- Anotaciones

pendiendo del estado del mismo.


Estrategia (Strategy): Utilizado para manejar la seleccin de un algoritmo.
Mtodo plantilla (Template Method): Algoritmo con varios pasos suministrados
por una clase derivada.
Visitante (Visitor): Operaciones aplicadas a elementos de una estructura de ob-
jetos heterognea.

Conclusin
Como vern, si es que este artculo logr ilustrar sobre las distintas categoras y
tipos de patrones de diseo, no debemos reinventar la rueda en varias de nues-
tras aplicaciones. Hay mucho trabajo ya realizado, testeado y aceptado que en un
entorno similar a mi problema ya aporta una solucin satisfactoria. Para qu voy
a inventar un ladrillo si ya otro lo hizo y el mismo ya fue usado en la edificacin
de millones de estructuras con xito?
Quienes deseen ampliar su conocimiento respecto a este tema pueden consultar
la bibliografa adjunta. Adems, les comento que Microsoft no es ajeno a todo
este movimiento; ms an, es conciente de la importancia del mismo y tiene sus
comentarios e ideas al respecto. El tema se reduce a una cuestin de enfoque;.
Objetivos Inicio

Actividades Autoevaluacin
os

BIBLIOGRAFA BASICA DE LA UNIDAD II:


Glosario Bibliografa
s

1. Arnold, Ken / Gosling, James / Holmes David, El Lenguaje de Programa-


cin Java, Pearson Educacin, 2001
2. Luis JOYANES Aguilar, Fundamentos de programacin, algoritmos, estruc-
o Anotaciones
turas de datos y objetos, Mc Graw-Hill. 2003
3. GRIFFITH, Steven W. / CHAN, Mark C. / ISAI, Anthony F, Tips para pro-
gramar con Java: La gua ms completa para programadores de Java y Visual J++,
Editorial Mc Graw-Hill. 2003

Objetivos Inicio

AUTOEVALUACIN DE LA UNIDAD N II
Actividades Autoevaluacin
s

1. Implemente una clase que defina un nmero complejo, adems debe tener
dos mtodos que permitan calcular lo siguiente:
Glosario Bibliografa Suma de dos nmeros complejos:
s
(a + bi) + (c + di) = (a + c) + (b + d)i
Producto de dos nmeros complejos:
(a + bi).(c + di) = (ac bd) + (ad + bc)i
o Anotaciones
ollo
nidos 58
Actividades Autoevaluacin UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOS

as Glosario Bibliografa Diagrama Objetivos Inicio


nadas

SOLUCIONARIO DE LA AUTOEVALUACION N II
Desarrollo Actividades Autoevaluacin
de contenidos
torio Anotaciones

package objetos_clase;

Lecturas Glosario Bibliografa public class complejo {


seleccionadas
private double entera;
private double complejo;
private double r;
Recordatorio Anotaciones
private double o;

public complejo() {
}

public complejo(double entera, double complejo) {


this.entera = entera;
this.complejo = complejo;
establecer_r_o();
}

private void establecer_r_o() {


this.r = Math.abs(Math.sqrt(Math.pow(this.entera, 2) + Math.pow(this.
complejo, 2)));
this.o = Math.pow(Math.tan(this.complejo / this.entera), 1);
}

public double get_complejo() {


return this.complejo;
}

public double get_entera() {


return this.entera;
}

public void set_complejo(double complejo) {


this.complejo = complejo;
}

public void set_entera(double entera) {


this.entera = entera;
}

public complejo suma(complejo a, complejo b) {


complejo h = new complejo(a.get_entera() + b.get_entera(), a.get_comple-
jo() + b.get_complejo());
return h;
}
public complejo resta(complejo a, complejo b) {
complejo h = new complejo(a.get_entera() + b.get_entera(), a.get_comple-
jo() + b.get_complejo());
return h;
}
TCNICAS DE PROGRAMACIN
UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
59

Lecturas Glosario Bibliografa


seleccionadas
public complejo producto(complejo a, complejo b) {
complejo h = new complejo((a.r * b.r) * (Math.cos(a.o + b.o)), (a.r * b.r) *
Math.sin(a.o + b.o));
return h; Recordatorio Anotaciones

public complejo cociente(complejo a, complejo b) {


complejo h = new complejo((a.r / b.r) * (Math.cos(a.o + b.o)), (a.r / b.r)
* Math.sin(a.o + b.o));
return h;
}

public complejo potencia(complejo h, int potencia) {


complejo z = new complejo((Math.pow(h.r, potencia) * Math.cos(potencia *
h.o)), (Math.pow(h.r, potencia) * Math.sin(potencia * h.o)));
return z;
}

public complejo raiz(complejo h, int radicando) {


complejo z = new complejo((Math.pow(h.r, (1 / radicando)) * Math.cos(h.o
/ radicando)), (Math.pow(h.r, (1 / radicando)) * Math.sin(h.o / radicando)));
return z;
}

public String imprimir() {


if ((this.get_complejo() == 0) | (this.get_entera() == 0)) {
if (this.get_complejo() == 0) {
return "(" + this.get_entera() + ")";
} else {
return "(" + this.get_complejo() + "i)";
}
} else {
if (this.complejo < 0) {
return "(" + this.get_entera() + " " + Math.abs(this.get_complejo()) +
"i)";
} else {
return "(" + this.get_entera() + this.get_complejo() + ")";
}
}
}
}
60
TCNICAS DE PROGRAMACIN
Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
61

Diagrama Objetivos Inicio Lecturas Glosario Bibliografa


seleccionadas

UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN


ACCIN EN ENTORNO GRFICO
Desarrollo Actividades Autoevaluacin
de contenidos
Recordatorio Anotaciones

Lecturas
seleccionadas DIAGRAMA DE PRESENTACIN DE LA UNIDAD
Glosario Bibliografa

Diagrama Objetivos Inicio

Recordatorio
CONOCIMIENTOS
Anotaciones
PROCEDIMIENTOS ACTITUDES
Desarrollo Actividades Autoevaluacin
de contenidos
Unidad III: Programacin 1. Aplica los conceptos Valora la importancia de
orientada a objetos en de clases, Objetos y la implementacin de in-
accin en entorno grfico la metodologa de terfaces de usuarios con
Lecturas
seleccionadas
Glosario Bibliografa programacin orientada el manejo de datos
a Objetos en una
Tema N 1: Aplicando POO
aplicacin comercial que
con Java y ambiente grafico
integre clases graficas
1. Programacin
Recordatorio
Anotaciones 2. Utiliza las clases de
Orientada a Objetos:
Swing para desarrollar
Clase Graphics
aplicaciones graficas
2. Aplicacin Fecha. Clases
Java. Excepciones
Actividad N 1
3. Delegacin de eventos
Analiza y explica, los
mtodos y propiedades
Tema N 2: SWING necesarios para lograr la
11. SWING: Borders, interaccin y lgica de una
Etiquetas, Botones, aplicacin comercial
Grupos de botones,
Listas y cajas
Actividad N 2
combinadas, Texto,
Tooltips Disea, una aplicacin
comercial que emplea
2. SWING: Iconos,
Clases SWING, eventos, y
metodos, propiedades
mens

Lectura seleccionada 1:
Control de lectura N 2:
Historia de la interfaz
Responde un cuestionario
grfica de usuarios
de los Temas 1 y 2
Tomado de: Proyecto
De Investigacin, Carlos
Marrero Expsito, Diseo
Grfico Y Comunicacin
Visual ,Universidad De La
Laguna, Tenerife 2006

Lectura seleccionada
2: Primeros pasos para
programar aplicaciones
mviles en java PAULA
ANDREA VILLA S
Universidad Tecnolgica de
Pereira. Pginas 174 al 177

Desarrollo de
Autoevaluacin N 3
ollo
nidos 62
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFIC0

as Glosario Bibliografa
nadas
TEMA N 1: APLICANDO POO CON JAVA EN AMBIENTE GRFICO CON AWT

torio Anotaciones
1 PROGRAMACIN ORIENTADA A OBJETOS: CLASE GRAPHICS

1.1. Clase Graphics


La clase Graphics describe el contexto grfico y proporciona un conjunto de
funciones para dibujar las siguientes figuras

Lneas
Crculos y elipses
Rectngulos y polgones
Imgenes
Texto

El sistema de coordenadas que se usa en Java es similar a Windows. El rea de tra-


bajo del applet est compuesta por una matriz bidimensional de puntos o pixels.
Decimos que un punto tiene de coordendas (x, y) cuando est en la columna x
medida desde la izquierda, y est en la fila y, medida desde arriba. La esquina
superior izquierda es el origen (0, 0).

1.2. Mtodos
1.2.1. Mtodo resize, setSize:
Permite cambiar el tamao del formulario.
resize (int ancho, int alto)
resize(500,500);
setSize(500,500);
1.2.2. Mtodo getSize:
La funcin getSize nos devuelve un objeto de la clase Dimension cuyos miem-
bros width y height nos suministran la anchura y altura del componenete
int ancho=getSize().width;
int alto=getSize().heigth;
1.2.3. Mtodo drawString:
Permite escribir un texto en la pantalla.
g.drawString("Holasssss!!", 50, 60 );

1.2.4. Mtodos de la clase Graphics:


drawLine(x1,y1,x2,y2):
La funcin drawLine, le pasamos el punto inicial (x1,y1) y el punto final (x2,y2).
Para dibujar una lnea diagonal desde el origen (0, 0) o esquina superior izquier-
da, hasta la esquina inferior derecha, obtenemos las dimensiones del applet
mediante la funcin getSize, que devuelve un objeto de la clase Dimension. El
miembro width nos proporciona la anchura y el miembro height la altura.
g.drawLine(0, 0, getSize().width-1, getSize().height-1);

drawRect (x, y, ancho, alto):


La funcin drawRect dibuja el contorno de un rectangulo
g.drawRect (x,y, anchura,altura);

fillRect(x, y, ancho, alto)


Dbuja el rectngulo pintando su interior del color seleccionado, en este caso de
color rojo.
g.setColor(Color.red);
g.fillRect(50, 150, 50, 60);
TCNICAS DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFICODesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
63

Lecturas Glosario Bibliografa


seleccionadas
drawRoundRect (x,y, ancho, alto,ancho Arco, alto Arco ): Permite dibujar un
rectngulo con los bordes redondeados
g.drawRoundRect(3,3, 200, 100,25,25 );
drawOval (x, y, ancho, alto) Recordatorio Anotaciones

fillOval (x, y, ancho, alto)


Una elipse de dibuja mediante drawOval o fillOval, con los mismos parmetros
que el rectngulo
fillArc(x, y, ancho, alto, ang_inicial, ang_final)
drawArc(x, y, ancho, alto, ang_inicial, ang_final)
Un arco requiere dos parmetros ms el ngulo inical y el ngulo final.
Las sentencias que vienen a continuacin, dibujan un arco en el interior del
rectngulo cuyo origen es el punto 10, 10, cuya anchura es 150, y cuya altura es
100. El ngulo inicial es 0 y el final es 270, expresado en grados.
g.setColor(Color.cyan);
g.fillArc(10, 10, 150, 100, 0, 270);
g.setColor(Color.black);
g.drawArc(10, 10, 150, 100, 0, 270);

2 APLICACIN FECHA. CLASES JAVA. EXCEPCIONES

2.1. Aplicacin Fecha

import java.util.Date;
class FechaApp {
public static void main( String args[] ) {
Date hoy = new Date();
System.out.println( hoy );
}
}

Esta aplicacin es una versin modificada de HolaMundoApp de la que difiere


porque se importa la clase Date, la aplicacin se llama ahora FechaApp en vez
de HolaMundoApp, se crea un objeto Date y el mensaje de salida a pantalla es
diferente. Esta nueva aplicacin se almacenar en el fichero fuente Java, FechaA-
pp.java.

2.2. Clases Java


2.2.1.Clase Math:
La clase Math representa la librera matemtica de Java.

Funciones Matemticas
Si se importa la clase, se tiene acceso al conjunto de funciones matemticas es-
tndar:
ollo
nidos 64
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFIC0

as Glosario Bibliografa
nadas

Clase.metodo(parmetro[s]) Valor(es) de retorno


Math.abs( x ) para int, long, float y double
torio Anotaciones
Math.sin( double a ) devuelve el seno del ngulo a en radianes.
Math.cos( double a ) devuelve el coseno del ngulo a en radianes.
Math.tan( double a ) devuelve la tangente del ngulo a en
radianes.
Math.asin( double r ) devuelve el ngulo cuyo seno es r
Math.acos( double r ) devuelve el ngulo cuyo coseno es r
Math.atan( double r ) devuelve el ngulo cuya tangente es r
Math.atan2(double a,double b) devuelve el ngulo cuya tangente es a/b
Math.exp( double x ) devuelve e elevado a x
Math.log( double x ) devuelve el logaritmo natural de x
Math.sqrt( double x ) devuelve la raz cuadrada de x
Math.ceil( double a ) devuelve el nmero completo ms pequeo
mayor o igual que a
Math.floor( double a ) devuelve el nmero completo ms grande
menor o igual que a
Math.rint( double a ) devuelve el valor double truncado de a
Math.pow( double x,double y ) devuelve y elevado a x
Math.round( x ) para double y float
Math.random() devuelve un double
Math.max( a,b ) para int, long, float y double
Math.min( a,b ) para int, long, float y double

Math.E para la base exponencial, aproximadamente


2.72
Math.PI para PI, aproximadamente 3.14

El ejemplo mate1.java, muestra la utilizacin de algunas de las funciones de la


clase Math:

class mate1 {
public static void main( String args[] ) {
int x;
double rand,y,z;
float max;
rand = Math.random();
x = Math.abs( -123 );
y = Math.round( 123.567 );
z = Math.pow( 2,4 );
max = Math.max( (float)1e10,(float)3e9 );
System.out.println( rand );
System.out.println( x );
System.out.println( y );
System.out.println( z );
System.out.println( max );
}

2.2.2. Clase Character:


Declaraciones
La primera sentencia crear una variable carcter y la segunda un objeto Cha-
racter:
TCNICAS DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFICODesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
65

Lecturas Glosario Bibliografa


seleccionadas
char c;
Character C;

Recordatorio Anotaciones
Comprobaciones booleanas

Character.isLowerCase( char ) devuelve true si el carcter es una letra


minscula
Character.isUpperCase( char ) devuelve true si el carcter es una letra
mayscula
Character.isDigit( char ) devuelve true para caracteres
numricos
Character.isSpace( char ) devuelve true para espacios en blanco

En este caso, si tuvisemos un objeto Character C , no se podra hacer C.isLower-


Case(), porque no se ha hecho un new de Character. Estas funciones son estti-
cas y no conocen al objeto, por eso hay que crearlo antes.
Traslaciones de Caracteres

Character.toLowerCase( char ) convierte entre mayscula y minscula


Character.toUpperCase( char ) convierte entre minscula y mayscula

2.2.3. Clase Date:


La clase Date se utiliza para representar una fecha y una hora. Se pueden mani-
pular el da, mes, ao, da de la semana, horas minutos y segundos.
Constructores
Hay varios constructores para objetos Date, que ofrecen ms o menos nivel de
especificidad para la precisin que se desea para la hora.

Date() Inicializa el objeto con la fecha y hora


actual
Date( ao,mes,da ) Establecer la hora a las 00:00:00 (me-
dianoche) del da especificado
Date( ao,mes,da,horas,minutos ) Establecer la fecha y hora, dejando los
segundos a 0
Date( ao,mes,da,horas, Establecer la hora exacta
minutos,segundos )
Date( String ) Este constructor de Date, analizar una
representacin tipo cadena con la fecha
y hora y la convertir en objeto. Date
convierte muchos formatos de fecha
tipo cadena, pero debera seguirse la
sintaxis de fecha de tipo:
Date( "Fri Oct 3 21:23:45 GMT 1997"
Date( long ) Establece la hora exacta a partir del
numero de milisegundos que han pasa-
do desde el 1 de Enero de 1970, a las
00:00:00 GMT.

3 AWT
Cuando se desarrolla un programa de Java es importante seleccionar apro-
piadamente los componentes de la GUI (Graphics User Interface). Hay dos
conjuntos bsicos de componentes que sern utilizados para implementar la
interfaz de usuario. Estos dos grupos de componentes son AWT y Swing
AWT. El abstract window toolkit es una librera portable para aplicaciones y/o
applets. Provee la conexin entre la aplicacin y el sistema de ventanas nati-
vo. Los componentes AWT dependen de sus contrapartes en cdigo nativo
(llamados peers) para manejar su funcionalidad, por lo que frecuentemen-
te son llamados componentes heavyweigth.
ollo
nidos 66
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFIC0

as Glosario Bibliografa
nadas
3.1. Caractersticas de AWT
Amplio conjunto de componentes para interfaz grfica de usuario
Un modelo robusto para el manejo de eventos
torio Anotaciones
Herramientas para manejo de grficas e imgenes, incluyendo clases para
forma, color y tipo de letra
Clases para transferencia de datos

3.2. Ventajas de los componentes AWT


Los componentes AWT son ms rpidos porque usan peers nativos
La mayoria de los browsers soportan las clases AWT, as los applets
pueden correr sin necesidad de un Java plugin
Los componentes AWT reflejan mejor la interfaz propia del sistema en
el que estn ejecutndose

3.3. Desventajas de los componentes AWT


El uso de peers nativos crea limitaciones de plataforma, ya que algunos com-
ponentes podran no funcionar en algunas plataformas
Muchas compaas, incluyendo Borland y Sun, basan el desarrollo de nue-
vos componentes en Swing.
Los componentes awt no soportan caractersticas como iconos y tips

3.4. Componentes AWT


El abstract window toolkit contiene todas las clases para crear interfaces de usua-
rio y dibujar grficos. Un objeto como un botn o una barra de desplaza-
miento, en terminologa AWT es un componente. La clase componente es la
raz de todos los componentes AWT. Un contenedor es un componente
que puede contener componentes y otros contenedores. La siguiente figura
muestra el rbol de herencia para todas las clases componentes del AWT.

3.5. Clase Frame


La clase Frame proporciona marcos para los applets y las aplicaciones.
3.5.1. Constructores

Constructor Descripcin
Frame(); Crea un Frame, inicialmente es
invisible.
Frame(String); Crea un Frame, inicialmente es
invisible que lleva por titulo el
String recibido.

3.5.2. Metodos
Mtodo Descripcin
show(); Hace visible el frame
setVisible(boolean); Aparece/Esconde el frame
setIconImage(Image); Establece el Icono para el frame.
setSize (int ancho, int alto Establece las medidas del Frame
setLocation(int x, int y); Establece la posicin del frame en la pantalla.
setTitle(String); Define el titulo que aparece en la parte
superior del frame.
TCNICAS DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFICODesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
67

Lecturas Glosario Bibliografa


seleccionadas
3.5.3. Ejemplo Creacin de un frame
import java.awt.*;
public class Ejem_awt1 {
Recordatorio Anotaciones
public static void main(String args[]){
Frame f =new Frame();
f.setTitle("Mi primer Frame ");
f.setSize(250,400);
f.setLocation(300,300);
f.setVisible(true);
}
2do Ejemplo Creacin de un frame

3.6. Clase Color


La clase color permite manipular los colores para las operaciones grficas.
Utilizando el cdigo RGB (Red-Green-Blue). Cada color tiene un valor alfa
implcito de 1.0 o un valor explcito especificado en el constructor. El valor
alfa define la transparencia de un color y puede estar representado por un
valor flotante de 0.0 a 1.0 o por un valor entero entre 0 y 255

3.6.1. Los constructores de la clase colores son:


Constructor Descripcin
Color (int r,int g,int b); r representa el valor entero para rojo.
g representa el valor entero para verde.
b representa el valor entero para azul.
Color(float r,float g, float b); r representa el valor flotante para rojo.
g representa el valor flotante para verde.
b representa el valor flotante para azul.

La clase color tiene 13 constantes para los colores ms comunes

Constante R (Red) G(Green B(Blue)


Color.black 0 0 0
Color.blue 0 0 255
Color.cyan 0 255 255
ColordarkGray 64 64 64
Color.gray 128 128 128
Color.green 0 255 0
Color.lightGray 192 192 192
Color.magenta 255 0 255
Color.orange 255 200 0
Color.pink 255 175 175
Color.red 255 0 0
Color.white 255 255 255
Color.yellow 255 255 0
ollo
nidos 68
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFIC0

as Glosario Bibliografa
nadas
3.7. Clase Label
La clase Label permite colocar un texto no seleccionable en un frame.
Esta clase cuenta con mtodos que permiten cambiar el color, el fondo, la
torio Anotaciones alineacin y el tipo de letra del texto de la etiqueta.

3.7.1.Con structores

Constructor Descripcin
Label() Crea una etiqueta vaca
Label(String) Crea una etiqueta con el texto indi-
cado por el String. El texto esta justifi-
cado a la izquierda
Label(String, Alineacion) Crea una etiqueta con el texto indicado
por el objeto String. El texto esta justi-
ficado a la izquierda (LEFT,RIGHT o
CENTER)
3.7.2. Mtodos
Mtodo Descripcin
setText(String); Establece el texto de la etiqueta.
setAlignment(int); Establece la alineacin del texto (LEF-
T,RIGHT o CENTER)
setBounds(int x,int y ,int ancho,int Establece la posicin y tamao de la eti-
altura); queta.
pack() Ajusta el componente al tamao indi-
cado y layouts de sus componentes.
setVisible(boolean); Aparece/Esconde el componente

3.7.3. EJemplo de aplicacion de Label

3.8. Distribucion de Componentes


Clase Panel: Es el componente mas comn para agrupar a otros componentes.
Existen otras clases que ayudan a organizar los diversos Componentes que se
desean incorporar a un Panel. En el mtodo tradicional para organizar los
componentes se usan coordenadas XY, pero en ocasiones esto no es con-
veniente, porque no todos los sistemas operativos trabajan con la misma
resolucin. Para resolver este problema, java proporciona varias clases de
layout, que son esquemas predefinidos para distribuir los componentes. Los
TCNICAS DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFICODesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
69

Lecturas Glosario Bibliografa


seleccionadas
layouts ms comunes de java son

3.8.1. Clase FlowLayout:


Recordatorio Anotaciones
En este esquema los componentes se organizan de izquierda a derecha hasta
terminar la lnea y luego continua en la siguiente.Los valores vlidos
para la alineacin son:

FlowLayout.LEFT, FlowLayout.RIGHT y FlowLayout.CENTER.


Ejemplo:
import java.awt.*;
public class FlowLayout1 extends Frame{
void forma() {
Panel panel=new Panel();
setTitle("FlowLayout");
panel. setLayout(new FlowLayout(FlowLayout.RIGHT) );
panel.add(new Label("Costa"));
panel.add(new Label("Cebiche"));
panel.add(new Label("Frejoles") );
panel.add(new Label("Suspiro") );
panel.add(new Label("Lima") );
panel.add(new Label("Limn") );
panel.add(new Label("Sierra") );
panel.add(new Label("Trucha"));
panel.add(new Label("Pachamanca"));
panel.add(new Label("Papa a la huancaina") );
panel.add(new Label("Tumbo") );
panel.add(new Label("Tuna") );
panel.add(new Label("Selva") );
panel.add(new Label("Platano") );
panel.add(new Label("Sajino"));
panel.add(new Label("Naranja"));
panel.add(new Label("cacao") );
panel.add(new Label("Paiche") );
panel.add(new Label("Fruta") );
panel.add(new Label("Cereal con Fruta"));
add(panel);
pack(); setVisible(true);
}
}
class PruebaFlowLayout{
public static void main(String args[]){
FlowLayout1 pagina=new FlowLayout1();
pagina.forma();
}
}

3.9. Clase Button


La clase Button crea un botn con texto. Los objetos de esta clase, soportan cam-
bio de color de fondo y letra, pero no es posible agregarles imgenes.

3.9.1. Mtodos de la clase Button


ollo
nidos 70
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFIC0

as Glosario Bibliografa
nadas

Mtodo Descripcin
setFont(Font); Establece el tipo Letra
torio Anotaciones
setBackground(Color Selecciona color del fondo
setForeground(Color Cambia el color de la letra
setLabel(String) Cambia la etiqueta del botn.

Ejemplo
import java.awt.*;
public class Boton extends Frame{
void forma(){
Button boton1=new Button("Ingresar");
Button boton2= new Button();
boton1.setBackground(Color.yellow);
boton1.setFont(new Font("Arial",Font.ITALIC,10)) ;
boton2.setLabel("Cancelar");
setLayout(new FlowLayout());
add(boton1);
add(boton2);
pack();
setVisible(true);
}
}
class PruebaAwtBotones {
public static void main(String args[]){
Boton botonprueba=new Boton();
botonprueba.forma();
}
}

3.10. Excepciones
A continuacin se muestra cmo se utilizan las excepciones:
import java.awt.*;
import java.applet.Applet;
public class Saludos extends Applet {
private int i = 0;
private String Saludos[] = {"Hola Continente !","HOLA Mundo!","HOLA
Peru!!" };
public void paint( Graphics g ) {
for(int i=0;i<=2;i++){
g.drawString( Saludos[i],25+25*i,25+25*i );
i++;
}
}
}

Normalmente, un programa termina con un mensaje de error cuando se lanza


una excepcin. Sin embargo, Java tiene mecanismos para excepciones que per-
miten ver qu excepcin se ha producido e intentar recuperarse de ella. Vamos
a reescribir el mtodo paint() de esa versin iterativa del saludo:
TCNICAS DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFICODesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
71

Lecturas Glosario Bibliografa


seleccionadas
public void paint( Graphics g ) {
try {
g.drawString( Saludos[i],25,25 );
Recordatorio Anotaciones
} catch( ArrayIndexOutOfBoundsException e ) {
g.drawString( "Saludos desbordado",25,25 );
} catch( Exception e ) {
// Cualquier otra excepcin
System.out.println( e.toString() );
} finally {
System.out.println( "Esto se imprime siempre!" );
}
i++;
}
La palabra clave finally define un bloque de cdigo que se quiere que sea eje-
cutado siempre, de acuerdo a si se captur la excepcin o no. En el ejemplo
anterior, la salida en la consola, con i=4 sera:

Saludos desbordado
Esto se imprime siempre!

3.11. Delegacin de eventos


Los eventos estn organizados en jerarquas de clases de eventos. Se hace uso de
fuentes de eventos (Source) y receptores de eventos (Listener). Una fuente de
eventos es un objeto que tiene la capacidad de detectar eventos y notificar a los
receptores de eventos que se han producido esos eventos. Aunque el programa-
dor puede establecer el entorno en que se producen esas notificaciones, siempre
hay un escenario por defecto.
Algunas clases de eventos, como los de ratn, involucran a un determinado con-
junto de eventos diferentes. Una clase receptor que implemente el interfaz que
recoja estos eventos debe sobreescribir todos los mtodos declarados en el in-
terfaz. Para prevenir esto, de forma que no sea tan tedioso y no haya que sobre-
escribir mtodos que no se van a utilizar, se han definido un conjunto de clases
intermedias, conocidas como Adaptadores (Adapter).
El AWT define un conjunto determinado de eventos, aunque el programador
tambin puede definir sus propios tipos de eventos, derivando de EventObject,
o desde una de las clases de eventos del AWT.
package ejem_awt1;
import java.awt.*;
import java.awt.event.*;
public class Eventos1 extends Frame {
public Eventos1() {
super("Ejemplo");
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent ev) {
getGraphics().drawString("hi",ev.getX(), ev.getY());
}
});
}
public static void main(String[] args) {
Eventos1 f = new Eventos1();
f.setSize(300,200);
f.setVisible(true);
}
}
ollo
nidos 72
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFIC0

as Glosario Bibliografa
nadas
El AWT proporciona dos tipos conceptuales de eventos: de bajo nivel y semn-
ticos, como son:
java.util.EventObject
torio Anotaciones java.awt.AWTEvent
java.awt.event.ComponentEvent Componente redimensionado, desplazado
java.awt.event.FocusEvent Prdida, ganancia del focus por un Componente
java.awt.event.InputEvent
java.awt.event.KeyEvent El Componente recoge una pulsacin de teclado
java.awt.event.MouseEvent Detectar movimientos del ratn, pulsacin de
botones
java.awt.event.ContainerEvent
java.awt.event.WindowEvent
Como ya se ha indicado, algunas clases de eventos engloban a varios tipos dis-
tintos de eventos. Normalmente, hay un interfaz correspondiente a cada clase
de evento y hay mtodos del interfaz para cada tipo distinto de evento en cada
clase de evento.
Un evento semntico es un evento que se define a alto nivel y encapsula una
accin de un componente del interfaz de usuario. Algunos eventos de este tipo
son:
java.util.EventObject
java.awt.AWTEvent
java.awt.event.ActionEvent Ejecucin de un comando
java.awt.event.AdjustmentEvent Ajuste de un valor
java.awt.event.ItemEvent Cambio de estado de un item
java.awt.event.TextEvent Cambio de valor de un texto

3.12. Receptores de eventos


Un interfaz EventListener tendr un mtodo especfico para cada tipo de evento
distinto que trate la clase de evento. Por ejemplo, el interfaz FocusEventListener
define los mtodos focusGained() y focusLost(), uno para cada tipo de evento
que trata la clase FocusEvent.
Los interfaces de bajo nivel que define la versin del JDK 1.2 son los siguientes:
java.util.EventListener
java.awt.event.ComponentListener
java.awt.event.ContainerListener
java.awt.event.FocusListener
java.awt.event.KeyListener
java.awt.event.MouseListener
java.awt.event.MouseMotionListener
java.awt.event.WindowListener
Los interfaces de nivel semntico que define el AWT en la versin del JDK 1.2
son:
java.util.EventListener
java.awt.event.ActionListener
java.awt.event.AdjustmentListener
java.awt.event.ItemListener
java.awt.event.TextListener

3.12.1. Fuentes de eventos


Todas las fuentes de eventos del AWT soportan el multienvo a receptores. Esto
significa que se pueden aadir o quitar mltiples receptores de una sola fuente;
en otras palabras, la notificacin de que se ha producido un mismo evento se
puede enviar a uno o ms objetos receptores simultneamente.
java.awt.Component
TCNICAS DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFICODesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
73

Lecturas Glosario Bibliografa


seleccionadas
addComponentListener
addFocusListener
addKeyListener
Recordatorio Anotaciones
addMouseListener
addMouseMotionListener
java.awt.Container
addContainerListener
java.awt.Dialog
addWindowListener
java.awt.Frame
addWindowListener
Los receptores de eventos que se pueden registrar de tipo semntico sobre obje-
tos fuentes, generadores de eventos, en el JDK 1.2 son:
java.awt.Button
addActionListener
java.awt.Choice
addItemListener
java.awt.Checkbox
addItemListener
java.awt.CheckboxMenuItem
addItemListener
java.awt.List
addActionListener
addItemListener
java.awt.MenuItem
addActionListener
java.awt.Scrollbar
addAdjustmentListener
java.awt.TextArea
addTextListener
java.awt.TextField
addActionListener
addTextListener

TEMA N 02: SWING

4 SWING
Esta implementado completamente en lenguaje Java. Los componentes swing
no dependen de los peers para su funcionalidad, por lo que a estos com-
ponentes frecuentemente se le llama componentes lightweigth.
4.1. Caractersticas de Swing.
Tiene todas las caractersticas de AWT
Componentes de mayor nivel.
Depende de cdigo nativo.

4.2. Ventajas de Swing:


El diseo en Java puro provee menores limitaciones de plataforma.
El desarrollo de componentes Swing es ms activo.
ollo
nidos 74
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFIC0

as Glosario Bibliografa
nadas
Los componentes de swing soportan ms caractersticas.

4.3. Desventajas
torio Anotaciones
La mayora de los browsers no incluyen las clases Swing, por que es necesa-
rio usar un Java plugin.
Los componentes swing generalmente son ms lentos y presentan ms pro-
blemas debido a que estn hechos en Java puro y a problemas relacionados con
video en varias plataformas.
No siempre lucen igual que en el sistema donde fueron diseados.

En SWING los Componentes del interfaz grfico son Beans y utilizan el nue-
vo modelo de Delegacin de Eventos de Java. Swing proporciona un conjunto
completo de Componentes, todos ellos lightweight, es decir, ya no se usan com-
ponentes "peer" dependientes del sistema operativo, y adems, Swing est total-
mente escrito en Java. Todo ello redunda en una mayor funcionalidad en manos
del programador, y en la posibilidad de mejorar en gran medida la cosmtica de
los interfaces grficos de usuario.

4.4. Clases del paquete swing

4.5. Primer ejemplo de swing


TCNICAS DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFICODesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
75

Lecturas Glosario Bibliografa


seleccionadas
En este primer ejemplo notamos que los import hacen referencia al paquete
swing, especficamente a las clases JFrame y JLabel.
Inmediatamente en el constructor de la clase Swing1_1 se crea un objeto eti-
queta, el cual esta isntanciado desde la clase JLabel, a continuacin se agrega,Recordatorio
se Anotaciones

establece el tamao y se hace visible.


Para hacer que se muestre en el mtodo main, se invoca al constructor de la
clase, con lo cual visualizamos el mensaje Hola a todos.
Empleando listas y combobox
Las lista y cajas "combo" en Swing funcionan del mismo modo que lo hacan
en el AWT, aunque tienen incrementada la funcionalidad a travs de algunas
funciones de conveniencia que se han incorporado. Por ejemplo, JList tiene un
constructor al que se puede pasar un array de objetos String para que los presen-
te, como es el caso del array datos.

4.6. Usando Spinners


Una modificacin del control de JComboBox es JSpinner, que permite disear
controles de seleccin en los cuales el usuario puede ir variando los elementos a
seleccionar uno a uno. La diferencia con JComboBox es que no se presenta una
lista desplegable con los elementos seleccionables, sino que van apareciendo en
la zona de visualizacin en orden ascendente o descendente, segn el usuario
utilice los botones de la zona de seleccin
Swing proporciona clases adicionales para la creacin de los modelos de datos
que se pueden integrar en este componente, dependiendo del tipo de entrada
que se desee presentar al usuario. Las clases SpinnerDateModel acepta la en-
trada o seleccin de fechas, presentando en la zona de visualizacin del com-
ponente fechas que se pueden indicar a travs de las constantes definidas en la
clase Calendar, por ejemplo, Calendar.WEEK_OF_MONTH cambiar la fecha
presentada de semana en semana, en perodos de 7 das. La clase SpinnerList-
Model permite la seleccin de elementos dentro de una lista predefinida. La
clase SpinnerNumberModel acepta como entrada la seleccin de nmeros entre
un rango determinado y con un intervalo prefijado.

package spinner;
import java.awt.*; import java.awt.event.*;
import java.util.*;
import javax.swing.*; import javax.swing.event.*;
public class Spinner extends JPanel {
JSpinner spinFecha1; JSpinner spinFecha2;
JSpinner spinNumero; JSpinner spinLista;
public Spinner(){
setLayout( null );
JLabel labFecha1 = new JLabel("Selecciona un da:" );
ollo
nidos 76
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFIC0

as Glosario Bibliografa
nadas
labFecha1.setBounds( 5,10,120,24 );
add( labFecha1 );
SpinnerDateModel modeloFecha1 = new SpinnerDateModel();
torio Anotaciones
modeloFecha1.setCalendarField( Calendar.DAY_OF_WEEK );
spinFecha1 = new JSpinner( modeloFecha1 );
spinFecha1.setBounds( 160,10,150,24 );
add( spinFecha1 );
JLabel labNumero = new JLabel( "Selecciona un nmero:" );
labNumero.setBounds( 5,70,150,24 );
add( labNumero );
SpinnerNumberModel modeloNumero = new SpinnerNumberModel(
1,0.0,1000.0,0.5 );
spinNumero = new JSpinner( modeloNumero );
spinNumero.setBounds( 160,70,150,24 );
add( spinNumero );
String[] colores = { "Amarillo","Marrn","Azul","Rojo","Naranja","Negro" };
JLabel labLista = new JLabel( "Selecciona un color:" );
labLista.setBounds( 5,100,150,24 );
add( labLista );
SpinnerListModel modeloLista = new SpinnerListModel( colores );
spinLista = new JSpinner( modeloLista );
spinLista.setValue( "Azul" );
spinLista.setBounds( 160,100,150,24 );
add( spinLista );
}
public static void main(String[] args) {
JFrame frame = new JFrame( "Spinners, CONTI" );
frame.setDefaultCloseOperation( frame.EXIT_ON_CLOSE );
frame.getContentPane().add( new Spinner(),BorderLayout.CENTER );
frame.setSize( 325,170 ); frame.setVisible( true );
}}
Diagrama Objetivos Inicio

Desarrollo Actividades Autoevaluacin


de contenidos


LECTURA SELECCIONADA N 1: HISTORIA DE LA INTERFAZ
Lecturas
seleccionadas GRAFICA
Glosario
DE USUARIO
Bibliografa

La interfaz grfica, tiene una historia que contar: nace en el ao 1973 en el


centro de investigacin Xerox Alto, donde se parte con el objetivo bsico de
encontrar un modelo ptimo de interaccin persona-ordenador
Recordatorio
Nacimiento
Anotaciones
de la interfaz grfica (1970 1981) Ya desde los aos cuarenta, se
haba trazado de forma terica, modelos de ordenadores personales que deban
servir para almacenar, editar y compartir informacin de forma sencilla.
Estos primeros aos estn marcados por los pioneros en la investigacin, los
cuales trataron de dar forma a la interfaz grfica, y por extensin a un sistema
operativo ptimo que permitiese una interaccin amigable entre las personas y
los ordenadores
Uno de estos protagonistas sera el centro de investigacin PARC (Palo Alto Re-
seach Center), una divisin que la empresa Xerox Corporation constituira en
TCNICAS DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFICODesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
77

Lecturas Glosario Bibliografa


seleccionadas
el ao 1970. All se desarrollaran las
investigaciones ms importantes de
esta poca relacionadas con la com-
putacin, culminando en el ao 1981 Recordatorio Anotaciones
con el desarrollo del ordenador Xe-
rox Star, el cual resuma once intensos
aos de investigacin realizados en el
Xerox Parc.
Primera Interfaz grfica de usuario:
Xerox Alto (1973) En el ao 1973, de
mano del centro de investigacin Xe-
rox Parc, nacera el primer ordenador
que incluira la primera interfaz grfi-
ca de la historia. El Xerox Alto sera
diseado por un equipo formado por
Ed McCreight, Chuck Thacker, Butler
Lampson, Bob Sproull, y Dave Boggs.
La intencin por parte de Xerox fue la de desarrollar un sistema informtico
lo suficientemente pequeo y transportable con capacidad para ser ubicado en
una oficina. Debera tener capacidad para poder manejar un sistema operativo
con interfaz grfica y poder compartir informacin de forma sencilla. Con la
materializacin del Xerox Alto se haba conseguido la primera aproximacin al
concepto de ordenador moderno.
El Xerox Alto posea una interfaz grfica rudimentaria en blanco y negro, con
la que se poda interaccionar mediante un ratn. Los botones seran represen-
tados a travs de formas textuales, de un modo muy simple. No fue implantado
ningn sistema de ventanas en este modelo. La interfaz grfica no presentaba
elementos icnicos, ni pestaas, ni barras de desplazamiento en la navegacin
de la informacin
Interfaz grfica del Xerox Star 8010 En el ao 1981, fue concluido el sucesor
del Xerox Alto, el ordenador Xerox Star 8010. Un grupo de doscientos desa-
rrolladores, dirigidos por Don Massaro, seran los encargados de disear este
ordenador cuyo principal objetivo sera incorporar las mejores caractersticas
del Xerox Alto, que adems fuese fcil de usar, con capacidad para automatizar
y facilitar tareas de oficina
El ordenador fue etiquetado como la oficina del futuro, y entre los principa-
les objetivo del proyecto, se encontraba, copiar e implementar el concepto de
oficina virtual, buscando adems la facilidad de uso por parte del usuario
Desarrollo y eclosin de las interfaces grficas (1981 1995) El segundo perio-
do de la evolucin histrica de las interfaces grficas est unida a la revolucin
de los ordenadores personales surgida en el ao 1981. Para la interfaz grfica,
este perodo significa su implementacin definitiva en los hogares y oficinas de
trabajo
A partir del ao 1981 se produce el despliegue industrial definitivo de la venta
de ordenadores personales y su implantacin definitiva en todas las esferas de
la infraestructura social de los pases desarrollados. Se introduce el ordenador
personal en el mercado (PC), y su xito estar en gran parte condicionado por
la capacidad de la interfaz grfica de facilitar la interaccin con los ordenadores.
Por un lado Apple acabara definiendo el modelo incluido en su MAC OS, y por
otro lado, el modelo de Windows quedara definitivamente desarrollado al final
de este periodo por la empresa Microsoft, ambos inspirados y herederos del mo-
delo de interaccin WIMP desarrollado en el Xerox Parc
Los principales protagonistas de este periodo sern IBM, Microsoft, Apple y el
proyecto de software libre GNU/LINUX.
Apple Lisa (1983) y Apple Macintosch (1984) Tras realizar el primer ordenador
Apple I (1976), y haber invertido los beneficios en el diseo y produccin del
Apple II (1977), Apple computers, formada en sus comienzos por dos aficiona-
dos a la electrnica llamados Steve Jobs y Steve Wozniak, lanzaran al mercado en
el ao 1983 el ordenador Apple Lisa, el primer ordenador de Apple con interfaz
grfica de usuario integrada
Next GEM (1985) En el ao 1985 fue desarrollado el entorno grfico GEM, por
la empresa Digital Researchs. El interfaz grfico GEM se integraba con el siste-
ollo
nidos 78
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFIC0

as Glosario Bibliografa
nadas
ma operativo DOS bajo plataforma IBM. Ms tarde este interfaz grfico sera
adaptado en los ordenadores Atari St igualmente.
Amiga WorkBench (1985) En este mismo ao, sera lanzado al mercado el orde-
torio Anotaciones nador Amiga por la empresa Commodore, el cual vendra integrado con una
interfaz grfica llamada WorkBench
El interfaz WorkBench fue diseado en cuatro colores: Blanco, negro, azul y
naranja. Fue especialmente adaptada para ser visualizada en una gama mplia
de monitores y televisores a travs de un diseo en alto contraste
Microsoft Windows 1.0 (1985) La ampliacin de cuotas de mercado de mano de
IBM, hizo posible la necesaria colaboracin entre sta, y la empresa Microsoft,
la cual adaptara su sistema operativo MS-DOS a una interfaz grfica de usuario
para operar sobre ordenadores IBM en el ao 1985. Este sistema operativo sera
Windows 1.0
Commodore GEOS (1986) En el ao 1986 naci GEOS, un interfaz grfico pri-
merizo desarrollado especialmente para el ordenador personal Commodore 64,
el cual tendra gran repercusin de ventas en el mercado de los ordenadores
personales, siendo adaptado posteriormente para poder funcionar bajo los or-
denadores personales de IBM
GEOS incluye varias aplicaciones, como un calendario y un procesador de textos
Al contrario que con el resto de interfaces grficas, los usuarios de GEOS no usa-
ron de forma habitual el ratn como interfaz humana, sino teclado y joystick21
como dispositivos de interaccin
Risc OS (1987) En el ao 1987 Arcon Computers, desarrollara la primera ver-
sin del RISC OS, con una interfaz grfica de usuario llamada Arthur
Arthur fue una interfaz grfica diseada a color, la cual usa como interfaz huma-
na un ratn de tres botones. A la hora de conceptualizar los mens de comandos
y acciones en la interfaz, Arthur elige la estrategia de ubicar las acciones no en
mens fijos en el escritorio, sino en mens contextuales22 que son activados con
el botn central del ratn NEXT STEP (1989) La empresa Next Computer Ic.
desarrollara en el ao 1989 una interfaz grfica para sus propios ordenadores
personales llamados Next. La interfaz grfica funcionaba gracias a un visualiza-
dor postscript, que la empresa Next diseara en base a los desarrollos realiza-
dos por la empresa Adobe
Su sistema de ventana dispone el men de navegacin(scroll) al lado izquierdo.
Incluye un original sistema para navegar por el sistema de archivos que consiste
en ir aandiendo columnas para representar la jerrqua adems de un scroll
horizontal para la navegacin
Windows 95 (1995) El sistema operativo windows 95 fue lanzado por Microsoft
en octubre del ao 1995. Este sistema operativo significa el inicio del imperio
Microsoft en el mercado del software informtico
Microsoft consigue integrar en Windows 95, el sistema operativo MS-DOS con
una interfaz grfica de forma coherente. Windows 95 tiene una clara orientacin
a redes, por lo que vendr integrado con el software Internet Explorer, que sus-
tituir al gestor de archivos dispuesto anteriormente
BEOS (1995) El sistema Operativo Beos, fue desarrollado por la empresa de ori-
gen francs Be Incorporated, en el ao 1995, diseado principalmente para tra-
bajar de forma eficiente sobre aplicaciones multimedia en la plataforma BeBox,
con una clara orientacin grfica que hara buen uso de su entorno grfico. A
pesar de constituir un producto excepcional, la empresa Be caera en bancarro-
ta debido a las estrategias de mercado realizadas por sus competidores
KDE (1998) El proyecto KDE (K - Desktop Environment) naci en el ao 1996,
dentro del contexto del software libre, de mano del desarrollador alemn Mat-
thias Ettrich. El sistema de ventanas KDE (K desktop Environment) es lanzado
en su primera versin dos aos ms tarde. El objetivo del proyecto es desarro-
llar un interfaz grfico que opere sobre sistemas operativos Unix, especialmente
GNU/LINUX y que posibilite un mtodo de interaccin amigable con la com-
putadora similar a los que ofrecen Windows o Mac OS en otras plataformas.
TCNICAS DE PROGRAMACIN
Diagrama
UNIDAD
Objetivos
III: PROGRAMACIN
Inicio
ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFICODesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
79

Desarrollo Actividades Autoevaluacin


de contenidos Lecturas Glosario Bibliografa
seleccionadas

LECTURA SELECCIONADA N II: DESARROLLO DE APLICACIO-


Lecturas
seleccionadas NES JAVABibliografa
Glosario
PARA MOVILES. Recordatorio Anotaciones

Cada da son ms los usuarios de dispositivos mviles, lo que ha convertido estos


dispositivos en una parte esencial de la vida cotidiana de las personas, debido a
Recordatorio
lasAnotaciones
mejoras tanto en la posibilidad de acceso como en el desarrollo de software.
Los sistemas operativos y las aplicaciones de los dispositivos mviles han estado
en constante desarrollo Sun Mycrosystems da un paso adelante dentro de su
tecnologa Java y brinda la posibilidad de emplear J2ME(Java 2 Micro Edition)
que es una coleccin de funciones y procedimientos que ofrece una biblioteca
para ser utilizada en los desarrollos de software. Esta librera est desarrollada
en java y est orientada a productos de consumo como PDAs, telfonos mvi-
les, smartPhones inclusive electrodomsticos
La mayora de los telfonos actuales son capaces de ejecutar aplicaciones desa-
rrolladas por terceros (ajenos al fabricante), y dado las caractersticas de hardwa-
re limitadas de los celulares, el uso de J2ME una versin de Java optimizada para
uso en mviles es una buena opcion.
J2ME: Java 2 Micro Edition ofrece una plataforma de desarrollo que permite
controlar unas serie de funcionalidades del telfono, como Bluetooth, cmara,
conexin GSM, teclas, etc.
J2ME es un estndar limitado de Java, ya que fue diseado para desarrollar apli-
caciones en celulares, tomando en cuenta su poco poder de procesamiento y
memoria.
Para poder ejecutar una aplicacin en Java, es necesario que los fabricantes de
celulares cumplan con el estndar desarrollado por SUN.

Para instalar J2ME Wireless Toolkit, primero se debe instalar las libreras ne-
cesarias de java. Se puede descargar la ltima versin de JDK desde la URL
http://java.sun.com/javase/downloads/index.jsp. Cuando se descargue y se
instale, se descarga el J2ME desde la URL http://java.sun.com/j2me/down-
load.html. Por ltimo se instala el programa NetBeans mobility que es un
entorno de desarrollo muy cmodo y muy potente.

Diagrama Objetivos Inicio

ACTIVIDAD N2:
Desarrollo
de contenidos Esta actividad
Actividades
Autoevaluacin
puede consultarla en su aula virtual.

Lecturas Glosario Bibliografa


seleccionadas

Recordatorio Anotaciones
ollo
nidos 80
Actividades Autoevaluacin Diagrama Objetivos
UNIDAD
Inicio
III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFIC0

Desarrollo Actividades Autoevaluacin


as Glosario Bibliografa de contenidos
nadas

BIBLIOGRAFIA DE LA UNIDAD III


Lecturas Glosario Bibliografa
seleccionadas
torio Anotaciones
1. Romn Leobardo, Metodologa de la programacin orientada a objetos, Alfaomega,
2006 UBICACIN: Biblioteca UCCI: Cod. 005 L88 2006
2. Alfonso Vidal Romero Elizondo, Como programar en Java, Pearson/Educacion,
Recordatorio Anotaciones
2004.

Diagrama Objetivos Inicio

AUTOEVALUACION N 03
Desarrollo Actividades Autoevaluacin
de contenidos 1. Desarrollar un pequeo bloc de notas, con funcionalidad limitada como se
muestra en la figura.

Lecturas Glosario Bibliografa


seleccionadas

Recordatorio Anotaciones

Diagrama Objetivos Inicio

Solucionario de la autoevaluacin N 3
Desarrollo
de contenidos
Actividades Autoevaluacin
Ejercicio 1:

import java.awt.Font;
Lecturas Glosario Bibliografa public class texto extends javax.swing.JFrame {
seleccionadas
public texto() {
initComponents();
for (int x = 1; x <= this.tipo_letra.length; x++) {
Recordatorio Anotaciones
this.jComboBox1.addItem(this.tipo_letra[x - 1]);
}
for (int x = 1; x <= this.tamao_letra.length; x++) {
this.jComboBox2.addItem(this.tamao_letra[x - 1]);
}
this.jComboBox1.removeItemAt(0);
this.jComboBox2.removeItemAt(0);
}

private void initComponents() {


jCheckBox1 = new javax.swing.JCheckBox();
jCheckBox2 = new javax.swing.JCheckBox();
jComboBox1 = new javax.swing.JComboBox();
jComboBox2 = new javax.swing.JComboBox();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLO-
SE);
jCheckBox1.setText("Negrita");
jCheckBox1.addActionListener(new java.awt.event.ActionListener() {
TCNICAS DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFICODesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
81

Lecturas Glosario Bibliografa


seleccionadas
public void actionPerformed(java.awt.event.ActionEvent evt) {
jCheckBox1ActionPerformed(evt);
}
Recordatorio Anotaciones
});
jCheckBox2.setText("Cursiva");
jCheckBox2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jCheckBox2ActionPerformed(evt);
}
});
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new
String[]{"Arial"}));
jComboBox1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {


jComboBox1ActionPerformed(evt);
}
});
jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new
String[]{"10"}));
jComboBox2.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {


jComboBox2ActionPerformed(evt);
}
});
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getCon-
tentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING).addGroup(layout.createSequentialGroup().addContainerGap().
addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING).addComponent(jScrollPane1, javax.swing.GroupLayout.PREFE-
RRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.
PREFERRED_SIZE).addGroup(javax.swing.GroupLayout.Alignment.TRAI-
LING,
layout.createSequentialGroup().addGroup(layout.createParallelGroup(-
javax.swing.GroupLayout.Alignment.LEADING).addComponent(jCheckBox1).
addComponent(jComboBox1, 0, 93, Short.MAX_VALUE)).addPreferredGap(-
javax.swing.LayoutStyle.ComponentPlacement.RELATED).addGroup(layout.
createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING).add-
Component(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, 41,
javax.swing.GroupLayout.PREFERRED_SIZE).addComponent(jChec-
kBox2)).addGap(20, 20, 20))).addContainerGap()));
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING).addGroup(layout.createSequentialGroup().addContainerGap().ad-
dComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLa-
yout.PREFERRED_SIZE).addPreferredGap(javax.swing.LayoutStyle.Compo-
ollo
nidos 82
Actividades Autoevaluacin UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFIC0

as Glosario Bibliografa
nadas
nentPlacement.RELATED).addGroup(layout.createParallelGroup(javax.swing.
GroupLayout.Alignment.BASELINE).addComponent(jCheckBox1).addCom-
ponent(jCheckBox2)).addPreferredGap(javax.swing.LayoutStyle.Componen-
torio Anotaciones
tPlacement.RELATED).addGroup(layout.createParallelGroup(javax.swing.
GroupLayout.Alignment.BASELINE).addComponent(jComboBox1, javax.
swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.
PREFERRED_SIZE).addComponent(jComboBox2, javax.swing.GroupLayout.
PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.
PREFERRED_SIZE)).addContainerGap(24, Short.MAX_VALUE)));
pack();
}
String tipo_letra[] = {"Arial", "Agency FB", "Times New Roman", "Comic Sans
MS"};
int tamao_letra[] = {10, 12, 14, 18};

private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt)


{asigname_letra(); }

private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt)


{asigname_letra(); }

private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {


asigname_letra(); }

private void jComboBox2ActionPerformed(java.awt.event.ActionEvent evt)


{asigname_letra(); }

private void asigname_letra() {


int a = 0;
if (this.jCheckBox1.isSelected()) {
a = a + Font.BOLD;
}
if (this.jCheckBox2.isSelected()) {
a = a + Font.ITALIC;
}
this.jTextArea1.setFont(new Font(this.jComboBox1.getSelectedItem().toS-
tring(), a,
Integer.parseInt(this.jComboBox2.getSelectedItem().toString())));
}

public static void main(String args[]) {


java.awt.EventQueue.invokeLater(new Runnable() {
public void run() { new texto().setVisible(true);}
});
}
private javax.swing.JCheckBox jCheckBox1;
private javax.swing.JCheckBox jCheckBox2;
private javax.swing.JComboBox jComboBox1;
private javax.swing.JComboBox jComboBox2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
}
TCNICAS DE PROGRAMACIN
UNIDAD III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFICODesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
83

Lecturas Glosario Bibliografa


seleccionadas

Recordatorio Anotaciones
84
TCNICAS DE PROGRAMACIN
Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
85

Diagrama Objetivos Inicio Lecturas Glosario Bibliografa


seleccionadas

UNIDAD IV: ACCESO A DATOS Y PROGRAMACIN ORIENTADA A


OBJETOS
Desarrollo Actividades Autoevaluacin
de contenidos
Recordatorio Anotaciones

Lecturas
seleccionadas DIAGRAMA DE PRESENTACIN
Glosario Bibliografa

Diagrama Objetivos Inicio

Recordatorio CONOCIMIENTOS
Anotaciones PROCEDIMIENTOS ACTITUDES
Desarrollo Actividades Autoevaluacin
de contenidos
Unidad IV: Acceso a base Emplea Java con JDBC Valora la importancia de
de datos y Programacin para Insertar, modificar, la implementacin de
orientada a objetos eliminar y seleccionar interfaces de usuarios
Lecturas
seleccionadas
Glosario Bibliografa registros desde base de con el manejo de datos
datos
Tema 1:Bases de datos y
Java
1. Base de Datos. Actividad N 1
Recordatorio Anotaciones
2. Conectividad JDBC, Presenta una aplicacin
Modelo de dos capas. sencilla orientada al
manejo de una tabla de
una base de datos
Tema 2 : Enlazando a base
1. Identifica el manejo de
de datos.
las clases para el acceso a
1. Puente JDBC-ODBC. Datos
2. Base de datos: Microsoft
Access.
Actividad N2:
Integra los conceptos de la
Lectura seleccionada 1 Programacin Orientada
Bases de datos y la Web. a Objetos con acceso a
Sistemas de informacin. una Base de Datos en
Laudon y Laudon Pg. una aplicacin de tipo
245, 246 comercial

Desarrollo de Tarea acadmica N 2:


Autoevaluacin N 4 Desarrolla una aplicacin
comercial con interfaces
grficas y acceso a base de
datos
ollo
nidos 86
Actividades Autoevaluacin UNIDAD IV: ACCESO A DATOS Y PROGRAMACIN ORIENTADA A OBJETOS

as Glosario Bibliografa
nadas
TEMA N 01: BASES DE DATOS Y JAVA

torio Anotaciones
1 CONECTIVIDAD A BASE DE DATOS
JDBC (Java DataBase Connectivity) es un API de Java que permite al programa-
dor ejecutar instrucciones en lenguaje estndar de acceso a Bases de Datos, SQL
(Structured Query Language, lenguaje estructurado de consultas), que es un
lenguaje de muy alto nivel que permite crear, examinar, manipular y gestionar
Bases de Datos relacionales.
Para que una aplicacin pueda hacer operaciones en una Base de Datos, tienen
que tener una conexin con ella, lo cual se establece a travs de un driver, que
convierte el lenguaje de alto nivel a sentencias de Base de Datos. Es decir, las tres
acciones principales que realizar JDBC son las de establecer la conexin a una
base de datos, ya sea remota o no; enviar sentencias SQL a esa base de datos y, en
tercer lugar, procesar los resultados obtenidos de la base de datos.

1.1. Base de datos


Una Base de Datos es una serie de tablas que contienen informacin ordenada
en alguna estructura que facilita el acceso a esas tablas, ordenarlas y seleccionar
filas de las tablas segn criterios especficos. Las bases de datos generalmente
tienen ndices asociados a alguna de sus columnas, de forma que el acceso sea
lo ms rpido posible. Las Bases de Datos son, sin lugar a dudas, las estructuras
ms utilizadas en computadores; ya que son el corazn de sistemas tan comple-
jos como el de Identificacion Nacional(DNI), la nmina de empleados de una
empresa, el sistema de facturacin de una multinacional, o el medio por el que
un cajero automatico consulta nuestro saldo en la cuenta bancaria.
Entre aquellas que usan la plataforma PC como cliente para acceder a un ser-
vidor, tenemos a IBM DB/2, Microsoft SQL Server, Oracle, Sybase, SQLBase,
Informix, XDB y Postgres. Todas estas bases de datos soportan varios dialectos
similares de SQL, y todas parecen, a primera vista, intercambiables. La razn de
que no sean intercambiables, por supuesto, es que cada una est diseada con
unas caractersticas de rendimiento distintas, con un interfaz de usuario y pro-
gramacin diferente. Aunque todas ellas soportan SQL y la programacin es
similar, cada base de datos tiene su propia forma de recibir las consultas SQL y
su propio modo de devolver los resultados. Aqu es donde aparece el siguiente
nivel de estandarizacin, de la mano de ODBC (Open DataBase Conectivity).

ODBC:
Open DataBase Connectivity (ODBC) es un estndar de acceso a las bases de
datos desarrollado por SQL Access Group en 1992. El objetivo de ODBC es hacer
posible el acceder a cualquier dato desde cualquier aplicacin, sin importar qu
sistema de gestin de bases de datos (DBMS) almacene los datos. ODBC logra
esto al insertar una capa intermedia (CLI) denominada nivel de Interfaz de
Cliente SQL, entre la aplicacin y el DBMS. El propsito de esta capa es traducir
las consultas de datos de la aplicacin en comandos que el DBMS entienda. Para
que esto funcione tanto la aplicacin como el DBMS deben ser compatibles con
ODBC, esto es que la aplicacin debe ser capaz de producir comandos ODBC y
el DBMS debe ser capaz de responder a ellos. El software funciona de dos modos,
con un software manejador en el cliente, o una filosofa cliente-servidor. En el
primer modo, el driver interpreta las conexiones y llamadas SQL y las traduce
desde el API ODBC hacia el DBMS. En el segundo modo para conectarse a la
base de datos se crea una DSN dentro del ODBC que define los parmetros,
ruta y caractersticas de la conexin segn los datos que solicite el creador o
fabricante.
TCNICAS DE PROGRAMACIN
UNIDAD IV: ACCESO A DATOS Y PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
87

Lecturas Glosario Bibliografa


seleccionadas
2 CONECTIVIDAD JDBC, MODELO DE 2 CAPAS

2.1. Conectividad JDBC


Recordatorio Anotaciones
Para la gente del mundo Windows, JDBC es para Java lo que ODBC es para
Windows. Windows en general no sabe nada acerca de las bases de datos,
pero define el estndar ODBC consistente en un conjunto de primitivas que
cualquier driver o fuente ODBC debe ser capaz de entender y manipular. Los
programadores que a su vez deseen escribir programas para manejar bases de
datos genricas en Windows utilizan las llamadas ODBC. Con JDBC ocurre
exactamente lo mismo: JDBC es una especificacin de un conjunto de clases
y mtodos de operacin que permiten a cualquier programa Java acceder a
sistemas de bases de datos de forma homognea. Lgicamente, al igual que
ODBC, la aplicacin de Java debe tener acceso a un driver JDBC adecuado. Este
driver es el que implementa la funcionalidad de todas las clases de acceso a
datos y proporciona la comunicacin entre el API JDBC y la base de datos real.
La necesidad de JDBC, a pesar de la existencia de ODBC, viene dada porque
ODBC es un interfaz escrito en lenguaje C, que al no ser un lenguaje portable,
hara que las aplicaciones Java tambin perdiesen la portabilidad. Y adems,
ODBC tiene el inconveniente de que se ha de instalar manualmente en cada
mquina; al contrario que los drivers JDBC, que al estar escritos en Java son
automticamente instalables, portables y seguros.

Toda la conectividad de bases de datos de Java se basa en sentencias SQL, por


lo que se hace imprescindible un conocimiento adecuado de SQL para realizar
cualquier clase de operacin de bases de datos. Aunque, afortunadamente, casi
todos los entornos de desarrollo Java ofrecen componentes visuales que propor-
cionan una funcionalidad suficientemente potente sin necesidad de que sea ne-
cesario utilizar SQL, aunque para usar directamente el JDK se haga imprescindi-
ble. La especificacin JDBC requiere que cualquier driver JDBC sea compatible
con al menos el nivel de entrada de ANSI SQL 92 (ANSI SQL 92 Entry Level).
2.2. Modelo de dos capas
Este modelo se basa en que la conexin entre la aplicacin Java o el applet que
se ejecuta en el navegador, se conectan directamente a la base de datos.
ollo
nidos 88
Actividades Autoevaluacin UNIDAD IV: ACCESO A DATOS Y PROGRAMACIN ORIENTADA A OBJETOS

as Glosario Bibliografa
nadas
Esto significa que el driver JDBC especfico para conectarse con la base de datos,
debe residir en el sistema local. La base de datos puede estar en cualquier otra
mquina y se accede a ella mediante la red. Esta es la configuracin de tpica
torio Anotaciones
Cliente/Servidor: el programa cliente enva instrucciones SQL a la base de da-
tos, sta las procesa y enva los resultados de vuelta a la aplicacin.

TEMA N 2: ENLAZANDO A BASE DE DATOS

1 MODELO DE TRES CAPAS, PUENTE JDBC-ODBC


1.1. Modelo de tres capas
En este modelo de acceso a las bases de datos, las instrucciones son enviadas a
una capa intermedia entre Cliente y Servidor, que es la que se encarga de enviar
las sentencias SQL a la base de datos y recoger el resultado desde la base de
datos. En este caso el usuario no tiene contacto directo, ni a travs de la red, con
la mquina donde reside la base de datos.
Este modelo presenta la ventaja de que el nivel intermedio mantiene en todo
momento el control del tipo de operaciones que se realizan contra la base de
datos, y adems, est la ventaja adicional de que los drivers JDBC no tienen
que residir en la mquina cliente, lo cual libera al usuario de la instalacin de
cualquier tipo de driver.

1.2. Puente JDBC-ODBC


La primera categora de drivers es la utilizada por Sun inicialmente para
popularizar JDBC y consiste en aprovechar todo lo existente, estableciendo un
puente entre JDBC y ODBC. Este driver convierte todas las llamadas JDBC a
llamadas ODBC y realiza la conversin correspondiente de los resultados.

La ventaja de este driver, que se proporciona con el JDK, es que Java dispone de
acceso inmediato a todas las fuentes posibles de bases de datos y no hay que ha-
cer ninguna configuracin adicional aparte de la ya existente. No obstante, tiene
dos desventajas muy importantes; por un lado, la mayora de los drivers ODBC
a su vez convierten sus llamadas a llamadas a una librera nativa del fabricante
DBMS, con lo cual la lentitud del driver JDBC-ODBC puede ser exasperante,
al llevar dos capas adicionales que no aaden funcionalidad alguna; y por otra
parte, el puente JDBC-ODBC requiere una instalacin ODBC ya existente y con-
figurada.
JDBC (Java DataBase Connectivity) es un API Java que permite a las aplicaciones
interactuar directamente con motores de base de datos relacionales, esta API
JDBC, pertenece a la plataforma Java, por lo que no es necesario descargar
ningn paquete adicional. Incluye manejo de conexiones, ejecucin de
sentencias SQL y result sets que encapsulan los resultados de la recuperacin
de datos, posee las siguientes caractersticas:
JDBC provee una interface nica, que independiza a las aplicaciones del
motor de base de datos usado y del mecanismo de conexin
JDBC generaliza las funciones de acceso a datos ms comunes. Los mtodos
estn contenidos en los paquetes: java.sql y java.txt
Un driver JDBC es usado por la JVM para traducir las invocaciones
JDBC genricas en invocaciones que la bd propietaria entiende. Los drivers son
TCNICAS DE PROGRAMACIN
UNIDAD IV: ACCESO A DATOS Y PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
89

Lecturas Glosario Bibliografa


seleccionadas
clases Java que se cargan en ejecucin
Existen drivers JDBC para la mayora de los motores de base de datos. Los
fabricantes de bases de datos proveen el driver JDBC para su motor.
Recordatorio Anotaciones

4.7. Tipos de drivers:


4.7.1. Driver Puente JDBC-ODBC
No es un driver 100 % Java. Traduce invocaciones JDBC a invocaciones ODBC
a travs de libreras ODBC del sistema operativo. No es una solucin adecuada,
pero en algunas situaciones es la nica, por ejemplo si se desea conectar con
Microsoft Access
Desventajas:
Se requieren mltiples capas de software para hacer las llamadas a la BD
Se requiere la instalacin de software adicional (configuracin ODBC)

4.7.2.Driver JDBC
Conceptualemente es similar al driver del tipo Puente JDBC-ODBC, excepto en
que se usa una capa menos (no est la capa de traduccin ODBC). No es un
driver 100 % Java
Cuando se realiza una invocacin a la BD a travs de JBDC, el driver traduce el
requerimiento en algo que la API del fabricante de la bd entiende
La BD procesa el requerimiento y devuelve el resultado a travs de la API que lo
reenva al driver. El driver formatea el resultado al estndar JDBC y lo devuelve
al programa

4.8. Driver JDBC Puro


Es un driver Java Puro que habla directamente con la base de datos, es el m-
todo ms eficiente de acceso a base de datos. No requiere de ninguna librera
adicional ni de la instalacin de un middleware, con lo cual es de deployment
ms simple. La mayora de los fabricantes de base de datos proveen drivers JDBC
puros para sus bases de datos

4.8.1. La api JDBC


Las clases e interfaces de la API JDBC estn en los paquetes java.sql y java.
text. En estos paquetes se encuentran definidos mtodos que permiten: conec-
tarse a una BD, recuperar informacin acerca de la BD, realizar queries SQL a la
BD y ejecutar Stored Procedures.

4.9. Establecer una Conexin a la base de datos va JDBC


La conexin se establece a travs del driver, que se carga en ejecucin mediante
el mtodo: Class.forName(String nombredelDriver). Una vez cargado el driver,
la conexin a la base de datos se realiza invocando a alguno de los siguientes
mtodos de la clase java.sql.DriverManager :
public static synchronized Connnection getConnection(String url, java.util.Pro-
perties info) throws SQLException
public static synchronized Connnection getConnection(String url, String usr,
String pwd) throws SQLException
public static synchronized Connnection getConnection(String url) throws
SQLException
El objeto Connection que se devuelve al programa se usa para realizar
todas las operaciones sobre la base de datos.

4.10. Ejemplos de conexin a base de datos


En el siguiente ejemplo se emplea una conexin OBDC. Puedes visualizar la
Guia 5(Creacion de una conexin OBDC), esto se debe realizar antes de probar
el programa que se muestra a continuacin.
Vamos a emplear una base de datos de Microsoft Access, debido a que su ins-
talacin y uso son muy sencillos, lo que nos permitir centrarnos en el tema de
ollo
nidos 90
Actividades Autoevaluacin UNIDAD IV: ACCESO A DATOS Y PROGRAMACIN ORIENTADA A OBJETOS

as Glosario Bibliografa
nadas
acceder a los datos. Para este caso emplearemos la base de datos Neptuno, la
cual se puede descargar desde la siguiente ubicacin:
http://www.putlocker.com/file/8D16CB8BF7BA9542
torio Anotaciones Lo primero que haremos ser crear una clase que nos permita accesar a base de
datos.

Nombre del
Driver

Nombre del
ODBC

La excepcin es para verificar si se


realiz la conexin

4.10.1. Ejecucin de sentencias SQL y Recuperacin de Resultados


Para realizar una consulta SQL a la BD se requiere de la creacin de un
objeto: Statement, PreparedStatement o CallableStatement usando
uno de los mtodos del objeto Connection
Statement createStatement() throws SQLException
Statement createStatement(int resultSetType, int resultSetConcurrency) throws
SQLException.
Sentencia SQL a ser ejecutada
PreparedStatement preparedStatement(String sql) throws SQLException Prepa-
redStatement.

PreparedStatement(String sql, int resultSetType, int resultSetConcurrency)


throws SQLException.

CallableStatement prepareCall(String sql) throws SQLException


PreparedStatement prepareCall(String sql, int resultSetType, int resultSetCon-
currency)
Store Procedure a ejecutarse
Emplear con storeProcedures

4.10.2. Clase Statement


Sobre el objeto Statement que devuelve el mtodo createStatement() se ejecuta
la sentencia SQL, que puede devolver o no resultados:

void executeUpdate(String sql) throws SQLException : La clase Statement se


usa para ejecutar las sentencias SQL:CREATE TABLE, INSERT, UPDATE , DE-
LETE,
ResulSet executeQuery(String sql) throws SQLException : Se emplea para
ejecutar la sentencia SELECT.
El objeto ResulSet puede ser recorrido y actualizado, de acuerdo a como fue
creado el objeto Statemament.
El resultado de un executeQuery(), es devuelto en un objeto ResultSet. Este
objeto contiene un cursorque puede manipularse para hacer referencia a una
fila particular del Resultset. Inicialmente se ubica enla posicin anterior a la
primera fila. El mtodo next() avanza una fila. Cada invocacin a next() retorna
TCNICAS DE PROGRAMACIN
UNIDAD IV: ACCESO A DATOS Y PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
91

Lecturas Glosario Bibliografa


seleccionadas
true si se trata de una fila vlida y false cuando se llega al fin del resultset.

4.10.3. Recorrer elResultSet


Recordatorio Anotaciones
boolean next()throws SQLException
boolean first() throws SQLException
boolean last() throws SQLException

4.11. Recuperar y Actualizar campos delResultSet


Los campos de cada fila del resultset puede obtenerse mediante su nombre o
posicin. El mtodo a usar depende del tipo de dato almacenado
String getString(int indiceColum) throws SQLException
String getString(String nombreCol) throws SQLException
int getInt(int indiceCol) throws SQLException
int getInt(String nombreCol) throws SQLException
void updateString(int indiceColum, String y) throws SQLException : si el re-
sultset es actualizable para actualizar la base de datos se invoca a updateraw().

4.1. Conectando nuestra aplicacin a una base de datos de Access.


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Access_connection {
//contrasea a la base de datos si es que tuviera, si no se deja vacio
static String password = "";
//nombre de la base de datos Acces con extension *.mdb o *.accdb
static String dbName = "neptuno.mdb";
//direccion de la base de datos
static String bd = "E:/"+ "\\" + dbName + ";PWD=" + password;
//driver para base de datos Access 2000, 2003, 2007, 2010
static String url = "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb, *.acc-
db);DBQ=" + bd;
Connection conn = null;
public Access_connection() {
try{
//obtenemos el driver para Access
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//obtenemos la conexin
conn = DriverManager.getConnection(url);
//si la conexion tuvo exito
if (conn!=null){
System.out.println("Conexin a base de datos "+bd+". listo");
}
}catch(SQLException e){
System.out.println(e);
}catch(ClassNotFoundException e){
System.out.println(e);
}
}
/**Permite retornar la conexin*/
public Connection getConnection(){
ollo
nidos 92
Actividades Autoevaluacin UNIDAD IV: ACCESO A DATOS Y PROGRAMACIN ORIENTADA A OBJETOS

as Glosario Bibliografa
nadas
return conn;
}

torio Anotaciones
//como dice su nombre, termina la conexion a la base de datos
public boolean desconectar(){
try {
conn.close();
//conn = null;
System.out.println("La conexion a la base de datos " + bd + " a termina-
do");
return true;
} catch (SQLException ex) {
Logger.getLogger(datos.Access_connection.class.getName()).log(Level.
SEVERE, null, ex);
return false;
}
}
}
A continuacin creamos una clase que efectue las consultas a la base de datos:
package datos;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class consulta1 {
public static void main(String[] args) throws SQLException {
System.out.println("Acceso a base de datos Neptuno");
Access_connection cnx = new Access_connection();
Connection con = cnx.getConnection();
Statement stm = con.createStatement();
String strSQL = "SELECT * FROM Productos";
//Ejecuta la consulta SQL
ResultSet rs = stm.executeQuery(strSQL);
//Mostrar Datos de la Tabla Productos
while(rs.next())
{
System.out.println("Codigo Producto:" + rs.getString("IdProducto"));
System.out.println("Descripcin:" + rs.getString("NombreProducto"));
System.out.println("Precio Producto:" + rs.getString("PrecioUnidad"));
System.out.println();
}
//Cerrar todo
rs.close();

stm.close();

boolean isClosed = cnx.desconectar();

if(!isClosed){
//Error al cerrar la conexin
}
}
TCNICAS DE PROGRAMACIN
UNIDAD IV: ACCESO A DATOS Y PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
93

Lecturas Glosario Bibliografa


seleccionadas
}
Se obtendr una salida como la que se muestra en el grafico:

Recordatorio Anotaciones

4.2. Soporte de Transacciones


Es posible agrupar la ejecucin de una serie de transacciones que se requiere
que sean todas exitosas o todas fallen. Cuando se crea un objeto Connection, au-
tomticamente es configurado para que las cada transaccin se confirme (com-
mit) y no es posible volver atrs (rollback).
Los siguientes mtodos de la interface Connection se usan para agrupar
transacciones que sern confirmadas (commit) o vueltas atrs (rollback) en la
base de datos :
void setAutoCommit(boolean autoCommit) throws SQLException
void commit() throws SQLException
void rollback() throws SQLException
try {
db.setAutoCommit(false);
Statement s= bd.createStatement();
s.executeUpdate(INSERT INTO TCuentas VALUES ( 1001, -100));
int tran1=s.getUpdateCount();
s.executeUpdate(INSERT INTO TCuentas VALUES ( 1002, 100));
int tran2=s.getUpdateCount();
if ((tran1>0)&&(tran2>0))
db.commit();
}else{
db.rollback();
}
}catch(SQLExceptione1) { }

4.3. Prepared Statements


Un sentencia preparada (prepared statement) es un tipo de sentencia que
mejora la performance de las consultas. Una sentencia preparada se precom-
pila antes de ser usada. La versin precompilada acepta diferente nmero
de parmetros. A diferencia de las sentencias tradicionales cuando se crean re-
quieren de la sentencia SQL como argumento del constructor. Esta sentencia
es enviada al motor de BD para su compilacin y cuando se ejecuta el motor
de BD la corre sin previa compilacin. Las sentencias preparadas manejan par-
metros, con lo cual pueden ejecutares muchas veces con distintos parmetros.

4.3.1. Creacin de una sentencia preparada


PreparedStatement p_sent = miConexion.prepareStatement(SELECT FROM
Empledos+ Apellido,NombreWHEREedad >?)
Parmetro dela sentencia SELECT
Configuracinde los parmetros antes de la ejecucinde la sentencia
p_sent.setInt(1, 55); Establece los parametros de la sentencia preconfigurada
p_sent.executeQuery(); ejecuta la sentencia precompilada.
ollo
nidos 94
Actividades Autoevaluacin UNIDAD IV: ACCESO A DATOS Y PROGRAMACIN ORIENTADA A OBJETOS

as Glosario Bibliografa
nadas
4.4. Callable Statement
Se usan para invocar a stored procedures, como sabemos los Stored Procedures
son programas almacenados en el motor de base de datos y que se ejecutan en
torio Anotaciones el servidor de base de datos. Tpicamente se escriben en el lenguaje propio de
la base de datos , aunque es posible hacerlo en Java.
Invocar a un SP consiste en proveerle parmetros
Los SP se parametrizan a travs de los mtodos set<datatype>() de la
misma manera que las sentencias preparadas.

4.4.1. Ejecucin de un procedimiento almacenado


CallableStatement miSP =miConexion.prepareCall(call SP_CONSULTA`);
ResultSet resul = miSP.executeQuery().
Diagrama Objetivos Inicio

Desarrollo Actividades Autoevaluacin


de contenidos

LECTURA SELECCIONADA NRO II: BASES DE DATOS Y LA WEB.


Lecturas
seleccionadas SISTEMAS
Glosario
DE INFORMACIN. LAUDON Y LAUDON
Bibliografa

BASE DE DATOS Y LA WEB


Alguna vez ha intentado utilizar la web para colocar un pedido o ver un ca-
Recordatoriotlogo de productos? Si es as, probablemente estuvo empleando un sitio web
Anotaciones

enlazado a una base de datos interna de alguna corporacin. Muchas empresas


utilizan ahora la web para poner parte de la informacin de sus bases de datos
internas a disposicin de sus clientes y socios de negocios.
Por ejemplo, suponga que un cliente con un navegador web desea buscar infor-
macin de precios en la base de datos de un detallista en lnea. La figura 6-16
ilustra la manera en que ese cliente podra acceder al sitio web del detallista a
travs de la web. El usuario accede al sitio web del detallista por medio de inter-
net, utilizando un navegador web instalado en su PC del cliente El navegador
web del usuario solicita datos a la base de datos de la organizacin , utilizando
comandos de HTML para comunicarse con el servidor web.
Puesto que muchas bases de datos de respaldo no pueden interpretar coman-
dos escritos en HTML , el servidor web pasa las solicitudes de datos a software
que traduce los comandos HTML en SQL para que los pueda procesar el DBMS
que trabaja con la base de datos. En un entorno cliente/servidor, el DBMS reside
en una computadora dedicada denominada servidor de base de datos. El DBMS
recibe las solicitudes de SQL y suministra los datos requeridos. El middleware
trasfiere informacin desde la base de datos interna de la organizacin de re-
greso al servidor web para que se entregue en forma de pgina web a usuario.
La figura 6-16 muestra que el middleware que funciona entre el servidor web y el
DBMS podra ser un servidor de aplicaciones ejecutndose en su propia compu-
tadora dedicada. El software servidor de aplicaciones maneja todas las operacio-
nes de las aplicaciones, incluyendo el procesamiento de transacciones y el acceso
a datos. Entre las computadoras con navegadores y las aplicaciones de negocios
o las bases de datos de respaldo de una empresa. El servidor de aplicaciones
toma solicitudes del servidor web, ejecuta la lgica de negocios para procesar
transacciones con base en dichas solicitudes, y proporciona la conectividad a los
sistemas o bases de datos de respaldo de la organizacin. De manera alternativa,
el software para manejar estas operaciones podra ser un programa personaliza-
do o un script de CGI. Un script de CGI es un programa compacto que utiliza la
especificacin Interfaz de Compuerta de Enlace (CGI) para procesar los datos
en un servidor web.
Existen varias ventajas al utilizar la web para acceder a las bases de datos internas
de una organizacin .Primero, un navegador web es ms sencillo de utilizar que
las herramientas de consulta propietarias. Segundo, la interfaz web requiere po-
cos cambios o ninguno a la base de datos interna. Cuesta mucho menos agregar
una interfaz web a un sistema heredado que redisear y volver a construir el
sistema para mejorar el acceso de los usuarios.
TCNICAS DE PROGRAMACIN
UNIDAD IV: ACCESO A DATOS Y PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
95

Lecturas Glosario Bibliografa


seleccionadas
El acceso a bases de datos corporativas a travs de la web est creando nuevas
eficiencias, oportunidades y modelos de negocios. ThomasNet.com proporciona
un directorio en lnea actualizado de ms de 650,000 proveedores de productos
industriales, como qumicos, metales, plstico, hule y equipo automotriz. Con el
Recordatorio Anotaciones
nombre anterior de Thomas Register, la empresa acostumbraba enviar enormes
catlogos impresos con esta informacin. iGo.com es una empresa en Internet
que vende bateras y accesorios para telfonos celulares y dispositivos de cm-
puto. Su sitio web enlaza a una base de datos relacional de gran tamao que
contiene informacin de productos como bateras y perifricos para caso todas
Objetivos Inicio
las marcas y modelos de telfonos celulares y dispositivos electrnicos porttiles.

Actividades Autoevaluacin
os

BIBLIOGRAFA BSICA DE LA UNIDAD IV:


Glosario Bibliografa
s

1. Romn Leobardo, Metodologa de la programacin orientada a objetos, Alfaomega,


2006 UBICACIN: Biblioteca UCCI: Cod. 005 L88 2006
o Anotaciones
2. Alfonso Vidal Romero Elizondo, Como programar en Java, Pearson/Educacion,
2004.
3. Direccion de Descarga de Neptuno.mdb : http://rapidshare.com/files/4218361701/
Neptu.rar
4. Direccion de la descarga de la base de datos Colegio:
http://rapidshare.com/files/3458810675/Colegio.accdb

Objetivos Inicio

AUTOEVALUACIN DE LA UNIDAD N I
Actividades Autoevaluacin
s Desarrolle una aplicacin que permita gestionar los datos de la tabla Alumnos
con la estructura que se muestra a continuacin:
Apellidos:......................................................................................................
Glosario Bibliografa Nombres:........................................................................................................
s
Direccion:.......................................................................................................
Fecha de nacimiento:.....................................................................................

o Anotaciones
Objetivos Inicio

SOLUCION DE LA AUTOEVALUCION N IV
Actividades Autoevaluacin
s 1. Lo primero en elaborar sera la
base de datos con la tabla que manten-
dra los datos, la base de datos puede
llamarse Colegio, y la tabla Alumnos,
Glosario Bibliografa
s la estructura de la tabla alumnos sera
la siguiente:

2. Podramos a continuacin ingresar datos a esta tabla, lo que podra quedar


o Anotaciones
asi:
ollo
nidos 96
Actividades Autoevaluacin UNIDAD IV: ACCESO A DATOS Y PROGRAMACIN ORIENTADA A OBJETOS

as Glosario Bibliografa
nadas
3. Inmediatamente creamos una cadena de conexin ODBC a la que vamos a
llamar cnColegio. En este ejemplo vamos a guardar el archivo de la base de datos
en C:\data4.
torio Anotaciones 4. Creamos un nuevo proyecto en NetBeans con los siguientes datos:

5. En la clase DataColegio que se acaba de crear agregamos las siguientes re-


ferencias a clases a importar:

Cada una de las referencias son necesarias incluirlas.


6. En la clase DataColegio agregamos los objetos y sobreescribimos el mtodo
ActionListener.

Implementamos el mtodo createUI (Creacion de Interface de Usuario):


TCNICAS DE PROGRAMACIN
UNIDAD IV: ACCESO A DATOS Y PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
97

Lecturas Glosario Bibliografa


seleccionadas

Recordatorio Anotaciones

El mtodo actionPerformed:

Asi mismo implementamos los mtodos rellenaEtqiuetas y limpiaControles.


ollo
nidos 98
Actividades Autoevaluacin UNIDAD IV: ACCESO A DATOS Y PROGRAMACIN ORIENTADA A OBJETOS

as Glosario Bibliografa
nadas

torio Anotaciones

Iniciamos la codificacin de los mtodos de insercin, modificacin y elimina-


cin.
TCNICAS DE PROGRAMACIN
UNIDAD IV: ACCESO A DATOS Y PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
99

Lecturas Glosario Bibliografa


seleccionadas
El cdigo completo de la aplicacin asi como la base de datos los puedes descar-
gar desde la siguiente direccion: http://javayms.blogspot.com/2013/01/swing-
y-acceso-base-de-datos-el.html
Recordatorio Anotaciones