Escolar Documentos
Profissional Documentos
Cultura Documentos
PROGRAMACIN
Derechos reservados
Primera Edicin: abril 2013
Tiraje: 500 ejemplares
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
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
DIAGRAMA DE PRESENTACIN
DE LA ASIGNATURA
Recordatorio Anotaciones
COMPETENCIA:
UNIDADES DIDCTICAS:
Desarrollo
UNIDAD I: FUNDAMENTOS DE PROGRAMACIN
Actividades Autoevaluacin
de contenidos
Recordatorio Anotaciones
BIBLIOGRAFA AUTOEVALUACIN
Lecturas Glosario Bibliografa
seleccionadas
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
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
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.
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:
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
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:
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.
LECTURA SELECCIONADA:
Lecturas Glosario Bibliografa
seleccionadas
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
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
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.
La variable path
ahora contiene la
ruta de la carpeta
BIN de java
as Glosario Bibliografa
nadas
Grafico 7: Paso 1 para crear un programa en NetBeans
torio Anotaciones
Desactivar
la casilla
Create
main class
Recordatorio Anotaciones
as Glosario Bibliografa
nadas
4 EXPLICACIN DEL PRIMER PROGRAMA HOLA.JAVA
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 ).
En Java existen 3 tipos de comentarios: de una sola lnea, de varias lneas, comen-
tarios JavaDoc o de documentacin.
Recordatorio Anotaciones
Los comentarios de varias lneas se escriben encerrados entre /* y */.
Ejemplo:
/*
Esto es un comentario
de varias lneas.
*/
1.2. Operadores
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
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.
== igual a
!= distinto de
> mayor que
< menor que
>= mayor o igual que
<= menor o igual que
Recordatorio Anotaciones
1. ( ) [ ] .
2. ++ -- !
3. * / %
4. + -
5.
> >= < <=
6. == !=
7. &
8. ^
9.
|
10. &&
11. ||
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:
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
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
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
}
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
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 + "." );
}
}
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
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";
}
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).
Siguiente
Bucles do/while
[inicializacin;]
do {
sentencias;
[iteracin;]
}while( terminacin-expresin-booleana );
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
double[][]: siempre que la salida sea una matriz real 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:
Ejemplo de funcin:
Funcin que realice la suma de dos nmeros, el cdigo sera el siguiente:
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.
Tipo_de_dato nomb_vector [ ];
Tipo_de_dato [ ] nomb_vector;
Ejemplo:
Ejemplo: Java permite una manera fcil de crear con valores iniciales:
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
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).
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]
//Primera forma
int numeros[][];
numeros=new int[30][10];
//Segunda forma
int numeros[][] = new int[30][10];
Diagrama Objetivos Inicio
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
ACTIVIDAD N 2:
Desarrollo Actividades Autoevaluacin
de contenidos
torio Anotaciones Diagrama Objetivos Inicio
Esta actividad puede consultarla en su aula virtual.
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
AUTOEVALUACIN DE LA UNIDAD N I
Desarrollo Actividades Autoevaluacin
de contenidos
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
Recordatorio Anotaciones
public static int numero() {
return (int) (Math.round(Math.random() * 100));
}
Desarrollo
UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOS
Actividades Autoevaluacin
de contenidos
Recordatorio Anotaciones
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.
INSTANCIAR
INSTANCIAR
CLASE
OBJETO
OBJETO
TCNICAS DE PROGRAMACIN
UNIDAD II: PROGRAMACIN ORIENTADA A OBJETOSDesarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
43
funcional.
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).
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.
as Glosario Bibliografa
nadas
Fin de la Clase
Principal.java Archivo
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
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.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, ...);
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:
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.
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.
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.
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 . . .
}
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
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.
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
ACTIVIDAD N 2:
Desarrollo Actividades Autoevaluacin
de contenidos
torio Anotaciones
Diagrama Objetivos Inicio
Esta actividad puede consultarla en su aula virtual.
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
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
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
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
SOLUCIONARIO DE LA AUTOEVALUACION N II
Desarrollo Actividades Autoevaluacin
de contenidos
torio Anotaciones
package objetos_clase;
public complejo() {
}
Lecturas
seleccionadas DIAGRAMA DE PRESENTACIN DE LA UNIDAD
Glosario Bibliografa
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
Lneas
Crculos y elipses
Rectngulos y polgones
Imgenes
Texto
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 );
import java.util.Date;
class FechaApp {
public static void main( String args[] ) {
Date hoy = new Date();
System.out.println( hoy );
}
}
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
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 );
}
Recordatorio Anotaciones
Comprobaciones booleanas
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
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
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
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++;
}
}
}
Saludos desbordado
Esto se imprime siempre!
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
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.
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.
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
LECTURA SELECCIONADA N 1: HISTORIA DE LA INTERFAZ
Lecturas
seleccionadas GRAFICA
Glosario
DE USUARIO
Bibliografa
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
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.
ACTIVIDAD N2:
Desarrollo
de contenidos Esta actividad
Actividades
Autoevaluacin
puede consultarla en su aula virtual.
Recordatorio Anotaciones
ollo
nidos 80
Actividades Autoevaluacin Diagrama Objetivos
UNIDAD
Inicio
III: PROGRAMACIN ORIENTADA A OBJETOS EN ACCIN EN ENTORNO GRFIC0
AUTOEVALUACION N 03
Desarrollo Actividades Autoevaluacin
de contenidos 1. Desarrollar un pequeo bloc de notas, con funcionalidad limitada como se
muestra en la figura.
Recordatorio Anotaciones
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);
}
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};
Recordatorio Anotaciones
84
TCNICAS DE PROGRAMACIN
Desarrollo
de contenidos
Actividades Autoevaluacin
MANUAL AUTOFORMATIVO
85
Lecturas
seleccionadas DIAGRAMA DE PRESENTACIN
Glosario Bibliografa
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
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.
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
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.
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
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
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
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();
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
Recordatorio Anotaciones
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.
Actividades Autoevaluacin
os
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:
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:
Recordatorio Anotaciones
El mtodo actionPerformed:
as Glosario Bibliografa
nadas
torio Anotaciones