Вы находитесь на странице: 1из 43

Compendio de POO

en Java
Ing. 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

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 usted
escribe) 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 hizo
posible 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


un paradigma de programacin que usa los objetos en sus interacciones, para disear
aplicaciones
y
programas informticos.
Est
basado
en
varias
tcnicas,
incluyendo herencia,cohesin, abstraccin, polimorfismo, acoplamiento y encapsulamiento.

Ing. Rubn Sanabria Compendio POO Java

Pgina 1

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
(mtodo) e identidad:

que

tienen

un

determinado estado, comportamiento

El estado est 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 los mtodos o mensajes a los que sabe responder
dicho objeto, es decir, qu operaciones se pueden realizar con l.
La identidad es una propiedad de un objeto que lo diferencia del resto; dicho con otras
palabras, es su identificador (concepto anlogo al de identificador de una variable o
una constante).
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 llamados mtodos, 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. El programador debe pensar
indistintamente en ambos conceptos, sin separar ni darle mayor importancia a alguno de
ellos. 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 una programacin estructurada camuflada en un lenguaje de
programacin orientado a objetos.
La POO difiere de la programacin 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:

Ing. Rubn Sanabria Compendio POO Java

Pgina 2

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.

Ing. Rubn Sanabria Compendio POO Java

Pgina 3

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 un
procedimiento 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 realizar
trabajo, 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 la cohesin 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

Ing. Rubn Sanabria Compendio POO Java

Pgina 4

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 o rompecabezas 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
la sobrecarga 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++ u Object Pascal, esta caracterstica no existe y la memoria
debe desasignarse expresamente.
Ing. Rubn Sanabria Compendio POO Java

Pgina 5

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 de
formato %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);

Ing. Rubn Sanabria Compendio POO Java

Pgina 6

