Compendio Poo

download Compendio Poo

of 43

Transcript of Compendio Poo

  • 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%B3n
  • 7/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%B3n
  • 7/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.