View
258
Download
3
Category
Preview:
Citation preview
7/26/2019 Compendio Poo
1/43
Compendio de POO
en JavaIng. Rubn Sanabria
Este pequeo compendio, trata de las recopilaciones y experiencias en las aulas, enseando uno de
los lenguajes orientados a objetos por excelencia, se tomaron definiciones de varios libros y
ejercicios resueltos en las clases.
Ao 2014
7/26/2019 Compendio Poo
2/43
Ing. Rubn Sanabria Compendio POO Java Pgina 1
Introduccin a Java
Bienvenido a Java: el lenguaje de programacin de computadoras ms utilizado en el
mundo. Usted ya est familiarizado con las poderosas tareas que realizan las
computadoras. Mediante este libro de texto, usted escribir instrucciones para ordenar a las
computadoras que realicen esos tipos de tareas. El software (las instrucciones que ustedescribe) controla el hardware de las computadoras).
Aprender sobre la programacin orientada a objetos-, la metodologa de programacin
clave de la actualidad. En este texto crear y trabajar con muchos objetos de software.
Java es el lenguaje preferido para satisfacer las necesidades de programacin
empresariales de muchas organizaciones. Tambin se ha convertido en el lenguaje de
eleccin para implementar aplicaciones basadas en Internet y software para dispositivos que
se comunican a travs de una red.
La contribucin ms importante a la fecha de la revolucin del microprocesador es que hizoposible el desarrollo de las computadoras personales. Los microprocesadores estn
teniendo un profundo impacto en los dispositivos electrnicos inteligentes para uso
domstico. Al reconocer esto, Sun Microsystems patrocin en 1991 un proyecto interno
de investigacin corporativa dirigido por James Gosling, que result en un lenguaje de
programacin orientado a objetos y basado en C++, al que Sun llam Java.
Un objetivo clave de Java es poder escribir programas que se ejecuten en una gran variedad
de sistemas computacionales y dispositivos controlados por computadora. A esto se le
conoce algunas veces como escribir una vez, ejecutar en cualquier parte.
La programacin orientada a objetos (POO)
La programacin orientada a objetos o POO (OOP segn sus siglas en ingls) es
unparadigma de programacin que usa losobjetos en sus interacciones, para disear
aplicaciones y programasinformticos. Est basado en varias tcnicas,
incluyendoherencia,cohesin,abstraccin,polimorfismo,acoplamiento yencapsulamiento.
http://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Objetos_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Inform%C3%A1ticahttp://es.wikipedia.org/wiki/Herencia_(inform%C3%A1tica)http://es.wikipedia.org/w/index.php?title=Cohesi%C3%B3n_(inform%C3%A1tica)&action=edit&redlink=1http://es.wikipedia.org/wiki/Abstracci%C3%B3n_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Polimorfismo_(inform%C3%A1tica)http://es.wikipedia.org/w/index.php?title=Acoplamiento_(inform%C3%A1tica)&action=edit&redlink=1http://es.wikipedia.org/wiki/Encapsulamiento_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Encapsulamiento_(inform%C3%A1tica)http://es.wikipedia.org/w/index.php?title=Acoplamiento_(inform%C3%A1tica)&action=edit&redlink=1http://es.wikipedia.org/wiki/Polimorfismo_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Abstracci%C3%B3n_(inform%C3%A1tica)http://es.wikipedia.org/w/index.php?title=Cohesi%C3%B3n_(inform%C3%A1tica)&action=edit&redlink=1http://es.wikipedia.org/wiki/Herencia_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Inform%C3%A1ticahttp://es.wikipedia.org/wiki/Objetos_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3n7/26/2019 Compendio Poo
3/43
Ing. Rubn Sanabria Compendio POO Java Pgina 2
Su uso se populariz a principios de la dcada de los aos 1990. En la actualidad, existe
una gran variedad de lenguajes de programacin que soportan la orientacin a objetos .
Los objetos son entidades que tienen un determinado estado, comportamiento
(mtodo)e identidad:
Elestadoest compuesto de datos o informaciones; sern uno o varios atributos a los que
se habrn asignado unos valores concretos (datos).
El comportamiento est definido por losmtodoso mensajes a los que sabe responder
dicho objeto, es decir, qu operaciones se pueden realizar con l.
La ident idades una propiedad de un objeto que lo diferencia del resto; dicho con otras
palabras, es su identificador (concepto anlogo al de identificador de unavariableo
unaconstante).
Un objeto contiene toda la informacin que permite definirlo e identificarlo frente a otros
objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al
poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de
mecanismos de interaccin llamadosmtodos,que favorecen la comunicacin entre ellos.
Esta comunicacin favorece a su vez el cambio de estado en los propios objetos. Esta
caracterstica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado
y el comportamiento.
Los mtodos (comportamiento)y atributos (estado)estn estrechamente relacionados
por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de mtodos
para poder tratar los atributos con los que cuenta. Elprogramadordebe pensar
indistintamente en ambos conceptos, sin separar ni darle mayor importancia a alguno deellos. Hacerlo podra producir el hbito errneo de crear clases contenedoras de informacin
por un lado y clases con mtodos que manejen a las primeras por el otro. De esta manera
se estara realizando unaprogramacin estructuradacamufladaen un lenguaje de
programacin orientado a objetos.
La POO difiere de laprogramacin estructurada tradicional, en la que los datos y los
procedimientos estn separados y sin relacin, ya que lo nico que se busca es el
procesamiento de unos datos de entrada para obtener otros de salida. La programacin
estructurada anima al programador a pensar sobre todo en trminos de procedimientos o
funciones, y en segundo lugar en las estructuras de datos que esos procedimientos
manejan. En la programacin estructurada solo se escriben funciones que procesan datos.
Los programadores que emplean Programacin Orientada a Objetos, en cambio, primero
definen objetos para luego enviarles mensajes solicitndoles que realicen sus mtodos por
s mismos.
Conceptos fundamentales
La programacin orientada a objetos es una forma de programar que trata de encontrar una
solucin a estos problemas. Introduce nuevos conceptos, que superan y amplan conceptos
antiguos ya conocidos. Entre ellos destacan los siguientes:
http://es.wikipedia.org/wiki/M%C3%A9todo_(inform%C3%A1tica)http://es.wikipedia.org/wiki/M%C3%A9todo_(inform%C3%A1tica)http://es.wikipedia.org/wiki/M%C3%A9todo_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Variable_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Variable_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Variable_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Constante_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Constante_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Constante_(programaci%C3%B3n)http://es.wikipedia.org/wiki/M%C3%A9todo_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/M%C3%A9todo_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/M%C3%A9todo_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Programadorhttp://es.wikipedia.org/wiki/Programadorhttp://es.wikipedia.org/wiki/Programadorhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_estructuradahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_estructuradahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_estructuradahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_estructuradahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_estructuradahttp://es.wikipedia.org/wiki/Programadorhttp://es.wikipedia.org/wiki/M%C3%A9todo_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Constante_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Variable_(programaci%C3%B3n)http://es.wikipedia.org/wiki/M%C3%A9todo_(inform%C3%A1tica)7/26/2019 Compendio Poo
4/43
Ing. Rubn Sanabria Compendio POO Java Pgina 3
Clase
Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La
instanciacin es la lectura de estas definiciones y la creacin de un objeto a partir de ellas.
Herencia
(Por ejemplo, herencia de la clase C a la clase D) es la facilidad mediante la cual la clase D
hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y
operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos
mtodos y variables pblicas declaradas en C. Los componentes registrados como
"privados" (private) tambin se heredan, pero como no pertenecen a la clase, se mantienen
escondidos al programador y slo pueden ser accedidos a travs de otros mtodos pblicos.
Esto es as para mantener hegemnico el ideal de POO.
Objeto
Instancia de una clase. Entidad provista de un conjunto de propiedades o atributos (datos) y
de comportamiento o funcionalidad (mtodos), los mismos que consecuentemente
reaccionan a eventos. Se corresponden con los objetos reales del mundo que nos rodea, o
con objetos internos del sistema (del programa). Es una instancia a una clase.
Mtodo
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecucin se desencadena
tras la recepcin de un "mensaje". Desde el punto de vista del comportamiento, es lo que el
objeto puede hacer. Un mtodo puede producir un cambio en las propiedades del objeto, o
la generacin de un "evento" con un nuevo mensaje para otro objeto del sistema.
Evento
Es un suceso en el sistema (tal como una interaccin del usuario con la mquina, o un
mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado
al objeto pertinente. Tambin se puede definir como evento la reaccin que puede
desencadenar un objeto; es decir, la accin que genera.
Atributos
Caractersticas que tiene la clase
Mensaje
Una comunicacin dirigida a un objeto, que le ordena que ejecute uno de sus mtodos con
ciertos parmetros asociados al evento que lo gener.
Propiedad o atributo
Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace
los datos visibles desde fuera del objeto y esto se define como sus caractersticas
predeterminadas, y cuyo valor puede ser alterado por la ejecucin de algn mtodo.
http://es.wikipedia.org/wiki/Clase_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Clase_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Herencia_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Herencia_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Objetos_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Objetos_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/M%C3%A9todo_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/M%C3%A9todo_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/M%C3%A9todo_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Objetos_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Herencia_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Clase_(inform%C3%A1tica)7/26/2019 Compendio Poo
5/43
Ing. Rubn Sanabria Compendio POO Java Pgina 4
Estado interno
Es una variable que se declara privada, que puede ser nicamente accedida y alterada por
un mtodo del objeto, y que se utiliza para indicar distintas situaciones posibles para el
objeto (o clase de objetos). No es visible al programador que maneja una instancia de la
clase.
Componentes de un objeto
Atributos, identidad, relaciones y mtodos.
Identificacin de un objeto
Un objeto se representa por medio de una tabla o entidad que est compuesta por sus
atributos y funciones correspondientes.
En comparacin con un lenguaje imperativo, una "variable" no es ms que un contenedor
interno del atributo del objeto o de un estado interno, as como la "funcin" es unprocedimiento interno del mtodo del objeto.
Caractersticas de la POO
Existe un acuerdo acerca de qu caractersticas contempla la "orientacin a objetos". Las
caractersticas siguientes son las ms importantes:
Abstraccin
Denota las caractersticas esenciales de un objeto, donde se capturan sus comportamientos.
Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizartrabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin
revelar cmo se implementan estas caractersticas. Los procesos, las funciones o los
mtodos pueden tambin ser abstrados, y, cuando lo estn, una variedad de tcnicas son
requeridas para ampliar una abstraccin. El proceso de abstraccin permite seleccionar las
caractersticas relevantes dentro de un conjunto e identificar comportamientos comunes
para definir nuevos tipos de entidades en el mundo real. La abstraccin es clave en el
proceso de anlisis y diseo orientado a objetos, ya que mediante ella podemos llegar a
armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere
atacar.
Encapsulamiento
Significa reunir todos los elementos que pueden considerarse pertenecientes a una misma
entidad, al mismo nivel de abstraccin. Esto permite aumentar lacohesin de los
componentes del sistema. Algunos autores confunden este concepto con el principio de
ocultacin, principalmente porque se suelen emplear conjuntamente.
Modularidad
Se denomina modularidad a la propiedad que permite subdividir una aplicacin en partes
ms pequeas (llamadas mdulos), cada una de las cuales debe ser tan independiente
como sea posible de la aplicacin en s y de las restantes partes. Estos mdulos se pueden
http://es.wikipedia.org/wiki/Abstracci%C3%B3n_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Encapsulamiento_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Dise%C3%B1o_estructuradohttp://es.wikipedia.org/wiki/Modularidad_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Modularidad_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Dise%C3%B1o_estructuradohttp://es.wikipedia.org/wiki/Encapsulamiento_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Abstracci%C3%B3n_(programaci%C3%B3n_orientada_a_objetos)7/26/2019 Compendio Poo
6/43
Ing. Rubn Sanabria Compendio POO Java Pgina 5
compilar por separado, pero tienen conexiones con otros mdulos. Al igual que la
encapsulacin, los lenguajes soportan la modularidad de diversas formas.
Principio de ocultacin
Cada objeto est aislado del exterior, es un mdulo natural, y cada tipo de objeto expone
una interfaz a otros objetos que especifica cmo pueden interactuar con los objetos de la
clase. El aislamiento protege a las propiedades de un objeto contra su modificacin por
quien no tenga derecho a acceder a ellas; solamente los propios mtodos internos del objeto
pueden acceder a su estado. Esto asegura que otros objetos no puedan cambiar el estado
interno de un objeto de manera inesperada, eliminando efectos secundarios e interacciones
inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos
internos del objeto de una manera controlada y limitando el grado de abstraccin. La
aplicacin entera se reduce a un agregado orompecabezas de objetos.
Polimorfismo
Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo
nombre; al llamarlos por ese nombre se utilizar el comportamiento correspondiente al
objeto que se est usando. O, dicho de otro modo, las referencias y las colecciones de
objetos pueden contener objetos de diferentes tipos, y la invocacin de un comportamiento
en una referencia producir el comportamiento correcto para el tipo real del objeto
referenciado. Cuando esto ocurre en "tiempo de ejecucin", esta ltima caracterstica se
llama asignacin tarda o asignacin dinmica. Algunos lenguajes proporcionan medios ms
estticos (en "tiempo de compilacin") de polimorfismo, tales como las plantillas y
lasobrecarga de operadores de C++.
Herencia
Las clases no se encuentran aisladas, sino que se relacionan entre s, formando una
jerarqua de clasificacin. Los objetos heredan las propiedades y el comportamiento de
todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el
encapsulamiento, permitiendo a los objetos ser definidos y creados como tipos
especializados de objetos preexistentes. Estos pueden compartir (y extender) su
comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente
agrupando los objetos en clases y estas en rboles o enrejados que reflejan un
comportamiento comn. Cuando un objeto hereda de ms de una clase se dice que
hay herencia mltiple; siendo de alta complejidad tcnica por lo cual suele recurrirse a la
herencia virtual para evitar la duplicacin de datos.
Recoleccin de basura
La recoleccin de basura o garbage collection es la tcnica por la cual el entorno de objetos
se encarga de destruir automticamente, y por tanto desvincular la memoria asociada, los
objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador
no debe preocuparse por la asignacin o liberacin de memoria, ya que el entorno la
asignar al crear un nuevo objeto y la liberar cuando nadie lo est usando. En la mayora
de los lenguajes hbridos que se extendieron para soportar el Paradigma de Programacin
Orientada a Objetos como C++ uObject Pascal,esta caracterstica no existe y la memoriadebe desasignarse expresamente.
http://es.wikipedia.org/wiki/Principio_de_ocultaci%C3%B3nhttp://es.wikipedia.org/wiki/Rompecabezashttp://es.wikipedia.org/wiki/Polimorfismo_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Sobrecargahttp://es.wikipedia.org/wiki/Herencia_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Recolecci%C3%B3n_de_basura_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Object_Pascalhttp://es.wikipedia.org/wiki/Object_Pascalhttp://es.wikipedia.org/wiki/Recolecci%C3%B3n_de_basura_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Herencia_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Sobrecargahttp://es.wikipedia.org/wiki/Polimorfismo_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Rompecabezashttp://es.wikipedia.org/wiki/Principio_de_ocultaci%C3%B3n7/26/2019 Compendio Poo
7/43
Ing. Rubn Sanabria Compendio POO Java Pgina 6
Los pilares fundamentales de la POO
En una aplicacin OO tenemos que:
1. Implementar las clases que necesitemos.
2. Declarar e instanciar (crear) los objetos.
A partir de aqu estamos en disposicin de empezar a utilizar los objetos a travs de sus
mtodos.
Implementacin de una clase:
class NombreDeLaClase {
// Atributos
. . .
// Mtodos
. . .
}
Cmo mostrar texto con printf
El mtodo System .out.printf (f significa formato) muestra datos con formato.El
especificador de formato %s es un receptculo para una cadena. El especificador deformato %d es un receptculo para un valor numrico.
a) System.out.printf (%s\n%s\n,Bienvenido a",la programacin en
Java!") ;
b) System.out.printf (La suma es %d\n,suma);
7/26/2019 Compendio Poo
8/43
Ing. Rubn Sanabria Compendio POO Java Pgina 7
Clases
Ejercicios
1-Dado dos nmeros a, b hallar la suma de ambos, y el resultado mostrar por pantalla.
packagepoo1;
publicclassejem001 {
staticintaa,bb,suma;
publicstaticvoidmain(String[] args) {aa= 23;bb= 35;
ejem001 ejercicio= newejem001();ejercicio.sumar();
System.out.println("La suma es : "+suma);
}
privatevoidsumar(){
suma= aa+ bb;}
}
2- Hallar el permetro y el rea de un cuadrado de 3 m de lado.
packagepoo1;
publicclassEjem002 {staticdoublelado,perimetro,area;
publicstaticvoidmain(String[] args) {lado= 3;
Ejem002 ejercicio= newEjem002();
ejercicio.perimetro();ejercicio.area();
}
privatevoidperimetro(){
perimetro= 4 * lado;
System.out.println("El perimetro del cuadrado es : "+perimetro);}
privatevoidarea()
{area= Math.pow(lado, 2);
System.out.println("El area del cuadrado es : "+area);
}
}
3- El permetro de un rectngulo mide 825 cm, si la altura es 125 cm., Ingrese la base y
calcule el rea del rectngulo.
7/26/2019 Compendio Poo
9/43
Ing. Rubn Sanabria Compendio POO Java Pgina 8
packagepoo1;
importjava.util.Scanner;
publicclassEjem003 {
staticdoubleperimetro,altura,base,area;
publicstaticvoidmain(String[] args) {perimetro= 825;
altura= 125;
Ejem003 ejercicio= newEjem003();
ejercicio.ingreseDato();
ejercicio.calcular();}
privatevoidingreseDato()
{
Scanner teclado= newScanner(System.in);
System.out.println("Ingrese la Base : ");base= teclado.nextDouble();
}
privatevoidcalcular()
{
area= base* altura;
System.out.println("La base ingresado es : "+base);
System.out.println("El area hallado es : "+area);}
}
4- Ingrese nmero del 1 al 3, el programa le deber indicar si cul de los nmeros haingresado al programa.
packagepoo1;
importjavax.swing.*;
publicclassEjem006 {
staticintnro;
staticString aa;publicstaticvoidmain(String[] args) {
Ejem006 ejercicio= newEjem006();ejercicio.ingreso();
ejercicio.validardato();
ejercicio.selecciona();}
privatevoidingreso()
{aa= JOptionPane.showInputDialog("Ingrese numero");
nro= Integer.parseInt(aa);}
privatevoidvalidardato(){
if(nro< 1)JOptionPane.showMessageDialog(null,"Nmero ingresado es menor
que 1");
if(nro>3)
7/26/2019 Compendio Poo
10/43
Ing. Rubn Sanabria Compendio POO Java Pgina 9
JOptionPane.showMessageDialog(null,"Nmero ingresado es mayor que
3");
}
privatevoidselecciona(){
switch(nro){
case1 : JOptionPane.showMessageDialog(null,"Igual a "+ nro);
break;
case2 : JOptionPane.showMessageDialog(null,"Igual a "+ nro);
break;case3 : JOptionPane.showMessageDialog(null,"Igual a "+ nro);
break;}
}
}
5- Ingrese un nmero y hallar sus nmeros primos, hasta el nmero ingresado.
packageejercicios;
importjava.util.Scanner;
publicclassprimos {
Scanner teclado= newScanner(System.in);
intnro;
intcont=0,i=1,suma=0;
privatevoidingreseDato(){
System.out.print("Ingrese cantidad de primos : ");nro= teclado.nextInt();
}
privatevoidcalcular(){
while(cont
7/26/2019 Compendio Poo
11/43
Ing. Rubn Sanabria Compendio POO Java Pgina 10
}
6- Calcular el factorial de un numero, Ingrese un nmero y hallar sus nmeros.
packageejercicios;
importjava.util.Scanner;
publicclassfactorial {
Scanner teclado = newScanner(System.in);
doublenro,aux;
privatevoidingreseDato(){
System.out.print("Ingrese el Nro : ");
nro = teclado.nextDouble();
}
privatevoidcalcular(){
aux = 1;
for(inti = 1; i
7/26/2019 Compendio Poo
12/43
Ing. Rubn Sanabria Compendio POO Java Pgina 11
Fig. arrays o vector.
7-Ingrese el tamao de un vector, tambin ingrese los elementos de dicho vector, luego
imprimir los elementos del vector creado.
packagepoo1;
importjava.util.Scanner;
publicclassvect001 {
staticintn;
staticint[] a;
staticScanner teclado= newScanner(System.in);publicstaticvoidmain( String[] args){
vect001 vec= newvect001();vec.tamanio();
vec.cargar_datos();
vec.imprimir();
}
publicvoidtamanio(){
System.out.print("Ingrese el tamanio del vector: ");n= teclado.nextInt();
if(n>0)a= newint[n];
else
tamanio();}
publicvoidcargar_datos(){
for(intx=0; x0)a[x] = num;
elsex--;
}
}
publicvoidimprimir(){for(intx=0; x
7/26/2019 Compendio Poo
13/43
Ing. Rubn Sanabria Compendio POO Java Pgina 12
8- Crear un vector V de N componentes y sumar todos los elementos del vector que
sean enteros.
packagepoo1;
importjava.util.Scanner;publicclassvect002 {
staticintn, suma;
staticfloat[] a;
staticScanner teclado= newScanner(System.in);
publicstaticvoidmain(String[] args){
vect002 vec= newvect002();vec.tamanio();
vec.cargar_datos();
vec.imprimir();}
publicvoidtamanio(){
System.out.print("Ingrese el tamanio del vector: ");n= teclado.nextInt();
if(n>0)a= newfloat[n];
else
tamanio();
}
publicvoidcargar_datos(){
for(intx=0; x
7/26/2019 Compendio Poo
14/43
Ing. Rubn Sanabria Compendio POO Java Pgina 13
Fig. matriz
Declaracin de una matriz
7/26/2019 Compendio Poo
15/43
Ing. Rubn Sanabria Compendio POO Java Pgina 14
tipo_de_dato identificador[numFilas][numColumnas];;
Dnde :
tipo_de_dato: Es el tipo de datos que contendr la matriz.
identificador: Es el nombre que le damos a la variable matriz y por el cual la
referenciaremos en nuestro programa.
[numFilas][numColumnas] : Especifica el nmero de Filas y de columnas que tendr
la matriz
El espacio que las matrices ocupan en memoria se reserva en el momento de
realizar la declaracin de los mismos.
Ejemplo:
int A[3][4]; // Declaracin de una matriz de enteros de 3 filas y 4 columnas
float B[6][2]; // Declaracin de una matriz de reales de 6 filas y 2 columnas
char C[4][10]; // Declamacin de una matriz de caracteres de 4 filas y 10 columnas
Inicializacion de una Matriz
Una matriz se pude inicializar para esto hay que agrupar entre {} cada fila. El formato
a utilizar sera el siguiente:
tipo_de_dato identificador[ filas ][ columnas ] = {
{ columnas de la fila 1 },
{ columnas de la fila 2 },
... ,
{ columnas de la ltima fila }
};
No debemos olvidar el ';' al final.
Ejemplo:
int temperaturas[3][5] = { { 15, 17, 20, 25, 10 }, { 18, 20, 21, 23, 18 }, { 12, 17, 23, 29,
16 } };
Ejercicios
9- Crear una matriz cuadrada, ingresando el tamao por teclado, luego llenar la matriz con
nmeros 1.
packagepoo1;
importjava.util.Scanner;
publicclassmat001 {
intn,m;
int[][] mat;Scanner teclado= newScanner(System.in);
publicstaticvoidmain(String[]args){mat001 mat= newmat001();
mat.dimension();mat.cargar_datos();
mat.imprimir();
7/26/2019 Compendio Poo
16/43
Ing. Rubn Sanabria Compendio POO Java Pgina 15
}
publicvoiddimension(){
System.out.print("Ingrese el valor para las filas de la matriz: ");
n= teclado.nextInt();System.out.print("Ingrese el valor para las columnas de la matriz: ");
m= teclado.nextInt();mat= newint[n][m];
}
publicvoidcargar_datos(){
for(intj= 0; j
7/26/2019 Compendio Poo
17/43
Ing. Rubn Sanabria Compendio POO Java Pgina 16
publicvoidcargar_datos(){
for(intj= 0; j
7/26/2019 Compendio Poo
18/43
Ing. Rubn Sanabria Compendio POO Java Pgina 17
System.out.println("es de color "+color+" la marca es "+marca+" de
"+puerta+" puertas");
}
publicvoidmiVehiculo(String color,String marca, intpuerta){
System.out.println("Caracteristicas de mi otro auto...");System.out.println("es de color "+color+" la marca es "+marca+" de
"+puerta+" puertas");
}
}
En este ejemplo vemos con los mtodos repetidos, llamado sobrecarga de mtodos, all es
donde sucede el polimorfismo; poli = muchos, y morfismo = cambio;
Encapsulamiento
1- Se tiene un auto que acelera y desacelera en un camino, hacer un programa queindique dichas actividades.
packagepoo1;
publicclassEncap001 {
publicstaticvoidmain(String[] args) {
Vehiculo1 auto= newVehiculo1();
auto.velocidad= 0;auto.acelerar();
auto.acelerar();auto.acelerar();
//auto.frenar();
}
}
Luego se crea la clase Vehiculo1, para poder ser invocado desde la clase Encap001
packagepoo1;
publicclassVehiculo1 {
publicintvelocidad;
privateintgetVelocidad() {
returnvelocidad;
}
privatevoidsetVelocidad(intvelocidad) {
this.velocidad= velocidad;}
Se crean los get y los
set, que encapsulanlas
variables
Se ingresan
datos como
armetros
7/26/2019 Compendio Poo
19/43
Ing. Rubn Sanabria Compendio POO Java Pgina 18
publicvoidacelerar()
{
velocidad++;
System.out.println("acelero a "+ velocidad);}
publicvoidfrenar()
{
velocidad--;
System.out.println("freno a "+ velocidad);
}
}
2- Ingrese datos a un libro de calificaciones.
packagepoo1;
publicclassEncap002 {
publicstaticvoidmain(String[] argx)
{libros libro1= newlibros();
libros libro2= newlibros();libro1.notas= 30;
libro2.notas= 35;
System.out.printf("Curso de libro1 es %s",libro1.notas+"\n");
System.out.printf("Curso de libro2 es %s",libro2.notas);
}
}
Y en la clase libros se tiene :
packagepoo1;
publicclasslibros {
publicintnotas;
publicintgetNotas() {
returnnotas;
}
publicvoidsetNotas(intnotas) {
this.notas= notas;}
}
Sistema Grafico, con swings
7/26/2019 Compendio Poo
20/43
Ing. Rubn Sanabria Compendio POO Java Pgina 19
1-Crear un formulario, utilizando solamente comandos de java
packagepoo1;
importjavax.swing.JFrame;
publicclassvent01 extendsJFrame {
publicvoidmiVentana()
{
setTitle("Mi nueva ventana");setSize(400,300);
setVisible(true);
}
publicstaticvoidmain(String[] args) {
vent01 frm= newvent01();frm.miVentana();
}
}
Es el resultado del programa anterior
2- Crear un formulario, tambin etiquetas y textos
packagepoo1;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JTextField;
publicclassVent02 extendsJFrame{
privateJLabel etiq1,etiq2;privateJTextField txt1,txt2;
privatevoidmiVentana(){
setTitle("Mi Segunda ventana");
setSize(400,300);
setVisible(true);initComponentes();
}
privatevoidinitComponentes()
{getContentPane().setLayout(null);
En este ejemplo estamos
viendo parte de la herencia
con la palabra extends que
hereda de la clase padre
7/26/2019 Compendio Poo
21/43
Ing. Rubn Sanabria Compendio POO Java Pgina 20
etiq1= newJLabel();
etiq1.setText("Codigo :");
getContentPane().add(etiq1);
etiq1.setBounds(30, 28, 100, 20);
//etiq2= newJLabel();
etiq2.setText("Nombre :");getContentPane().add(etiq2);
etiq2.setBounds(30, 60, 100, 20);
//
//
txt1= newJTextField();txt1.setText("0.00");
getContentPane().add(txt1);txt1.setBounds(114, 28, 100, 20);
//
txt2= newJTextField();
txt2.setText(" ");
getContentPane().add(txt2);
txt2.setBounds(114, 60, 180, 20);
}
publicstaticvoidmain(String[] args) {
Vent02 frm= newVent02();
frm.miVentana();}
}
3- Crear un formulario, con los siguientes componentes, 2 etiquetas, 3 textos, 2 botones, y
calcular la suma de 2 valores que se ingresan en los campos de textos. Tambin se ven las
acciones de los botones.
packagepoo1;
importjavax.swing.*;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;importjava.util.*;
publicclassVent03 extendsJFrame{
privateJLabel etiq1,etiq2;
privateJTextField txt1,txt2;privateJButton btn1,btn2;intaa,bb,suma;
7/26/2019 Compendio Poo
22/43
Ing. Rubn Sanabria Compendio POO Java Pgina 21
privatevoidmiVentana ()
{
setTitle("Mi tercera ventana");
setSize(400,300);setVisible(true);
initComponentes();}
privatevoidinitComponentes()
{
getContentPane().setLayout(null);
etiq1= newJLabel();etiq1.setText("Ingresa A :");
getContentPane().add(etiq1);etiq1.setBounds(30, 28, 100, 20);
//
etiq2= newJLabel();
etiq2.setText("Ingresa B :");
getContentPane().add(etiq2);
etiq2.setBounds(30, 60, 100, 20);////
txt1= newJTextField();
txt1.setText("0");
getContentPane().add(txt1);
txt1.setBounds(114, 28, 100, 20);//
txt2= newJTextField();
txt2.setText("0");getContentPane().add(txt2);
txt2.setBounds(114, 60, 100, 20);
//
btn1= newJButton();btn1.setText("Ejecutar");
getContentPane().add(btn1);
btn1.setBounds(90,120, 90, 30);// accion de calcular, cuando se le da click al boton ejecutar
btn1.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvent evt){
btn1ActionPerformed(evt); }
privatevoidbtn1ActionPerformed(ActionEvent evt){
calcular();}});
btn2= newJButton();btn2.setText("Salir");
getContentPane().add(btn2);
btn2.setBounds(190,120, 90, 30);//accion de salir
salir();
}
privatevoidsalir()
{
btn2.addActionListener(newActionListener() {
publicvoidactionPerformed(ActionEvent evt) {dispose();}
7/26/2019 Compendio Poo
23/43
Ing. Rubn Sanabria Compendio POO Java Pgina 22
});
}
privatevoidcalcular(){aa= Integer.parseInt(txt1.getText());
bb= Integer.parseInt(txt2.getText());suma= aa+ bb;
mostrar();
}
privatevoidmostrar(){
JOptionPane.showMessageDialog(null,"La suma es : "+suma);}
publicstaticvoidmain(String[] args) {
Vent03 frm= newVent03();
frm.miVentana();
}
}
4-Ingresar el sueldo y los das trabajados de una persona, calcular su sueldo
bruto. Aqu se utilizan los atributos GET y SET;
Accion del botn en el formulario visto.
7/26/2019 Compendio Poo
24/43
Ing. Rubn Sanabria Compendio POO Java Pgina 23
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here
Empleado sueldo = new Empleado();
sueldo.setPagodiario(Double.parseDouble(jTextField1.getText()));
sueldo.setDiastrabajado(Double.parseDouble(jTextField2.getText()));
jTextField3.setText(String.valueOf(sueldo.sueldoquincenal()));}
Y se instancia a la clase siguiente :
Class Empleado es el nombre de la clase que contiene los get y set
package poo01;
/**
* @author Ruben
*/
public class Empleado {
private double pagodiario;
private double diastrabajado;
public double getPagodiario() {
return pagodiario;
}
public void setPagodiario(double pagodiario) {
this.pagodiario = pagodiario;
}
public double getDiastrabajado() {
return diastrabajado;
}
public void setDiastrabajado(double diastrabajado) {
this.diastrabajado = diastrabajado;
}
public Empleado() {
diastrabajado = 0;
pagodiario = 0;}
public double sueldoquincenal()
{
double total = 0;
int bono = 400;
if (diastrabajado > 13)
{
return total = this.pagodiario * this.diastrabajado + bono;
}
else
{return total = this.pagodiario * this.diastrabajado;
7/26/2019 Compendio Poo
25/43
Ing. Rubn Sanabria Compendio POO Java Pgina 24
}
}
}
Este ejercicio podemos visualizarlo con las siguientes caractersticas :
Las clases podemos verlos de esta forma en UML. (estamos usando Visual
Paradigm).
5- Se tiene las notas de unos alumnos calcular el promedio total. Utilizando los get y
los set.
Vemos los paquetes, Beans y Vista
La clase Empleado, y ms abajo el GUI formSueldo
7/26/2019 Compendio Poo
26/43
Ing. Rubn Sanabria Compendio POO Java Pgina 25
En el evento del botn
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Nota minotas = new Nota();
minotas.setNota1(Double.parseDouble(jTextField1.getText()));
minotas.setNota2(Double.parseDouble(jTextField2.getText()));
minotas.setNota3(Double.parseDouble(jTextField3.getText()));
minotas.setExfinal(Double.parseDouble(jTextField4.getText()));
jTextField5.setText(String.valueOf(minotas.hallarPromedio()));
}
La clase Nota:
package poo01;
/**
* @author Ruben
*/
public class Nota {
private double nota1;
private double nota2;
private double nota3;
private double exfinal;
public Nota() {
nota1 = 0;
nota2 = 0;
nota3 = 0;
exfinal = 0;
}
public double getNota1() {
return nota1;
}
public void setNota1(double nota1) {
this.nota1 = nota1;
}
7/26/2019 Compendio Poo
27/43
Ing. Rubn Sanabria Compendio POO Java Pgina 26
public double getNota2() {
return nota2;
}
public void setNota2(double nota2) {
this.nota2 = nota2;
}public double getNota3() {
return nota3;
}
public void setNota3(double nota3) {
this.nota3 = nota3;
}
public double getExfinal() {
return exfinal;
}
public void setExfinal(double exfinal) {
this.exfinal = exfinal;}
public double hallarPromedio()
{
return (nota1+nota2+nota3+exfinal/4);
}
}
7/26/2019 Compendio Poo
28/43
Ing. Rubn Sanabria Compendio POO Java Pgina 27
Sistema Con Windows forms
Sistema de escritorio con MVC
Diagrama Entidad/relacin
Obs.Hago la salvedad, este diagrama entidad relacin de nuestro proyecto no es el ptimo,
dejo a los alumnos para que lo optimicen, agregndole nuevas tablas, con sus relacionescorrespondientes, pero para un modelo de clase sirve.
Para la creacin del proyecto academico01, se crea el nuevo proyecto, luego se crean los
paquetes correspondientes como muestra la figura.
7/26/2019 Compendio Poo
29/43
Ing. Rubn Sanabria Compendio POO Java Pgina 28
Vemos la distribucin del proyecto, utilizando el
paradigma MVC.
Divididos en paquetes :
-Controlador: en ella se realizan las conexiones,
y los mtodos realizados con la BD.
-Modelo: en ella se realizan las reglas de negocios
del proyecto, con los atributos del setter y getter, y
sus diferentes mtodos.
-Vista : en este paquete se concentran los
formularios del sistema.
En el paquete controlador : la clase Conexin.
package controlador;
/**
* @author rsb
*/
import java.sql.*;
import java.util.*;
import java.io.*;
public class Conexion {
static private String servidor = "";
static private String bd = "academicos";
static private String login = "root";
static private String pasword = "";
public static String getServidor() {
return servidor;
}
public static void setServidor(String servidor) {
Conexion.servidor = servidor;
}
public static Connection abrirConexion() {
lee_ini();
String _JDBC = "com.mysql.jdbc.Driver";
String _BDATOS = "jdbc:mysql://"+servidor+":3306/" + bd;
Connection con = null;
try {
Class.forName(_JDBC );
con = DriverManager.getConnection(_BDATOS,login,pasword);
7/26/2019 Compendio Poo
30/43
Ing. Rubn Sanabria Compendio POO Java Pgina 29
// System.out.println("Conexion abierta...");
} catch (SQLException e) {
System.out.println(e.getMessage());
} catch (ClassNotFoundException e) {
System.out.println(e.getMessage());
} catch (Exception e) {System.out.println(e.getMessage());
}
return con;
}
public static void cerrarConexion(Connection con) {
try {
con.close();
// System.out.println("Conexion cerrada...");
} catch (SQLException e) {
System.out.println(e.getMessage());
} catch (Exception e) {System.out.println(e.getMessage());
}
}
public static void lee_ini()
{
try{
Properties p = new Properties();
p.load(new FileInputStream("D:\\conn.ini"));
servidor = p.getProperty("IPLocal");
System.out.println("lei laconexion .ini:"+ servidor);
//contrasea = p.getProperty("Contrasea");
} catch (Exception e) {
System.out.println("error al leer el archivo .ini:"+
e.getMessage());
}
}
}
Formulario de Ingreso al sistema
7/26/2019 Compendio Poo
31/43
Ing. Rubn Sanabria Compendio POO Java Pgina 30
Vista del formulario login :
package vista;
import controlador .*;
import modelo.*;import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
/**
* @author Ruben
*/
public class login extends javax.swing.JFrame {
public login() {
initComponents();limpiar();
}
private void limpiar(){
jTextField1.setText("");
jPasswordField1.setText("");
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Connection con = Conexion.abrirConexion();
usuarioBean cb = new usuarioBean();usuarioDAO cd = new usuarioDAO(con);
cb.setLog(jTextField1.getText());
// cb.setPas(jPasswordField1.getPassword().toString());
cb.setPas(jPasswordField1.getText());
List viewCodigo = new ArrayList();
viewCodigo = cd.buscarCodigo(cb);
if (!viewCodigo.isEmpty()){
for(usuarioBean cb1 : viewCodigo){
int nivel = cb1.getNivel();switch (nivel){
case 9 :{
// // menu9 menu = new menu9();
// // menu.setVisible(true);
// // menu.setLocationRelativeTo(null);
break;
}
case 2 :{
// menu2 menu = new menu2();
// menu.setVisible(true);
// menu.setLocationRelativeTo(null);break;
7/26/2019 Compendio Poo
32/43
Ing. Rubn Sanabria Compendio POO Java Pgina 31
}
case 1 :{
menu1 menu = new menu1();
menu.setVisible(true);
menu.setLocationRelativeTo(null);
break;}
}
}}
else {
JOptionPane.showMessageDialog(null, "Hubo problemas con la
conexion \n"
+ "o Usuario no existe....." , " ERROR...",
JOptionPane.INFORMATION_MESSAGE);
}
Conexion.cerrarConexion(con);
}
Vemos que el formulario de acceso, utiliza las clases de usuario, contenidos en el
paquete del controlador del DAO.
Paquete Controlador:
Clase usuarioDAO
package controlador;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import modelo.*;
/**
*
* @author SANABRIA
*/
public class usuarioDAO {
private Connection conn;
public Connection getConn() {
return conn;
}
public void setConn(Connection conn) {
this.conn = conn;
}
public usuarioDAO(Connection conn) {
this.conn = conn;
7/26/2019 Compendio Poo
33/43
Ing. Rubn Sanabria Compendio POO Java Pgina 32
}
public String agregar (usuarioBean usuario)
{
String SQL = "insert into usuarios (usu_cod,usu_login,usu_pas, "
+ "usu_nombre) "+ " values (?,?,?,?) ";
try {
PreparedStatement ps = getConn().prepareStatement(SQL);
ps.setInt(1,usuario.getCod());
ps.setString(2,usuario.getLog());
ps.setString(3,usuario.getPas());
ps.setString(4,usuario.getNom());
// ps.setString(5,usuario.getDir());
if (ps.executeUpdate() > 0) {
return "Agregado el registro.";} else {
return "Error al agregar";
}
} catch (SQLException e) {
return e.getMessage();
}
}
/// borrar
public String borrar (usuarioBean usuario)
{
String sql = "delete from usuarios where usu_cod = ?";
try {
PreparedStatement ps = getConn().prepareStatement(sql);
ps.setInt(1, usuario.getCod());
if (ps.executeUpdate() > 0) {
return "Se ha borrado registro...";
} else {
return "Error al querer borrar...";
}
} catch (SQLException e) {
return e.getMessage();
}
}
///modificar
public String modificar (usuarioBean usuario)
{
String sql = "update usuarios "
+ "set usu_login = ?, "
+ " usu_nombre = ? "
+ "where usu_cod = ?";
try {
PreparedStatement ps = getConn().prepareStatement(sql);
ps.setString(1, usuario.getLog());
ps.setString(2, usuario.getNom());
7/26/2019 Compendio Poo
34/43
Ing. Rubn Sanabria Compendio POO Java Pgina 33
ps.setInt(3, usuario.getCod());
if (ps.executeUpdate() > 0) {
return "Se ha modificado registro...";
} else {
return "Error al querer modificar..";}
} catch (SQLException e) {
return e.getMessage();
}
}
public List listarUsuario() {
String sql = "select usu_cod,usu_login,usu_nombre "
+" FROM usuarios ORDER BY usu_cod ASC ";
List listaUsuario = new ArrayList();try {
PreparedStatement ps = getConn().prepareStatement(sql);
ResultSet rs = ps.executeQuery();
if (rs != null) {
while (rs.next()) {
usuarioBean cb = new usuarioBean();
cb.setCod(rs.getInt(1));
cb.setLog(rs.getString(2));
cb.setNom(rs.getString(3));
// cb.setDir(rs.getString(4));
// cb.setTel(rs.getString(5));
listaUsuario.add(cb);
}
return listaUsuario;
} else {
return null;
}
} catch (SQLException e) {
return null;
}
}
public List listarCodigo(usuarioBean usuario) {
String sql = "select usu_codigo,usu_login,usu_nombre,usu_direc, "
+" usu_tel FROM usuarios Where usu_codigo = ?";
List listaCodigo = new ArrayList();
try {
PreparedStatement ps = getConn().prepareStatement(sql);
ps.setInt(1, usuario.getCod());
ResultSet rs = ps.executeQuery();
if (rs != null) {
while (rs.next()) {
usuarioBean cb = new usuarioBean();
7/26/2019 Compendio Poo
35/43
Ing. Rubn Sanabria Compendio POO Java Pgina 34
cb.setCod(rs.getInt(1));
cb.setLog(rs.getString(2));
cb.setNom(rs.getString(3));
cb.setDir(rs.getString(4));
cb.setTel(rs.getString(5));
// cb.setCod(rs.getInt(6));// cb.setCod(rs.getInt(7));
listaCodigo.add(cb);
// System.out.print(cb);
}
return listaCodigo;
} else {
return null;
}
} catch (SQLException e) {
return null;} //IKE '%"+nArticulo+"%'"
}
public List listarNombre(usuarioBean usuario) {
// String interrogacion="?";
String interrogacion="'%"+"?"+"%'";
String sql = "select * "
+" FROM usuarios Where usu_nombre LIKE interrogacion";
List listaNombre = new ArrayList();
try {
PreparedStatement ps = getConn().prepareStatement(sql);
ps.setString(3, usuario.getNom());
ResultSet rs = ps.executeQuery();
if (rs != null) {
while (rs.next()) {
usuarioBean cb = new usuarioBean();
cb.setCod(rs.getInt(1));
cb.setLog(rs.getString(2));
cb.setNom(rs.getString(3));
cb.setDir(rs.getString(4));
cb.setTel(rs.getString(5));
// cb.setCod(rs.getInt(6));
// cb.setCod(rs.getInt(7));
listaNombre.add(cb);
// System.out.print(cb);
}
return listaNombre;
} else {
return null;
}
} catch (SQLException e) {
return null;
}
}
7/26/2019 Compendio Poo
36/43
Ing. Rubn Sanabria Compendio POO Java Pgina 35
public List buscarCodigo(usuarioBean u) {
String sql = "SELECT usu_login,usu_pas,usu_nivel "
+" FROM usuarios WHERE "
+" usu_login = ? AND usu_pas = ? ";
List listaCodigo = new ArrayList();try {
PreparedStatement ps = getConn().prepareStatement(sql);
ps.setString(1, u.getLog());
ps.setString(2, u.getPas());
ResultSet rs = ps.executeQuery();
if (rs != null) {
while (rs.next()) {
usuarioBean cb = new usuarioBean();
cb.setLog(rs.getString(1));
cb.setPas(rs.getString(2));cb.setNivel(rs.getInt(3));
listaCodigo.add(cb);
// System.out.print(cb);
}
return listaCodigo;
} else {
return null;
}
} catch (SQLException e) {
return null;
}
}
/**
* Mtodo que devuelve el identificador mayor de una tabla
* @authors ruben sanabria
* @param campo: campo identificador de la tabla
* @param tabla: nombre de la tabla a analizar
* @return identificador mayor
*/
public List maxCodigo(usuarioBean usuario) {
String sql = "select MAX(usu_cod+1) "
+" FROM usuarios ";
List mxCodigo = new ArrayList();
try {
PreparedStatement ps = getConn().prepareStatement(sql);
// ps.setString(1, usuario.getLog());
// ps.setString(2, usuario.getPas());
ResultSet rs = ps.executeQuery();
if (rs != null) {
while (rs.next()) {
usuarioBean cb = new usuarioBean();
7/26/2019 Compendio Poo
37/43
Ing. Rubn Sanabria Compendio POO Java Pgina 36
cb.setCod(Integer.parseInt(rs.getString(1)));
mxCodigo.add(cb);
//System.out.print(mxCodigo);
}
return mxCodigo;} else {
return null;
}
} catch (SQLException e) {
return null;
}
}
}
Paquete Beans
package modelo;
/**
* @author SANABRIA
*/
public class usuarioBean {
public int cod;
public String log,pas,nom,dir,tel;
public int nivel;
public int getCod() {return cod;
}
public void setCod(int cod) {
this.cod = cod;
}
public String getLog() {
return log;
}
public void setLog(String log) {
this.log = log;
}
public String getPas() {
return pas;
}
public void setPas(String pas) {
this.pas = pas;
}
7/26/2019 Compendio Poo
38/43
Ing. Rubn Sanabria Compendio POO Java Pgina 37
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;}
public String getDir() {
return dir;
}
public void setDir(String dir) {
this.dir = dir;
}
public String getTel() {return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public int getNivel() {
return nivel;
}
public void setNivel(int nivel) {
this.nivel = nivel;
}
}
Y en la vista.
7/26/2019 Compendio Poo
39/43
Ing. Rubn Sanabria Compendio POO Java Pgina 38
Vemos que en este ejemplo se utiliza el dialog.
Llamadas :
1- Lista de datos en la tabla
public int ban = 0;
private String codigo;
private Connection con;
JTextField[] textfields;
JButton[] botones;
JTable[] grillas;
public usuarios() {
initComponents();
textfields = new
JTextField[]{jTextField2,jTextField3,jTextField4,jTextField5};
botones = new JButton[]{jButton2,jButton3,jButton4,jButton5};
verDatos();
}
private void verDatos()
{
Conexion.cerrarConexion(con);
Connection con = Conexion.abrirConexion();
usuarioBean cb = new usuarioBean();
usuarioDAO cd = new usuarioDAO(con);
List listaUsuario = new ArrayList();
listaUsuario = cd.listarUsuario();
// DefaultTableModel tbm = (DefaultTableModel)grilla.getModel();
DefaultTableModel tbm = (DefaultTableModel)jTable1.getModel();
tbm.setColumnIdentifiers(new
String[]{"Codigo","Login","Nombre"});
for(int i = tbm.getRowCount()-1; i >= 0; i--){
tbm.removeRow(i);
}
1
2
3
4
7/26/2019 Compendio Poo
40/43
Ing. Rubn Sanabria Compendio POO Java Pgina 39
int i = 0;
for(usuarioBean cbb : listaUsuario){
tbm.addRow(new String[1]);
jTable1.setValueAt(cbb.getCod(), i, 0);
jTable1.setValueAt(cbb.getLog(), i, 1);
jTable1.setValueAt(cbb.getNom(), i, 2);// jTable1.setValueAt(cbb.getDir(), i, 3);
// jTable1.setValueAt(cbb.getTel(), i, 4);
i++;
}
Conexion.cerrarConexion(con);
jTable1.requestFocus();
}
2- Accin del botn de agregar
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
ban = 1;
usuariosUp.setSize(450,270);
usuariosUp.setVisible(true);
usuariosUp.setLocationRelativeTo(null);
comunes.limpiar_txt(textfields);
Connection con = Conexion.abrirConexion();
usuarioBean cb = new usuarioBean();
usuarioDAO cd = new usuarioDAO(con);
// ajPanel.setEnabledAndNull(true, jPanel_cab);
List verCodigo = new ArrayList();
verCodigo = cd.maxCodigo(cb);
int i = 0;
for(usuarioBean cb1 : verCodigo){
this.jTextField2.setText(String.valueOf(cb1.getCod()));
}
this.jTextField3.requestFocus();Conexion.cerrarConexion(con);
7/26/2019 Compendio Poo
41/43
Ing. Rubn Sanabria Compendio POO Java Pgina 40
}
3- Accin del botn de modificar
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
// para modificar:ban = 2;
usuariosUp.setSize(450,270);
usuariosUp.setVisible(true);
usuariosUp.setLocationRelativeTo(null);
comunes.limpiar_txt(textfields);
Integer linea = jTable1.getSelectedRow();
this.jTextField2.setText(String.valueOf(jTable1.getValueAt(linea,
0)));
this.jTextField2.setEditable(false);
this.jTextField3.setText((String) jTable1.getValueAt(linea, 1));
// this.jTextField4.setText((String) jTable1.getValueAt(linea,2));
this.jTextField5.setText((String) jTable1.getValueAt(linea, 2));
}
4- Accin del botn de borrarprivate void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
// Borrar:
Connection con = Conexion.abrirConexion();
usuarioBean cb = new usuarioBean();
usuarioDAO cd = new usuarioDAO(con);
Integer linea = jTable1.getSelectedRow();
// Integer codigo = Integer.parseInt((String) jTable1.getValueAt(linea,
0));
cb.setCod(Integer.parseInt(codigo));
Object[] opcs = { "Si", "No" };
int i = JOptionPane.showOptionDialog(null,"Desea Borrar Registro ?:"
+"", "Grabado",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE, null,
opcs, opcs[0]);
if (i == JOptionPane.YES_OPTION) {
cd.borrar(cb); //borrar datos
verDatos();
Conexion.cerrarConexion(con);
}
}
5- Accin del botn de ejecutarprivate void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Connection con = Conexion.abrirConexion();
usuarioBean cb = new usuarioBean();
7/26/2019 Compendio Poo
42/43
Ing. Rubn Sanabria Compendio POO Java Pgina 41
usuarioDAO cd = new usuarioDAO(con);
switch (ban){
case 1 :{
cb.setCod(Integer.parseInt(jTextField2.getText()));
cb.setLog(jTextField3.getText());
cb.setPas(jTextField4.getText());cb.setNom(jTextField5.getText());
Object[] opcs = { "Si", "No" };
int i = JOptionPane.showOptionDialog(null,"Desea Agregar
Nuevo Registro ?:"
+""+this.jTextField1.getText()+"?",
"Grabado",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE, null,
opcs, opcs[0]);
if (i == JOptionPane.YES_OPTION) {
cd.agregar(cb); //agregar nuevo
}break;
}
case 2 :{
cb.setLog(jTextField3.getText());
cb.setNom(jTextField5.getText());
cb.setCod(Integer.parseInt(jTextField2.getText()));
Object[] opcs = { "Si", "No" };
int i = JOptionPane.showOptionDialog(null,"Desea Modificar
Registro ?:"
+""+this.jTextField1.getText()+"?",
"Grabado",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE, null,
opcs, opcs[0]);
if (i == JOptionPane.YES_OPTION) {
cd.modificar(cb); //modificar datos
}
break;
}
}
// comunes.limpiar_txt(textfields);
usuariosUp.dispose();
verDatos();
Conexion.cerrarConexion(con);
}
Accin click sobre la grilla, para seleccionar la fila
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
Integer linea = jTable1.getSelectedRow();
codigo = String.valueOf(jTable1.getValueAt(linea, 0));
}
7/26/2019 Compendio Poo
43/43
En la vista tambin podemos ver el men principal, que es accesado una vez
ingresado el login y password del usuario.
Recommended