Clases
Ejercicios
1-Dado dos nmeros a, b hallar la suma de ambos, y el resultado mostrar por pantalla.
package poo1;
public class ejem001 {
static int aa,bb,suma;
public static void main(String[] args) {
aa = 23;
bb = 35;
ejem001 ejercicio = new ejem001();
ejercicio.sumar();
System.out.println("La suma es : "+suma);
}
private void sumar()
{
suma = aa + bb;
}

}
2- Hallar el permetro y el rea de un cuadrado de 3 m de lado.
package poo1;
public class Ejem002 {
static double lado,perimetro,area;
public static void main(String[] args) {
lado = 3;
Ejem002 ejercicio = new Ejem002();
ejercicio.perimetro();
ejercicio.area();
}
private void perimetro()
{
perimetro = 4 * lado;
System.out.println("El perimetro del cuadrado es : "+perimetro);
}
private void area()
{
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.

Ing. Rubn Sanabria Compendio POO Java

Pgina 7

package poo1;
import java.util.Scanner;
public class Ejem003 {
static double perimetro,altura,base,area;
public static void main(String[] args) {
perimetro = 825;
altura = 125;
Ejem003 ejercicio = new Ejem003();
ejercicio.ingreseDato();
ejercicio.calcular();
}
private void ingreseDato()
{
Scanner teclado = new Scanner(System.in);
System.out.println("Ingrese la Base : ");
base = teclado.nextDouble();
}
private void calcular()
{
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 ha


ingresado al programa.
package poo1;
import javax.swing.*;
public class Ejem006 {
static int nro;
static String aa;
public static void main(String[] args) {
Ejem006 ejercicio = new Ejem006();
ejercicio.ingreso();
ejercicio.validardato();
ejercicio.selecciona();
}
private void ingreso()
{
aa = JOptionPane.showInputDialog("Ingrese numero");
nro = Integer.parseInt(aa);
}
private void validardato()
{
if (nro < 1)
JOptionPane.showMessageDialog(null,"Nmero ingresado es menor
que 1");
if (nro >3)

Ing. Rubn Sanabria Compendio POO Java

Pgina 8

JOptionPane.showMessageDialog(null,"Nmero ingresado es mayor que


3");
}
private void selecciona()
{
switch(nro)
{
case 1 : JOptionPane.showMessageDialog(null,"Igual a "+ nro);
break;
case 2 : JOptionPane.showMessageDialog(null,"Igual a "+ nro);
break;
case 3 : JOptionPane.showMessageDialog(null,"Igual a "+ nro);
break;
}
}
}

5- Ingrese un nmero y hallar sus nmeros primos, hasta el nmero ingresado.


package ejercicios;
import java.util.Scanner;
public class primos {
Scanner teclado = new Scanner(System.in);
int nro;
int cont=0,i=1,suma=0;
private void ingreseDato(){
System.out.print("Ingrese cantidad de primos : ");
nro = teclado.nextInt();
}
private void calcular(){
while (cont<nro){
if (esPrimo(i)){
System.out.print(i+"\t");
cont++;
suma = suma+i;
}
i++;
}
System.out.println("\n La suma es :"+suma);
}
private static boolean esPrimo(int n){
for (int i=2;i<=n/2;i++){
if (n%i==0)
return false;
}
return true;
}
public static void main(String[] args) {
primos primo = new primos();
primo.ingreseDato();
primo.calcular();
}

Ing. Rubn Sanabria Compendio POO Java

Pgina 9

6- Calcular el factorial de un numero, Ingrese un nmero y hallar sus nmeros.


package ejercicios;
import java.util.Scanner;
public class factorial {
Scanner teclado = new Scanner(System.in);
double nro,aux;
private void ingreseDato(){
System.out.print("Ingrese el Nro : ");
nro = teclado.nextDouble();
}
private void calcular(){
aux = 1;
for (int i = 1; i <= nro; i++){
aux *= i;
System.out.print(" "+aux);
}
System.out.println("\n el factorial de "+nro+" es : "+aux);
}
public static void main(String[] args) {
factorial fac = new factorial();
fac.ingreseDato();
fac.calcular();
}
}

Vectores
Un array es una estructura de datos que contiene una coleccin de datos del mismo
tipo.
Propiedades de los arrays
Los arrays se utilizan como contenedores para almacenar datos relacionados (en
vez de declarar variables por separado para cada uno de los elementos del array).
Todos los datos incluidos en el array son del mismo tipo.
. Se pueden crear arrays de enteros de tipo int o de reales de tipo float, pero en un
mismo array no se pueden mezclar datos de tipo int y datos de tipo float.
El tamao del array se establece cuando se crea el array (con el operador new ,
igual que cualquier otro objeto).
A los elementos del array se acceder a travs de la posicin que ocupan dentro del
conjunto de elementos del array.
Terminologa
Los arrays unidimensionales se conocen con el nombre de vectores.
Los arrays bidimensionales se conocen con el nombre de matrices.
Ing. Rubn Sanabria Compendio POO Java

Pgina 10

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.
package poo1;
import java.util.Scanner;
public class vect001 {
static int n;
static int[] a;
static Scanner teclado = new Scanner(System.in);
public static void main( String[] args){
vect001 vec = new vect001();
vec.tamanio();
vec.cargar_datos();
vec.imprimir();
}
public void tamanio(){
System.out.print("Ingrese el tamanio del vector: ");
n = teclado.nextInt();
if(n>0)
a = new int[n];
else
tamanio();
}
public void cargar_datos(){
for(int x=0; x<n; x++){
System.out.print("Ingrese el valor["+x+"]: ");
int num = teclado.nextInt();
if(num>0)
a[x] = num;
else
x--;
}
}
public void imprimir(){
for(int x=0; x<n; x++)
System.out.print(a[x]+" ");
}
}

Ing. Rubn Sanabria Compendio POO Java

Pgina 11

8- Crear un vector V de N componentes y sumar todos los elementos del vector que
sean enteros.
package poo1;
import java.util.Scanner;
public class vect002 {
static int n, suma;
static float[] a;
static Scanner teclado = new Scanner(System.in);
public static void main(String[] args){
vect002 vec = new vect002();
vec.tamanio();
vec.cargar_datos();
vec.imprimir();
}
public void tamanio(){
System.out.print("Ingrese el tamanio del vector: ");
n = teclado.nextInt();
if(n>0)
a = new float[n];
else
tamanio();
}
public void cargar_datos(){
for(int x=0; x<n; x++){
System.out.print("Ingrese el valor["+x+"]: ");
a[x] = teclado.nextFloat();
if(a[x]==Math.round(a[x]))
suma+=a[x];
}
}
public void imprimir(){
for(int x=0; x<n; x++){
if(a[x]==Math.round(a[x]))
System.out.print((int)a[x]+" ");
else
System.out.print(a[x]+" ");
}
System.out.println();
System.out.println("Suma de numeros positivos: "+suma);
}
}

Matrices
Son arreglos bidimensionales, es una coleccin finita, homognea y ordenada de
datos. Una matriz est compuesta por filas y columnas, en la que se hace referencia
a cada elemento por medio de dos ndices. El primero de los ndices se utiliza para
indicar la fila y el segundo de los ndices para indicar la columna.

Ing. Rubn Sanabria Compendio POO Java

Pgina 12

Fig. matriz

Declaracin de una matriz


Ing. Rubn Sanabria Compendio POO Java

Pgina 13

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.
package poo1;
import java.util.Scanner;
public class mat001 {
int n,m;
int[][] mat;
Scanner teclado = new Scanner(System.in);
public static void main(String[]args){
mat001 mat = new mat001();
mat.dimension();
mat.cargar_datos();
mat.imprimir();

Ing. Rubn Sanabria Compendio POO Java

Pgina 14

}
public void dimension(){
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 = new int[n][m];
}
public void cargar_datos(){
for(int j = 0; j<n; j++){
for(int k = 0; k<m; k++){
System.out.print("matriz["+j+"]["+k+"]: ");
int aux = teclado.nextInt();
if(aux==1)
mat[j][k] = aux;
else{
System.out.println("Debe ingresar el elemento 1");
k--;
}
}
}
}
public void imprimir(){
for(int j = 0; j<n; j++){
for(int k = 0; k<m; k++){
System.out.print(mat[j][k]+"\t");
}
System.out.println();
System.out.println();
}
}
}

10- Crear una matriz cuadrada y cargarlo con nmeros positivos


package poo1;
import java.util.Scanner;
public class mat002 {
int n;
int[][] mat;
Scanner teclado = new Scanner(System.in);
public static void main(String[]args){
mat002 mat = new mat002();
mat.dimension();
mat.cargar_datos();
mat.imprimir();
}
public void dimension(){
System.out.print("Ingrese el filas y columnas de la matriz: ");
n = teclado.nextInt();
mat = new int[n][n];
}

Ing. Rubn Sanabria Compendio POO Java

Pgina 15

public void cargar_datos(){


for(int j = 0; j<n; j++){
for(int k = 0; k<n; k++){
System.out.print("matriz["+j+"]["+k+"]: ");
int aux = teclado.nextInt();
if(aux>0)
mat[j][k] = aux;
else{
System.out.println("Debe ingresar un elemento positivo!");
k--;
}
}
}
}
public void imprimir(){
for(int j = 0; j<n; j++){
for(int k = 0; k<n; k++){
System.out.print(mat[j][k]+"\t");
}
System.out.println();
System.out.println();
}
}
}

Polimorfismo
El polimorfismo en nada ms y nada menos que el denominado sobrecarga de mtodos, en
POO. Pero con diferentes acciones de los mtodos.
1- Se tiene un vehculo al que se le pasa diferentes valores, como color, marca,
cantidad de puertas.
package poo1;
public class Poli001 {
static String color,marca;
static int puerta;
public static void main(String[] args) {
Poli001 auto = new Poli001();
// se visualiza miVehiculo
auto.miVehiculo();
// le envio los parametros
auto.miVehiculo("Gris", "Renault", 4);
}

Este mtodo no ingresa datos


public void miVehiculo()
{
color = "blanco";
marca = "Mercedes Benz";
puerta = 4;
System.out.println("Caracteristicas de mi auto...");
Ing. Rubn Sanabria Compendio POO Java

Pgina 16

System.out.println("es de color "+color+" la marca es "+marca +" de


"+puerta+" puertas");
}

Se ingresan
datos como
parmetros

public void miVehiculo(String color,String marca, int puerta)


{
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 que
indique dichas actividades.
package poo1;
public class Encap001 {
public static void main(String[] args) {
Vehiculo1 auto = new Vehiculo1();
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
package poo1;
public class Vehiculo1 {
public int velocidad;
private int getVelocidad() {
return velocidad;
}

Se crean los get y los


set, que encapsulan las
variables

private void setVelocidad(int velocidad) {


this.velocidad = velocidad;
}

Ing. Rubn Sanabria Compendio POO Java

Pgina 17

public void acelerar()


{
velocidad++;
System.out.println("acelero a "+ velocidad);
}
public void frenar()
{
velocidad--;
System.out.println("freno a "+ velocidad);
}
}

2- Ingrese datos a un libro de calificaciones.


package poo1;
public class Encap002 {
public static void main(String[] argx)
{
libros libro1 = new libros();
libros libro2 = new libros();
libro1.notas = 30;
libro2.notas = 35;
System.out.printf("Curso de libro1 es
System.out.printf("Curso de libro2 es

%s",libro1.notas +"\n");
%s",libro2.notas);

}
}

Y en la clase libros se tiene :


package poo1;
public class libros {
public int notas;
public int getNotas() {
return notas;
}
public void setNotas(int notas) {
this.notas = notas;
}
}

Sistema Grafico, con swings


Ing. Rubn Sanabria Compendio POO Java

Pgina 18

1-Crear un formulario, utilizando solamente comandos de java


package poo1;
import javax.swing.JFrame;
public class vent01 extends JFrame {
public void miVentana()
{
setTitle("Mi nueva ventana");
setSize(400,300);
setVisible(true);

En este ejemplo estamos


viendo parte de la herencia
con la palabra extends que
hereda de la clase padre
JFrame

}
public static void main(String[] args) {
vent01 frm = new vent01();
frm.miVentana();
}
}

Es el resultado del programa anterior

2- Crear un formulario, tambin etiquetas y textos


package poo1;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class Vent02 extends JFrame{
private JLabel etiq1,etiq2;
private JTextField txt1,txt2;
private void miVentana()
{
setTitle("Mi Segunda ventana");
setSize(400,300);
setVisible(true);
initComponentes();
}
private void initComponentes()
{
getContentPane().setLayout(null);

Ing. Rubn Sanabria Compendio POO Java

Pgina 19

etiq1= new JLabel();


etiq1.setText("Codigo :");
getContentPane().add(etiq1);
etiq1.setBounds(30, 28, 100, 20);
//
etiq2= new JLabel();
etiq2.setText("Nombre :");
getContentPane().add(etiq2);
etiq2.setBounds(30, 60, 100, 20);
//
//
txt1= new JTextField();
txt1.setText("0.00");
getContentPane().add(txt1);
txt1.setBounds(114, 28, 100, 20);
//
txt2= new JTextField();
txt2.setText(" ");
getContentPane().add(txt2);
txt2.setBounds(114, 60, 180, 20);
}
public static void main(String[] args) {
Vent02 frm = new Vent02();
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.
package poo1;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
public class Vent03 extends JFrame{
private JLabel etiq1,etiq2;
private JTextField txt1,txt2;
private JButton btn1,btn2;
int aa,bb,suma;

Ing. Rubn Sanabria Compendio POO Java

Pgina 20

private void miVentana ()


{
setTitle("Mi tercera ventana");
setSize(400,300);
setVisible(true);
initComponentes();
}
private void initComponentes()
{
getContentPane().setLayout(null);
etiq1= new JLabel();
etiq1.setText("Ingresa A :");
getContentPane().add(etiq1);
etiq1.setBounds(30, 28, 100, 20);
//
etiq2= new JLabel();
etiq2.setText("Ingresa B :");
getContentPane().add(etiq2);
etiq2.setBounds(30, 60, 100, 20);
//
//
txt1= new JTextField();
txt1.setText("0");
getContentPane().add(txt1);
txt1.setBounds(114, 28, 100, 20);
//
txt2= new JTextField();
txt2.setText("0");
getContentPane().add(txt2);
txt2.setBounds(114, 60, 100, 20);
//
btn1 = new JButton();
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(new ActionListener(){
public void actionPerformed(ActionEvent evt){
btn1ActionPerformed(evt);
}
private void btn1ActionPerformed(ActionEvent evt){
calcular();
}});

btn2 = new JButton();


btn2.setText("Salir");
getContentPane().add(btn2);
btn2.setBounds(190,120, 90, 30);
//accion de salir
salir();
}
private void salir()
{
btn2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
dispose();}

Ing. Rubn Sanabria Compendio POO Java

Pgina 21

});
}

private void calcular(){


aa = Integer.parseInt(txt1.getText());
bb = Integer.parseInt(txt2.getText());
suma = aa + bb;
mostrar();
}
private void mostrar()
{
JOptionPane.showMessageDialog(null,"La suma es : "+suma);
}
public static void main(String[] args) {
Vent03 frm = new Vent03();
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.

Ing. Rubn Sanabria Compendio POO Java

Pgina 22

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;

Ing. Rubn Sanabria Compendio POO Java

Pgina 23

}
}
}

Este ejercicio podemos visualizarlo con las siguientes caractersticas :

Vemos los paquetes, Beans y Vista

La clase Empleado, y ms abajo el GUI formSueldo

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.

Ing. Rubn Sanabria Compendio POO Java

Pgina 24

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

Ing. Rubn Sanabria Compendio POO Java

Pgina 25

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

Ing. Rubn Sanabria Compendio POO Java

Pgina 26

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 relaciones
correspondientes, 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.

Ing. Rubn Sanabria Compendio POO Java

Pgina 27

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
static private String
static private String
static private String

servidor = "";
bd = "academicos";
login = "root";
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);

Ing. Rubn Sanabria Compendio POO Java

Pgina 28

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

Ing. Rubn Sanabria Compendio POO Java

Pgina 29

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<usuarioBean> viewCodigo = new ArrayList<usuarioBean>();
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;

Ing. Rubn Sanabria Compendio POO Java

Pgina 30

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

Ing. Rubn Sanabria Compendio POO Java

Pgina 31

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

Ing. Rubn Sanabria Compendio POO Java

Pgina 32

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<usuarioBean> listarUsuario() {


String sql = "select usu_cod,usu_login,usu_nombre "
+" FROM usuarios ORDER BY usu_cod ASC ";
List<usuarioBean> listaUsuario = new ArrayList<usuarioBean>();
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<usuarioBean> listarCodigo(usuarioBean usuario) {
String sql = "select usu_codigo,usu_login,usu_nombre,usu_direc, "
+" usu_tel FROM usuarios Where usu_codigo = ?";
List<usuarioBean> listaCodigo = new ArrayList<usuarioBean>();
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();

Ing. Rubn Sanabria Compendio POO Java

Pgina 33

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<usuarioBean> listarNombre(usuarioBean usuario) {
// String interrogacion="?";
String interrogacion="'%"+"?"+"%'";
String sql = "select * "
+" FROM usuarios Where usu_nombre LIKE interrogacion";
List<usuarioBean> listaNombre = new ArrayList<usuarioBean>();
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;
}
}

Ing. Rubn Sanabria Compendio POO Java

Pgina 34

public List<usuarioBean> buscarCodigo(usuarioBean u) {


String sql = "SELECT usu_login,usu_pas,usu_nivel "
+" FROM usuarios WHERE "
+" usu_login = ? AND usu_pas = ? ";
List<usuarioBean> listaCodigo = new ArrayList<usuarioBean>();
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<usuarioBean> maxCodigo(usuarioBean usuario) {
String sql = "select MAX(usu_cod+1) "
+" FROM usuarios ";
List<usuarioBean> mxCodigo = new ArrayList<usuarioBean>();
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();

Ing. Rubn Sanabria Compendio POO Java

Pgina 35

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

Ing. Rubn Sanabria Compendio POO Java

Pgina 36

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.

Ing. Rubn Sanabria Compendio POO Java

Pgina 37

Vemos que en este ejemplo se utiliza el dialog.

4
3

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<usuarioBean> listaUsuario = new ArrayList<usuarioBean>();
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);
}

Ing. Rubn Sanabria Compendio POO Java

Pgina 38

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<usuarioBean> verCodigo = new ArrayList<usuarioBean>();
verCodigo = cd.maxCodigo(cb);
int i = 0;
for(usuarioBean cb1 : verCodigo){
this.jTextField2.setText(String.valueOf(cb1.getCod()));
}
this.jTextField3.requestFocus();
Conexion.cerrarConexion(con);

Ing. Rubn Sanabria Compendio POO Java

Pgina 39

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));
}
4Accin del botn de borrar
private 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 ejecutar


private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Connection con = Conexion.abrirConexion();
usuarioBean cb = new usuarioBean();

Ing. Rubn Sanabria Compendio POO Java

Pgina 40

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

Ing. Rubn Sanabria Compendio POO Java

Pgina 41

En la vista tambin podemos ver el men principal, que es accesado una vez
ingresado el login y password del usuario.

Ing. Rubn Sanabria Compendio POO Java

Pgina 42

Вам также может понравиться