DAW_U1

62

description

DAW_U1

Transcript of DAW_U1

  • UNIVERSIDAD PRIVADA TELESUP

  • UNIVERSIDAD PRIVADA TELESUP

    Introduccin

    a) Presentacin y contextualizacin

    Java es la base para prcticamente todos los tipos de aplicaciones de red,

    adems del estndar global para desarrollar y distribuir aplicaciones mviles y

    embebidas, juegos, contenido basado en web y software de empresa. Con ms de

    9 millones de desarrolladores en todo el mundo, Java le permite desarrollar,

    implementar y utilizar de forma eficaz interesantes aplicaciones y servicios.

    b) Competencia

    Implementar pginas web dinmicas, con accesos a bases de datos, utilizando

    XML, con cualquier tipo de conexin de red entre cualquier sistema.

    c) Capacidades

    1. Conoce los principales fundamentos y funciones de POO en Java.

    2. Reconoce las utilidades adecuadas de la herencia y polimorfismo.

    3. Describe objetivamente las estructuras de datos dinmicos.

    4. Analiza el manejo y uso adecuado de las sesiones.

    d) Actitudes

    Pone en prctica cada uno de los procesos recomendados por Java.

    Incentiva el cumplimiento de las estructuras de los datos dinmicos.

    e) Presentacin de Ideas bsicas y contenido esenciales de la Unidad:

    La Unidad de Aprendizaje 01: Fundamentos de la Tecnologa Java, comprende el

    desarrollo de los siguientes temas:

    TEMA 01: Fundamentos de POO en JAVA

    TEMA 02: Herencia y Polimorfismo

    TEMA 03: Estructuras de Datos Dinmicas

    (JAVA COLLECTION FRAMEWORK).

    TEMA 04: Manejo y Uso de Sesiones

  • UNIVERSIDAD PRIVADA TELESUP

    TEMA 1

    Conocer los principales fundamentos y funciones de POO en Java.

    Competencia:

    Fundamentos de POO en

    JAVA

  • UNIVERSIDAD PRIVADA TELESUP

    Desarrollo de los Temas

    Tema 01: Fundamentos de POO en Java

    CONCEPTOS BASICOS DE LA PROGRAMACION ORIENTADA A OBJETOS:

    Clase

    La clase es una plantilla o patrn a partir de la

    cual se crean muchos otros objetos similares,

    tambin se podra definir a una clase como la

    agrupacin de objetos que poseen

    caractersticas comunes.

    Ejemplos:

    Si Ud. tuviera que dibujar 30 mapas del Per Cmo los podra hacer de un

    modo muy rpido? Tendra que conseguir un molde o plantilla y a partir de ste

    podra crear los 30 mapas de un modo fcil y rpido. En este ejemplo el Molde o

    Patrn sera la Clase y cada uno de los mapas reproducidos vendran ser los

    Objetos instanciados.

    Qu clases puedes distinguir dentro de tu aula? En el aula existe la clase

    Alumnos, cada alumno vendra ser un objeto que se origina de esta clase. Otras

    clases podran ser: Carpetas, tiles, etc.

    Como podemos darnos cuenta, los conceptos de la POO estn en la vida diaria, y son

    estos conceptos los que se aplican al momento de programar aplicaciones

    informticas.

    Propiedades de la clase

    Las propiedades o atributos son las caractersticas

    descriptivas de una clase. Cuando definimos una

    propiedad especificamos su nombre y su tipo de dato.

  • UNIVERSIDAD PRIVADA TELESUP

    Ejemplos:

    Propiedades de la clase Alumnos

    Apellidos (Tipo de dato String)

    Nombres (Tipo de dato String)

    Edad (Tipo de dato int)

    Talla (Tipo de dato double)

    Mtodos en las clases

    Son las funcionalidades, acciones o habilidades de la clase. Los mtodos son

    funciones que estn asociadas a un objeto. Los mtodos responden a la pregunta:

    Qu es lo que es capaz de hacer la clase?

    Los nombres de los mtodos generalmente estn asociados a una accin o verbos. Al

    final del nombre de los mtodos siempre se utilizarn parntesis dentro de los cuales

    muchas veces es necesario enviar algunos datos, para que puedan realizarse los

    procesos.

    Ejemplos:

    La clase Alumnos contiene los siguientes mtodos:

    Estudiar ()

    Hablar ()

    DecirSuEdad( )

    La clase plumones contiene los siguientes mtodos:

    pintar()

    escribir()

    La clase calculadora contiene los siguientes mtodos:

    Sumar(4,5)

    Restar(3,2)

    Multiplicar(4,3)

    Multiplicar(4,2)

  • UNIVERSIDAD PRIVADA TELESUP

    Nota:

    - Algunos mtodos reciben entre los parntesis: datos, los cuales sirven al mtodo

    para realizar su tarea. Estos datos son conocidos como argumentos del mtodo.

    - Algunos mtodos retornan un dato como resultado de la accin, por ejemplo el

    mtodo sumar(4,5) de la clase Calculadora, luego de realizar su accin devolver

    un dato de respuesta el cual es el resultado de la suma: 9.

    Objeto instanciado

    Los objetos instanciados son objetos creados a partir de

    una clase. Los objetos instanciados son copias de una

    clase. Esta accin de crear un objeto a partir de una clase

    se llama instanciar. Todo objeto instanciado hereda

    automticamente las propiedades y mtodos de su clase base.

    Estados en objetos

    Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo, cuando

    tenemos una Fraccin, la propiedad numerador tomar un valor en concreto, como por

    ejemplo 1 y la propiedad denominador puede tomar el valor de 3. El valor concreto

    de una propiedad de un objeto se llama estado.

    Para acceder a una propiedad o mtodo, debemos especificar el objeto instanciado,

    luego colocaremos un punto y posteriormente el nombre de la propiedad o mtodo que

    se ha heredado de su clase base. Ejemplo:

    obj.apellidos=Torres;

    obj.nombres=Edwin;

    Ejemplos prcticos

    A continuacin, mostraremos algunos ejemplos de clases con sus respectivas

    propiedades y mtodos.

  • UNIVERSIDAD PRIVADA TELESUP

    Clase reloj

    Propiedades: Marca, Modelo, Precio, Tipo

    Mtodos: mostrarlaHora(), mostrarlaFecha(), fijarAlarma(),

    iniciarCronometro()

    Clase triangulo

    Propiedades: Color, TipodeBorde, TipodeTriangulo

    Mtodos: calcularArea(), calcularSemiPermetro()

    Clase BoletadeNota

    Propiedades: NroBoleta, FechadeEmision, Apellidos, Nombres

    Mtodos: calcularPromedioporAsignatura(), calcularPromedioPonderado().

    Con el siguiente grfico, puedes tener un resumen de lo tratado en la presente unidad:

  • UNIVERSIDAD PRIVADA TELESUP

    Programacin orientada a objetos en java

    Creacin de una clase en Java:

    Click Derecho sobre el paquete: New / Java Class

    public class Calculadora {

    public static void main(String args[])

    {

    }

    } //Fin de la clase

    Atributos o propiedades de la clase

    Se debern crear a nivel de la clase (debajo de public class) y cada una corresponder

    a un tipo de dato.

    Ejemplo: La clase con sus propiedades

    public class Calculadora {

    // DEFINICION DE PROPIEDADES

    public String marca;

    public double precio;

    public String modelo;

    } //Fin de la clase

  • UNIVERSIDAD PRIVADA TELESUP

    Mtodos de la clase

    Se debern crear dentro de la clase, cada mtodo devuelve un tipo de dato como

    resultado final (el cual puede ser int, double, String, boolean, etc), de no ser as el tipo

    de dato devuelto es void. Los mtodos usan parntesis para recibir algunos datos

    (argumentos) desde el exterior.

    Ejemplo:

    public double sumar(double a, double b)

    { double r;

    r=a+b;

    return r;

    }

    Ejemplo: La clase con sus Propiedades y mtodos:

    public class Calculadora {

    // DEFINICION DE PROPIEDADES

    public String marca;

    public double precio; public String modelo;

    public double sumar(double a, double b) { double r;

    r=a+b; return r; //Retorna el resultado }

    public double restar(double a, double b)

    { double r; r=a-b; return r;

    }

    Argumentos de Entrada Dato que devuelve

    Nombre del mtodo

  • UNIVERSIDAD PRIVADA TELESUP

    public double multiplicar(double a, double b) { double r;

    r=a*b; return r; }

    public double dividir(double a, double b) {double r;

    if(b!=0) { r=a/b; }

    else {System.out.println("Resultado no determinado en N"); }

    return r; }

    public double dimetuprecio() { return precio; }

    } //Fin de la clase

    Mtodos constructores

    Un mtodo constructor es un mtodo especial dentro de la clase, que lleva el nombre

    de la misma clase. Pueden existir uno o varios mtodos constructores. Su funcin es

    de permitir el instanciamiento de objetos y al mismo tiempo introducir estados (datos) a

    todas o a algunas las propiedades del objeto instanciado.

    Ejemplo: La misma clase anterior con 3 Mtodos Constructores

    Nota: Si una clase posee varios mtodos constructores, significa que tiene varias

    formas de instanciar un objeto.

    public class Calculadora {

    // DEFINICION DE PROPIEDADES

    public String marca;

    public double precio;

    public String modelo;

    public double sumar(double a, double b) { double r;

    r=a+b; return r; //Retorna el resultado }

  • UNIVERSIDAD PRIVADA TELESUP

    public double restar(double a, double b) { double r;

    r=a-b; return r; }

    public double multiplicar(double a, double b) { double r; r=a*b;

    return r; }

    public double dividir(double a, double b) { double r;

    if(b!=0) { r=a/b; }

    else { System.out.println("Resultado no determinado en N"); }

    return r; }

    public double dimetuprecio() { return precio; }

    // EL METODO CONSTRUCTOR 1 // Permite el instanciamiento con el ingreso de los estados solo a 2 de

    // las propiedades del objeto instanciado public Calculadora(String ma, double p) { marca=ma;

    precio=p; }

    // EL METODO CONSTRUCTOR 2 - Permite el instanciamiento con el ingreso de los // estados solo a 3 de las propiedades del objeto

    // instanciado public Calculadora(String ma, double p, String mo) {

    marca=ma; precio=p; modelo=mo;

    }

    // EL METODO CONSTRUCTOR 3 - Permite solo el instanciamiento

    public Calculadora() {

    }

    } //Fin de la clase

  • UNIVERSIDAD PRIVADA TELESUP

    El mtodo esttico main

    Este mtodo es el Mtodo principal de la clase, es aquel que es invocado cuando

    ejecutamos la clase, si una clase no cuenta con el mtodo main, es imposible ejecutar

    la clase.

    Instanciamiento de la clase

    Tal como vimos durante la semana anterior, instanciar significar crear un objeto a partir

    de una clase base, recordemos tambin que al instanciar un objeto, este hereda

    automticamente propiedades y mtodos de su clase.

    public class Calculadora {

    // DEFINICION DE PROPIEDADES

    public String marca; public double precio;

    public String modelo; public double sumar(double a, double b)

    { double r; r=a+b; return r; //Retorna el resultado

    }

    public double restar(double a, double b) { double r; r=a-b;

    return r; }

    public double multiplicar(double a, double b) { double r; r=a*b;

    return r; }

    public double dividir(double a, double b) {double r=0;

    if(b!=0) { r=a/b; } else

    {System.out.println("Resultado no determinado en N"); }

    return r; }

  • UNIVERSIDAD PRIVADA TELESUP

    public double dimetuprecio()

    { return precio; }

    // EL METODO CONSTRUCTOR 1

    // Permite el ingreso de los estados solo a 2 de

    // las propiedades del objeto instanciado

    public Calculadora(String ma,double p) {

    marca=ma;

    precio=p;

    }

    // EL METODO CONSTRUCTOR 2 - Permite el ingreso de los

    // estados solo a 3 de las propiedades del objeto

    // instanciado

    public Calculadora(String ma,double p, String mo) {

    marca=ma;

    precio=p;

    modelo=mo;

    }

    // EL METODO CONSTRUCTOR 3 - Permite solo el

    // instanciamiento

    public Calculadora() {

    }

    public static void main(String args[])

    {

    //Creacin de diferentes objetos instanciados

    //Se utilizar para cada instanciamiento a un mtodo constructor diferente

    //Puede utilizarse cualquier mtodo constructor para la instancia

    Calculadora c1=new Calculadora("CASIO",25.45); //Usa el constructor 1

    Calculadora c2=new Calculadora("CITIZEN",32.99,"RS23"); //Usa el constructor 2

    Calculadora c3=new Calculadora();

    //Usa el constructor 3

    //Usando la propiedades y mtodos del 1er. obj. instanciado

    System.out.println("La marca de la calculadora 1 es : "+ c1.marca);

    System.out.println("La calculadora 1 suma 12+34 : "+ c1.sumar(12,34));

    System.out.println("La calculadora 1 resta 12-34 : "+ c1.restar(12,34));

    System.out.println("La calculadora 1 multiplica 12*34 : "+ c1.multiplicar(12,34));

    System.out.println("La calculadora 1 divide 12/34 : "+ c1.dividir(12,34));

  • UNIVERSIDAD PRIVADA TELESUP

    //Usando la propiedades y mtodos del 2do. obj. instanciado

    System.out.println("Accedemos al precio de la calculadora 2 : "+ c2.precio);

    System.out.println("La calculadora 2 suma 2+-5 : "+ c2.sumar(2,-5));

    System.out.println("La calculadora 2 nos dice su precio : "+ c2.dimetuprecio());

    //Usando la propiedades y mtodos del 3er. obj. instanciado

    c3.marca="Panasonic";

    c3.precio=29.99;

    c3.modelo="RX123";

    System.out.println("Accedemos al precio de la calculadora 3 : "+ c3.precio);

    System.out.println("La calculadora 3 suma 10+32 : "+ c3.sumar(10,32));

    System.out.println("La calculadora 3 nos dice su precio : "+ c3.dimetuprecio());

    }

    } //Fin de la clase

    Invocacin de una clase desde otros paquetes

    Qu es una Paquete? Es una carpeta de java, dentro del cual podemos almacenar

    muchas clases, los paquetes en Java sirven para organizar nuestras clases, cada IDE

    tiene una forma distinta de crear paquetes.

    Cuando una clase es creada dentro de un paquete, debe llevar en la primera lnea: el

    nombre del paquete.

    package Ejemplo1; //Nombre del paquete

    public class Calculadora {

    .

    .

    .

    }

    Paquete 2

    Paquete 1

    Proyecto Aqu tenemos dos paquetes,

    dentro de cada paquete

    tenemos una clase.

    Aqu va el contenido de la

    clase Calculadora

  • UNIVERSIDAD PRIVADA TELESUP

    Clase Anexo, creada en otro paquete

    package Ejemplo2; //Nombre del paquete donde

    se encuentra la clase

    import Ejemplo1.Calculadora; //Debe importarse la clase

    que est en otro paquete para que sea reconocida

    public class Anexo {

    public static void main(String args[])

    {

    //Creacin de los objetos instanciados

    Calculadora c5=new Calculadora("SANSUNG",25.45); //Usa el constructor 1

    System.out.println("Multiplicando en la Calculadora 5: "+ c5.multiplicar(4,9));

    }

    }

    Creacin de variables y mtodos estticos

    Variables Estticas: Son aquellas variables que se declaran a nivel de la clase, se

    diferencian de las propiedades, porque para acceder a ellas no se requiere de una

    instancia, se puede acceder a estas variables directamente a travs del nombre de la

    clase. Las variables estticas conservan un mismo valor para toda la clase y no

    cuentan con estados (datos) diferentes en cada objeto instanciado.

    Ejemplo del uso de variables estticas en la Clase

    Calculadora: En este ejemplo se estn creando dos

    variables estticas: total: Variable utilizada para

    acumular el precio de cada uno de los objetos

    instanciados

    cuenta : Variable utilizada para contar la cantidad de

    objetos instanciados

    Se usan las variables estticas en cada una de los mtodos constructores, para que

    de esta forma se acumule o cuente, cada vez que se produce una instancia.

    package Ejemplo1; //Nombre del paquete

    public class Calculadora {

  • UNIVERSIDAD PRIVADA TELESUP

    // DEFINICION DE PROPIEDADES

    public String marca;

    public double precio;

    public String modelo;

    //DECLARACION DE VARIABLES ESTATICAS : mbito en toda la clase

    // comparten el mismo valor para todos los obj. Instanciados

    //son como si fueran variables globales

    public static double total;

    public static double cuenta;

    public double sumar(double a, double b)

    { double r;

    r=a+b;

    return r; //Retorna el resultado

    }

    public double restar(double a, double b)

    { double r;

    r=a-b;

    return r;

    }

    public double multiplicar(double a, double b)

    { double r;

    r=a*b;

    return r;

    }

    public double dividir(double a, double b)

    {double r=0;

    if(b!=0)

    { r=a/b; }

    else

    {System.out.println("Resultado no determinado en N");

    }

    return r;

    }

    public double dimetuprecio()

    { return precio; }

  • UNIVERSIDAD PRIVADA TELESUP

    // EL METODO CONSTRUCTOR 1

    // Permite el ingreso de los estados solo a 2 de

    // las propiedades del objeto instanciado

    //Este mtodo ocurrir al mtodo de la instancia

    public Calculadora(String ma,double p) {

    marca=ma;

    precio=p;

    total+=precio; // Es un acumulador, (es variable esttica, su valor se mantiene en toda la clase)

    cuenta++; // Es un contador, (es variable esttica, su valor se mantiene en toda la clase)

    }

    // EL METODO CONSTRUCTOR 2 - Permite el ingreso de

    los

    // estados solo a 3 de las propiedades del objeto

    // instanciado

    //Este mtodo ocurrir al mtodo de la instancia

    public Calculadora(String ma,double p, String mo) {

    marca=ma;

    precio=p;

    modelo=mo;

    total+=precio; // Es un acumulador, (es variable esttica, su valor se mantiene en toda la clase)

    cuenta++; // Es un contador, (es variable esttica, su valor se mantiene en toda la clase)

    }

    // EL METODO CONSTRUCTOR 3 - Permite solo el

    // instanciamiento

    //Este mtodo ocurrir al mtodo de la instancia

    public Calculadora() {

    total+=precio; // Es un acumulador, (es variable esttica, su valor se mantiene en toda la clase)

    cuenta++; // Es un contador, (es variable esttica, su valor se mantiene en toda la clase)

    }

    public static void main(String args[])

    {

  • UNIVERSIDAD PRIVADA TELESUP

    //Creacin de los objetos instanciados

    //En cada instancia est invocndose a los mtodos constructores

    Calculadora c1=new Calculadora("CASIO",25.45); //Usa el constructor 1

    Calculadora c2=new Calculadora("CITIZEN",32.99,"RS23"); //Usa el constructor 2

    Calculadora c3=new Calculadora(); //Usa el constructor 3

    //Mostramos el valor guardado en cada una de las variables estticas

    System.out.println("Totall de los 3 precios de las calculadoras : "+ Calculadora.total);

    System.out.println("Cantidad de calculadoras : "+ Calculadora.cuenta);

    }

    } //Fin de la clase

    Mtodos Estticos: Son aquellos mtodos que pertenecen directamente a la clase y

    que para acceder a ellos no se requiere de una instancia, se puede acceder a estos

    mtodos directamente a travs del nombre de la clase.

    Ejemplo del uso de mtodos estticos en la Clase Calculadora:

    En este ejemplo se estn creando dos mtodos estticos:

    totalizar() : Mtodo utilizado para devolver la cantidad acumulada de todos los precios

    promediar() : Mtodo utilizado para promediar todos los precios de los objetos

    instanciados

    package Ejemplo1; //Nombre del paquete

    public class Calculadora {

    // DEFINICION DE PROPIEDADES

    public String marca;

    public double precio;

    public String modelo;

    //DECLARACION DE VARIABLES ESTATICAS : mbito en toda la clase

    // comparten el mismo valor para todos los obj. instanciados

    public static double total;

    public static double cuenta;

  • UNIVERSIDAD PRIVADA TELESUP

    //CREACIN DEL METODO ESTATICO

    public static double totalizar() {

    return total;

    }

    //CREACIN DEL METODO ESTATICO

    public static double promediar() {

    double p;

    p=total/cuenta;

    return p;

    }

    public double sumar(double a, double b)

    { double r;

    r=a+b;

    return r; //Retorna el resultado

    }

    public double restar(double a, double b)

    { double r;

    r=a-b;

    return r;

    }

    public double multiplicar(double a, double b)

    { double r;

    r=a*b;

    return r;

    }

  • UNIVERSIDAD PRIVADA TELESUP

    public double dividir(double a, double b)

    {double r=0;

    if(b!=0)

    { r=a/b; }

    else

    {System.out.println("Resultado no determinado en N");

    }

    return r;

    }

    public double dimetuprecio()

    { return precio; }

    // EL METODO CONSTRUCTOR 1

    // Permite el ingreso de los estados solo a 2 de

    // las propiedades del objeto instanciado

    public Calculadora(String ma,double p) {

    marca=ma;

    precio=p;

    total+=precio; // Es un acumulador, es igual que decir total=precio+tota l

    cuenta++; / / Es un contador, es igual que decir cuenta=cuenta+1

    }

    // EL METODO CONSTRUCTOR 2 - Permite el ingreso de los

    // estados solo a 3 de las propiedades del objeto

    // instanciado

    public Calculadora(String ma,double p, String mo) {

    marca=ma;

    precio=p;

    modelo=mo;

    total+=precio; // Es un acumulador, es igual que decir total=precio+tota l

    cuenta++; / / Es un contador, es igual que decir cuenta=cuenta+1

    }

  • UNIVERSIDAD PRIVADA TELESUP

    // EL METODO CONSTRUCTOR 3 - Permite solo el

    // instanciamiento

    public Calculadora() {

    total+=precio; // Es un acumulador, es igual que decir total=precio+total

    cuenta++; // Es un contador, es igual que decir cuenta=cuenta+1

    }

    public static void main(String args[])

    {

    //Creacin de los objetos instanciados

    Calculadora c1=new Calculadora("CASIO",25.45); //Usa el constructor 1

    Calculadora c2=new Calculadora("CITIZEN",32.99,"RS23"); //Usa el constructor 2

    Calculadora c3=new Calculadora(); //Usa el constructor 3

    //INVOCACION DE LOS METODOS ESTATICOS

    System.out.println("El total del costo de las tres calculadoras es : " + Calculadora.totalizar());

    System.out.println("El promedio del costo de las tres calculadoras es : " + Calculadora.promediar());

    }

    } //Fin de la clase

    Uso de constantes:

    Las constantes son tambin variables estticas que al ser declaradas reciben un valor,

    y luego de esto, no permiten que dicho valor sea modificado en tiempo de ejecucin.

    Ejemplo:

    public static final double IGV=0.19;

    public static final String RAZONSOCIAL=TecniSystem SRL;

  • UNIVERSIDAD PRIVADA TELESUP

    Aplicando la POO en JAVA

    A continuacin explicaremos a travs de ejemplos 5 maneras diferentes de

    plantear un mismo caso en la programacin orientada a objetos.

    a. Primera Forma: Usando mtodos con argumentos de

    entrada

    b. Segunda Forma: Usando mtodos sin

    argumentos de entrada

    c. Tercera Forma: Usando mtodos sin retorno

    d. Cuarta Forma: Usando un solo mtodo en la clase.

    e. Quinta Forma: Usando mtodos estticos

    f. Sexta Forma: Usando mtodos y variables estticas

    Desarrollo de una caso prctico

    Enunciado: Calcular el promedio de un alumno y determinar su situacin acadmica.

    1RA FORMA: Usando mtodos con argumentos de entrada.

    Lgica de Negocios Paquete model

    package model;

    public class Alumno {

    //Propiedades de la clase

    public String nombres;

    public String apellidos;

    public String direccion;

    //Metodos de la clase : Usamos argumentos de entrada para el proceso

    public double calcularPromedio(double pc1,

    double ep, double pc2, double ptp, double ef){

    return (pc1+2*ep+2*pc2+2*ptp+3*ef)/10;

    }

    public String determinarSituacionAcad(double p){

    String sa="";

    if (p>=10.5) {

    sa="Aprobado";

    } else {

    sa="Desaprobado";

    }

    return sa;

    }

    //Mtodo constructor

    public Alumno(){

    }

    }

  • UNIVERSIDAD PRIVADA TELESUP

    Lgica de Presentacin Carpeta View

    Demo 1

    Demo 1

    2da forma: Usando mtodos sin argumentos de entrada

    Lgica de Negocios Paquete model

    package model;

    public class Alumno {

    //Propiedades de la clase

    public String nombres;

    public String apellidos;

    public String direccion;

    //Propiedades de entrada de datos

    public double pc1,ep,pc2,ptp,ef;

    public double p;

    //Mtodos de la clase, ya no usamos argumentos de entrada, en su lugar

  • UNIVERSIDAD PRIVADA TELESUP

    //hemos creado propiedades de entrada

    public double calcularPromedio(){ return (pc1+2*ep+2*pc2+2*ptp+3*ef)/10; }

    public String determinarSituacionAcad(){

    String sa=""; if (p>=10.5) { sa="Aprobado";

    } else { sa="Desaprobado";

    } return sa; }

    //Metodo constructor public Alumno(){

    }

    }

    Lgica de Presentacin Carpeta View

    Demo 2 Demo2

  • UNIVERSIDAD PRIVADA TELESUP

    3ra forma: Usando mtodos sin valor de retorno

    Lgica de Negocios Paquete model

    package model; public class Alumno { //Propiedades de la clase public String nombres; public String apellidos; public String direccion; //Propiedades de entrada de datos public double pc1,ep,pc2,ptp,ef; //propiedad de entrada y salida public double p; //Propiedades de salida public String sa;

    //Mtodos sin retorno de respta La respta la guardamos en una propiedad

    public void calcularPromedio(){ this.p=(pc1+2*ep+2*pc2+2*ptp+3*ef)/10; } public void determinarSituacionAcad(){ if (this.p>=10.5) { this.sa="Aprobado"; } else { this.sa="Desaprobado"; } } //Metodo constructor public Alumno(){ } }

    Lgica de Presentacin Carpeta View

    Demo 3

    Demo3

  • UNIVERSIDAD PRIVADA TELESUP

    //Entrada de datos (Directo a las propiedades)

    obj1.pc1=5;

    obj1.ep=12;

    obj1.pc2=14;

    obj1.ptp=8;

    obj1.ef=7;

    //Invocacin a los mtodos

    obj1.calcularPromedio();//La rpta se guarda internamente en una propiedad

    obj1.determinarSituacionAcad();

    //Mostrar resultados

    out.println("Promedio final "+obj1.p+""); //Mostramos la propiedad

    out.println("Situacion academica "+obj1.sa);

    %>

    4ta forma: Usando un solo mtodo en la clase. Fusionamos todos los mtodos. Las

    diversas respuestas se guardan en propiedades.

    Lgica de Negocios Paquete model

    package model; public class Alumno {

    //Propiedades de la clase public String nombres; public String apellidos; public String direccion;

    //Propiedades de entrada de datos

    public double pc1,ep,pc2,ptp,ef; //propiedad de entrada y salida

    public double p; //Propiedades de salida

    public String sa;

    //Metodos de la clase public void procesar(){

    this.p=(pc1+2*ep+2*pc2+2*ptp+3*ef)/10;

    if (this.p>=10.5) { this.sa="Aprobado";

    } else { this.sa="Desaprobado";

    } }

    //Metodo constructor public Alumno(){

    } }

  • UNIVERSIDAD PRIVADA TELESUP

    Lgica de Presentacin Carpeta View

    Demo 3

    Demo3

    5ta forma: usando mtodos estticos.

    Mtodo Esttico: Es un mtodo que se declara a nivel de la clase, no requiere de una

    instancia para ser invocado, los mtodos estticos pueden ser invocados a partir del

    nombre de la clase.

    .

    Lgica de Negocios Paquete model

    package model;

    public class Alumno {

    //Propiedades de la clase

    public String nombres;

    public String apellidos;

    public String direccion;

  • UNIVERSIDAD PRIVADA TELESUP

    //Metodos de la clase

    public static double calcularPromedio(double pc1,

    double ep,double pc2,

    double ptp,double ef){

    return (pc1+2*ep+2*pc2+2*ptp+3*ef)/10;

    }

    public static String determinarSituacionAcad(double p){

    String sa="";

    if (p>=10.5) {

    sa="Aprobado";

    } else {

    sa="Desaprobado";

    }

    return sa;

    }

    //Metodo constructor

    public Alumno(){

    }

    }

    Lgica de Presentacin Carpeta View

    Demo 5

    Demo5

  • UNIVERSIDAD PRIVADA TELESUP

    double pc2=14;

    double ptp=8;

    double ef=7;

    //Invocacin a los mtodos Desde el nombre de la clase

    //No se requiere instancia

    double p=Alumno.calcularPromedio(pc1,ep,pc2,ptp,ef);

    String sa=Alumno.determinarSituacionAcad(p);

    //Mostrar resultados

    out.println("Promedio final "+p+"");

    out.println("Situacion academica "+sa);

    %>

    6ta forma: usando mtodos y variables estticos.

    Variable Esttica: Este tipo de variables son variables declaradas a nivel de una

    clase, el valor de esta se mantiene a nivel de la clase, a diferencia de una propiedad

    cuyo valor est asociado a un objeto instanciado, en cada objeto instanciado, la misma

    propiedad tiene valores diferentes.

    Lgica de Negocios Paquete model

    package model;

    public class Alumno {

    //Propiedades de la clase

    public String nombres;

    public String apellidos;

    public String direccion;

    //variables estaticas de entrada

    public static double pc1,ep,pc2,ptp,ef;

    public static double p;

    //Metodos de la clase

    public static double calcularPromedio(){

    return (pc1+2*ep+2*pc2+2*ptp+3*ef)/10;

    }

    public static String determinarSituacionAcad(){

  • UNIVERSIDAD PRIVADA TELESUP

    String sa="";

    if (p>=10.5) {

    sa="Aprobado";

    } else {

    sa="Desaprobado";

    }

    return sa;

    }

    //Metodo constructor

    public Alumno(){

    }

    }

    Lgica de Presentacin Carpeta View

    Demo 6

    Demo6

  • UNIVERSIDAD PRIVADA TELESUP

    TEMA 2

    Reconocer las utilidades adecuadas de la herencia y polimorfismo.

    Competencia:

    Herencia y

    Polimorfismo

  • UNIVERSIDAD PRIVADA TELESUP

    Tema 02: Herencia y Polimorfismo

    HERENCIA DE CLASES

    La herencia permite que se pueda definir nuevas clases basadas en clases existentes,

    lo cual facilita re-utilizar cdigo previamente

    desarrollado. Si una clase deriva de otra (extends),

    sta hereda todas sus propiedades y mtodos. La

    clase derivada puede aadir nuevas variables y

    mtodos y/o redefinir las variables y mtodos

    heredados.

    Java permite mltiples niveles de herencia, No obstante, no permite que una clase

    derive de varias (no es posible la herencia mltiple). Se pueden crear tantas clases

    derivadas de una misma clase como se quiera. Resumen: Creamos una nueva clase a

    partir de la Clase Padre. La Clase Hijo hereda mtodos y Atributos de la Clase Padre.

    Adicionalmente Podemos aadir otros mtodos o atributos a la clase hijo.

    PPaaddrree

    La Clase Hijo Extiende de la

    Clase Padre

    HHiijjoo

  • UNIVERSIDAD PRIVADA TELESUP

    Para indicar que una clase deriva de otra se utiliza

    la palabra extends, como por ejemplo:

    public class Alumno extends Persona

    { ... }

    En el ejemplo anterior, se est creando la clase Alumno la

    cual extiende (hereda) de la clase Persona. Por tanto la

    clase Alumno habr heredado las propiedades y mtodos de

    la clase Persona.

    Todas las clases de Java creadas por el programador tienen una super-clase.

    Cuando no se indica explcitamente una super-clase con la palabra extends, la clase

    deriva de java.lang.Object, que es la clase raz de toda la jerarqua de clases de

    Java. Como consecuencia, todas las clases tienen algunos mtodos que han

    heredado de Object.

    Ventajas y precaucaciones de su uso La principal ventaja del uso de herencia de clases es la reutilizacin de los mtodos de

    clases base, lo cual impide que se repita el mismo cdigo muchas veces dentro del

    desarrollo de una aplicacin, y por otro lado favorece el mantenimiento de los

    programas, porque cualquier cambio que se realice en una clase base inmediatamente

    replica para todas las subclases que extienden de esta, lo cual ahorra el tiempo a la

    labor de la programacin.

    Al disear nuestras clases es fundamental

    que primero se disee adecuadamente un

    modelo inicial, utilizando metodologas

    basadas en el anlisis y diseo de sistemas

    orientado a objetos, de no ser as nuestro

    diseo de clases con sus respectivas

    herencias podra ser inconsistente e

    inarticulado.

  • UNIVERSIDAD PRIVADA TELESUP

    Ejercicio Prctico:

    Crear un conjunto de clases que represente los procesos en el sistema de personal,

    luego instancie la clase Alumno presencial e invoque los mtodos y muestre las

    respuestas conseguidas

    El siguiente diagrama ilustra el modelo de clases que desarrollaremos en la lgica de

    negocios.

    Lgica de negocios

    mbitos de Alcance

    Es el mecanismo que permite definir el tipo de nivel de acceso a la informacin de los

    objetos, (clases, mtodos y propiedades).

    En Java los niveles de encapsulamiento estn dados de la siguiente forma:

    public, private, protected y package. De esta forma se puede controlar el acceso

    hacia las clases, mtodos y propiedades y evitar un uso inadecuado.

  • UNIVERSIDAD PRIVADA TELESUP

    Veamos cmo funcionan estos diversos

    niveles de acceso en el siguiente caso

    prctico:

    1. Creamos dos paquetes: Paquete m y paquete n

    2. Dentro del paquete m, tenemos dos clases; La

    clase A y la Clase B y

    3. En el paquete n, tenemos tambin dos clases: La

    clase C (es una clase que extiende de la clase B), y la clase D.

    Ahora, ubiqumonos en la clase B, y veamos en el siguiente cuadro, los

    diferentes tipos de acceso de esta clase hacia las dems clases del

    mismo paquete y de los dems.

    Concepto y niveles de acceso en java:

  • UNIVERSIDAD PRIVADA TELESUP

    Explicacin:

    Si el nivel de encapsulamiento para la clase B es

    public, esta clase ser accesible a todas las

    clases de su propio paquete y de los dems.

    Si el nivel de encapsulamiento para la clase B es

    private, esta clase no ser accesible para ninguna

    otra clase, ni del mismo paquete, ni de otros. Si el

    nivel de encapsulamiento para la clase B es

    protected, esta clase ser accesible a todas las clases de su propio paquete y

    solo a las clases heredadas de otros paquetes.

    Si el nivel de encapsulamiento para la clase B es package o default, esta clase

    ser accesible a todas las clases de su propio paquete nicamente.

    POLIMORFISMO:

    Las interfaces

    En Java una interfaz es un prototipo de clase que define la funcionalidad de un objeto

    pero no lo implementa.

    Caractersticas de una interfaz:

    Los mtodos de una interfaz deben ser

    abstractos.

    No representa a un objeto sino a un Grupo de

    Objetos. Por lo tanto no usan constructores, ni

    mtodos estticos, ni atributos de Objeto.

    (Excepto variables constantes de tipo FINAL)

    En este nivel no podemos garantizar como lo

    hace, pero si sabemos qu hace.

    Interfaz en Java

    Se debe reemplazar la palabra class por interface.

  • UNIVERSIDAD PRIVADA TELESUP

    Ejemplo: A continuacin estamos creando una interfaz de nombre Reproducible.

    public interface Reproducible

    {

    // Aqu deben indicarse los mtodos abstractos

    // con los que se trabajarn

    }

    Mtodos abstractos

    Son utilizados dentro de una interfaz, solo muestran la funcionalidad del objeto, pero

    no incluyen la lgica del procedimiento (no hacen nada por ellos mismos).

    Ejemplo:

    public void play();

    Herencia en interfaces

    Para darle un uso prctico a la interfaz: Debemos crear una clase que herede de

    dicha interfaz, en la cual se detallar la funcionalidad de los mtodos declarados en

    la interfaz.

    Cmo realizar dicha herencia?

    public class MP3 implements Reproducible

    {

    // Aqu debe implementarse el mtodo play, al cual

    // se hizo mencin de manera abstracta en la

    interfaz

    }

    Este es un mtodo abstracto, no usa llaves

    (No tiene implementacin)

    No tienen definido el Cmo, pero si el Qu

  • UNIVERSIDAD PRIVADA TELESUP

    Ventaja del uso de las interfaces

    Se utiliza las interfaces cuando en el desarrollo de una aplicacin, an no

    sabemos la lgica de los mtodos, pero si conocemos cuales sern las

    funcionalidades importantes.

    Nos permite ocultar el cdigo fuente de los mtodos de nuestras clases, puesto

    que solo al cliente tendramos que suministrarle la interfaz y su ejecutable,

    mientras que la lgica de nuestros mtodos lo almacenaramos en un servidor de

    acceso restringido.

    Una clase puede implementar ms de

    una interface, representando una forma

    alternativa de la herencia mltiple. A su

    vez, una interface puede derivar de otra

    o incluso de varias interfaces, en cuyo

    caso incorpora todos los mtodos de las

    interfaces de las que deriva.

  • UNIVERSIDAD PRIVADA TELESUP

    TEMA 3

    Describir objetivamente las estructuras de datos dinmicos.

    Competencia:

    Estructuras de Datos

    Dinmicas

  • UNIVERSIDAD PRIVADA TELESUP

    Tema 03: Estructuras de Datos Dinmicas (Java Collection Framework).

    DEFINICIN Y CARACTERSTICAS

    Resumiendo, son aquellas cuyo tamao

    (longitud, nmero de elementos...) vara en

    tiempo de ejecucin. Las ms famosas son:

    Listas simplemente enlazadas (con y sin

    cabecera), Listas doblemente enlazadas (con

    y sin cabecera), Pilas, Colas, rboles y

    Grafos.

    Su tamao y forma es variable (o puede serlo) a lo largo de un programa, por lo que se

    crean y destruyen en tiempo de ejecucin. Esto permite dimensionar la estructura de

    datos de una forma precisa: se va asignando memoria en tiempo de ejecucin segn

    se va necesitando.

    En java tenemos muchas clases que manejan diferentes estructuras dinmicas,

    entre las que podemos mencionar:

    Vector

    Enumeration

    HashTable

    Stack

    Set

    List

    ArrayList

    Dictonary

    Collection

    SortedSet

    LinkedList

  • UNIVERSIDAD PRIVADA TELESUP

    HashTables

    Es una estructura de datos dinmica que almacena un

    grupo de objetos, cada elemento almacenado en el

    HashTable debe contar un key (Cdigo nico que

    identifique de manera singular a dicho elemento dentro

    de la estructura). Esta estructura es de tipo LIFO (Last

    Input First Output), es decir el ltimo en entrar es el

    primero en salir, al momento de almacenarse dentro de

    la estructura.

    Crear un HashTable:

    HashTable lista1=new HashTable(); //Crea una HashTable con longitud 0

    HashTable lista2=new HashTable(10); //Crea un HashTable con longitud inicial 10

    HashTable lista3=new HashTable(100);//Crea un Hashtable con longitud inicial 100

    Mtodos de la clase HashTable:

  • UNIVERSIDAD PRIVADA TELESUP

    Nota: Para trabajar con la estructura Hashtable es necesario importar lo siguiente:

    Caso Practico 1

    Realizar un programa demostrativo en consola en muestre como crear y

    visualizar un Hashtable.

    package dinamicas2;

    import java.util.*;

    public class Demo {

    public static void main(String[] args) {

    //Crear un hashTable

    Hashtable lista=new Hashtable();

    //Almacenar datos dentro del Hashtable, se debe colocar un key (llave)

    lista.put(1,20.0);

    lista.put(2,12.5);

    lista.put(3,10.0);

    lista.put(4,14.3);

    //recorrer los elementos

    Enumeration e=lista.elements();

    Double dato=null;

    while(e.hasMoreElements()){

    dato=(Double) e.nextElement();

    System.out.println(dato.doubleValue());

    }

    //Crear un hashTable con datos de tipo Character

    Hashtable lista2=new Hashtable();

    lista2.put(1,'c');

    lista2.put(2,'a');

    lista2.put(3,'s');

    lista2.put(4,'a');

    //recorrer los elementos

    Enumeration e2=lista2.elements();

    Character dato2=null;

    while(e2.hasMoreElements()){

    dato2=(Character) e2.nextElement();

    System.out.println(dato2.charValue());

    }

  • UNIVERSIDAD PRIVADA TELESUP

    //Crear un hashTable con distintos tipos de datos

    Integer sueldo=new Integer(600);

    String apellidos="Alva";

    Double descuento=new Double(58.25);

    Hashtable lista3=new Hashtable();

    lista3.put("1",apellidos); lista3.put("2",sueldo);

    lista3.put("3",descuento);

    Enumeration e3=lista3.element s();

    Object obj=null;

    while(e3.hasMoreElements()){

    obj=e3.nextElement();

    System.out.println(obj.toString());

    }

    }

    }

    Caso Prctico 2: Realizar una aplicacin visual que nos permita realizar

    operaciones de edicin con los elementos de un Hashtable.

  • UNIVERSIDAD PRIVADA TELESUP

    Declaracin global a nivel de la clase

    public class frmIngreso extends javax.swing.JFrame {

    Hashtable lista=new Hashtable();

    int c=0;

    Codificacin de la caja de texto txtape (evento actionperformanced)

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

    // TODO add your handling code here:

    c++;

    String ape=txtape.getText();

    txtape.setText(ape);

    lista.put(String.valueOf(c),ape);

    txtape.setText("");

    txtape.requestFocus();

    }

    Codificacin del botn Mostrar

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

    Enumeration e = lista.elements();

    Enumeration e2=lista.keys();

    String cad = "";

    String l="";

    while( e2.hasMoreElements() && e.hasMoreElements() ){

    c++;

    cad+=(String)e.nextElement()+ "\t "+(String)e2.nextElement()+"\n";

    txtlista1.setText(cad);

    }

    }

    Codificacin del botn Eliminar

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

    // TODO add your handling code here:

    String cod;

    cod=JOptionPane.showInputDialog("Ingrese codigo","0");

    lista.remove(cod);

    volveragenerar();

    btnmostrarActionPerformed(evt);

    }

  • UNIVERSIDAD PRIVADA TELESUP

    Codificacin del botn Modificar

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

    String cod;

    cod=JOptionPane.showInputDialog("Ingrese codigo","0");

    String dato=JOptionPane.showInputDialog("Ingrese nuevo dato");

    lista.put(cod,dato);

    btnmostrarActionPerformed(evt);

    }

    Codificacin del botn Buscar

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

    // TODO add your handling code here:

    String cod;

    cod=JOptionPane.showInputDialog("Ingrese codigo ");

    if(lista.containsKey(cod)){

    JOptionPane.showMessageDialog(null, "El dato fue encontrado");

    }

    else{

    JOptionPane.showMessageDialog(null, "El dato no fue encontrado");

    }

    }

    La Clase Vector

    La clase Vector permite crear un arreglo dinmico que almacena objetos.

    En un objeto de tipo vector se almacenan objetos nicamente (es decir, variables de tipos

    de datos no primitivos o de clases bases).

    Para almacenar valores de tipo de datos primitivos, se debe utilizar un arreglo esttico o

    hacer casting de los valores a su correspondiente representacin de objetos.

    Esta clase tiene muchos mtodos implementados que facilitan el trabajo con arreglos:

    bsquedas, eliminacin, insercin, expansin entre otras.

    Un objeto de tipo vector, se puede redimensionar en tiempo de ejecucin, si las celdas que

    definen se han ocupado.

    Para ello, existe un atributo o propiedad que le indica al compilar, en cuntas posiciones se

    puede redimensionar el vector, cuando ya haya ocupado su capacidad mxima.

  • UNIVERSIDAD PRIVADA TELESUP

    Creacin de un Vector:

    Vector v=new Vector (20,5);

    Crea un vector con un tamao inicial de 20 elementos y

    con la posibilidad de incrementar su tamao de 5 en 5.

    Vector v=new Vector (20);

    Crea un vector con un tamao inicial de 20 elementos y

    con la posibilidad de incrementar su tamao de 20 en 20.

    Vector v=new Vector ();

    Crea un vector con un tamao inicial de 10 elementos y con la posibilidad de incrementar su

    tamao de 10 en 10.

    Mtodos de la clase Vector

    Vector( )

    Constructor: crea un vector inicialmente vaco

    void addElement(Object obj)

    Inserta el objeto especificado al final del vector

    void setElementAt(Object obj, int ndice)

    Inserta el objeto especificado en el vector en la posicin especficada

    Object remove(int ndice)

    Elimina el objeto que se encuentra en la posicin especificada

    boolean removeElement(Object obj)

    Elimina la primera ocurrencia del objeto especificado en el vector

    void removeElementAt(int ndice)

    Elimina el objeto especificado en el ndice del vector

    void clear( )

    Elimina todos los objetos del vector

    boolean contains(Object obj)

    Regresa verdadero si el objeto dado pertenece al vector

    int indexOf(Object obj)

    Retorna el ndice del objeto especificado. Regresa -1 si no fue encontrado el objeto

    Object elementAt(int indce)

    Regresa el objeto del ndice especficado

    boolean isEmpty( )

    Regresa verdadero si el vector no contiene elementos

    int size( )

    Regresa el nmero de elementos en el vector

  • UNIVERSIDAD PRIVADA TELESUP

    Recorrer los elementos de un Vector

    Utilizando el indice de elemento:

    for(int i=0; i

  • UNIVERSIDAD PRIVADA TELESUP

    Codificacin del formulario1

    Declaracin Global a nivel de Formulario public class frmData extends javax.swing.JFrame {

    Vector v=new Vector(1);

    Codificacin del botn Grabar private void btngrabarActionPerformed(java.awt.event.ActionEvent evt) {

    Alumnos obj=new Alumnos();

    //Guardar datos en el objeto

    obj.setCodigo(txtcod.getText());

    obj.setApellidos(txtape.getText());

    obj.setAsignatura(txtasi.getText());

    obj.setNota1(Double.parseDouble(txtn1.getText()));

    obj.setNota2(Double.parseDouble(txtn2.getText()));

    obj.setNota3(Double.parseDouble(txtn3.getText()));

    obj.calcularPromedio();

    obj.hallarSitAcad();

    v.addElement(obj); //Insertarmos al obj dentro del vector

    limpiarcajas();

    }

    Codificacin del botn VerReporte private void btnreporteActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:

    frmReporte fr=new frmReporte();

    fr.setData(v);

    fr.show();

    }

  • UNIVERSIDAD PRIVADA TELESUP

    Mtodo limpiarcajas public void limpiarcajas(){ txtcod.setText("");

    txtape.setText(""); txtasi.setText(""); txtn1.setText("");

    txtn2.setText(""); txtn3.setText("");

    txtcod.requestFocus(); }

    Codificacin del formulario2

    Declaracin Global (A nivel de Formulario)

    Vector cabecera=new Vector(1);

    Vector data=new Vector(1);

    Codificacin del combo (Evento ItemStateChanged) private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {

    // TODO add your handling code here:

    //Conseguir el valor seleccionado

    String sa = (String) jComboBox1.getSelectedItem();

    if(sa.equals("Aprobado")){

    mostraraprobados();

    }

    else{

    mostrarDesaprobados();

    }

    }

    Mtodo mostraraprobados void mostraraprobados(){

    Enumeration e = data.elements();

    Vector ndata = new Vector();

    Vector nfila = null;

    while (e.hasMoreElements()) {

    Vector fila = new Vector(1);

    fila = (Vector) e.nextElement();

    nfila = new Vector();

    String pro=fila.elementAt(6).toString();

    double pr=Double.parseDouble(pro);

    if (pr >= 10.5) {

    for (int i = 0; i < fila.size(); i++) {

    nfila.addElement(fila.elementAt(i));

    } //fin del for que recorre fila

    ndata.addElement(nfila);

    } //fin del if

    } //fin del while que recorre a data

    DefaultTableModel dm = new DefaultTableModel(ndata, cabecera);

    jTable1.setModel(dm);

    }

  • UNIVERSIDAD PRIVADA TELESUP

    Mtodo mostrarDesaprobados void mostrarDesaprobados(){

    Enumeration e = data.elements();

    Vector ndata = new Vector();

    Vector nfila = null;

    while (e.hasMoreElements()) {

    Vector fila = new Vector(1);

    fila = (Vector) e.nextElement();

    nfila = new Vector();

    String pro=fila.elementAt(6).toString();

    double pr=Double.parseDouble(pro);

    if (pr < 10.5) {

    for (int i = 0; i < fila.size(); i++) {

    nfila.addElement(fila.elementAt(i));

    } //fin del for que recorre fila

    ndata.addElement(nfila);

    } //fin del if

    } //fin del while que recorre a data

    DefaultTableModel dm = new DefaultTableModel(ndata, cabecera);

    jTable1.setModel(dm);

    }

    Mtodo setData void setData(Vector v){

    cabecera.addElement("Codigo");

    cabecera.addElement("Apellidos");

    cabecera.addElement("Asignatura");

    cabecera.addElement("Nota1");

    cabecera.addElement("Nota2");

    cabecera.addElement("Nota3");

    cabecera.addElement("Promedio");

    cabecera.addElement("Sit Academ");

    //recorrer el vector

    Enumeration e=v.elements();

    Vector fila;

    while(e.hasMoreElements()){

    Alumnos obj=(Alumnos)e.nextElement();

    fila=new Vector(1);

    fila.addElement(obj.getCodigo());

    fila.addElement(obj.getApellidos());

    fila.addElement(obj.getAsignatura());

    fila.addElement(obj.getN1());

    fila.addElement(obj.getN2());

    fila.addElement(obj.getN3());

    fila.addElement(obj.prom);

    fila.addElement(obj.sitacad);

    data.addElement(fila);

    }

    DefaultTableModel dm=new DefaultTableModel(data,cabecera);

    jTable1.setModel(dm);

    }

  • UNIVERSIDAD PRIVADA TELESUP

    La Clase ArrayList

    Las aplicaciones frecuentemente necesitan

    almacenar un grupo de datos en un slo objeto.

    Los arrays sirven bien para este propsito, pero

    algunas veces necesitamos incrementar o reducir

    dinmicamente el nmero de elementos del array,

    o hacer que contenga distintos tipos de datos.

    Esto es comn entre las aplicaciones como las tiendas online. Un cliente aade una

    mercanca a su carro de la compra, y detrs de la escena, los tems son almacenados

    y eliminados automticamente. Para esta clase de grupos de datos crecientes y

    menguantes, podemos usar la reciente clase ArrayList del paquete java.util.

    Creacin de un ArrayList:

    ArrayList al=new ArrayList();

    Crea un array dinmico con un tamao inicial 0, se va

    incrementando o decrementando automticamente.

    ArrayList al=new ArrayList(5);

    Crea un array dinmico con un tamao inicial 5, se va

    incrementando o decrementando automticamente.

    Mtodos de la clase ArrayList

  • UNIVERSIDAD PRIVADA TELESUP

    Recorrer los elementos de un ArrayList

    Utilizando el indice de elemento:

    Iterator i=al.iterator();

    while(i.hasNext())

    {

    System.out.print(i.next()+"\t");

    }

    Caso Prctico:

    Realizar una aplicacin Visual Java que realice las principales operaciones de

    edicin de datos en un ArrayList.

  • UNIVERSIDAD PRIVADA TELESUP

    Codificacin a nivel de Clase (Declaracin Global)

    public class frmArrayList extends javax.swing.JFrame {

    ArrayList lista=new ArrayList();

    Codificacin de la caja de texto txtdato

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

    // TODO add your handling code here:

    String dato;

    dato=txtdato.getText();

    lista.add(dato); //Agrega el dato al ArrayList

    txtdato.setText(""); //Limpiar la caja

    txtdato.requestFocus(); //Enviar el cursor a la caja

    visualizar();

    }

    Codificacin del Mtodo visualizar()

    private void visualizar() {

    int c = 0;

    Iterator i = lista.iterator();

    String cad = "";

    while (i.hasNext()) {

    cad += "[" + c + "]" + " " + i.next() + "\n";

    c++;

    }

    txtlista.setText(cad);

    }

    Codificacin del botn Modificar private void

    btnmodificarActionPerformed(java.awt.event.ActionEvent

    evt) {

    // TODO add your handling code here:

    String pos=JOptionPane.showInputDialog("Indique la

    posicion");

    String dato=JOptionPane.showInputDialog("Indique el

    dato");

    int p=Integer.parseInt(pos);

    lista.set(p,dato);

    visualizar();

    }

  • UNIVERSIDAD PRIVADA TELESUP

    Codificacin del botn Eliminar

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

    // TODO add your handling code here:

    int p=Integer.parseInt(JOptionPane.showInputDialog("Ingrese posicion"));

    lista.remove(p);

    visualizar();

    }

    Codificacin del botn Buscar

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

    // TODO add your handling code here:

    String dato=JOptionPane.showInputDialog("Ingrese dato a buscar");

    if(lista.contains(dato)){

    JOptionPane.showMessageDialog(null, "El dato fue encontrado");

    }

    else {

    JOptionPane.showMessageDialog(null, "El dato no fue encontrado");

    }

    }

    Codificacin del botn Ordenar

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

    // TODO add your handling code here:

    Collections.sort(lista);

    visualizar();

    }

    Codificacin del botn Sortear

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

    // TODO add your handling code here:

    Collections.shuffle(lista);

    visualizar();

    JOptionPane.showMessageDialog(null, "El ganador es: "+lista.get(3));

    }

  • UNIVERSIDAD PRIVADA TELESUP

    TEMA 4

    Analizar el manejo y uso adecuado de las sesiones.

    Competencia:

    Manejo y Uso de Sesiones

  • UNIVERSIDAD PRIVADA TELESUP

    Tema 04: Manejo y Uso de Sesiones

    QU ES UNA SESSION WEB?

    Es una instancia de trabajo del servidor web que corresponde a un usuario o

    cliente que se conecta.

    Cundo se da inicio a una sesin web?

    Cuando el usuario accede al sitio web a

    travs de la URL.

    Cuando finaliza una sesin web?

    Cuando se abandona el sitio web

    Cuando se alcanza un tiempo de inactividad

    que es previamente establecido, en este caso

    la sesin es automticamente eliminada. Si el usuario siguiera navegando se

    creara una nueva sesin.

    Se ha cerrado la sesin o reiniciado el servidor.

  • UNIVERSIDAD PRIVADA TELESUP

    Variable de Session

    Una variable de sesin nos permite almacenar un

    dato y mantenerlo disponible para cualquier pgina

    de nuestra sesin web. Es comparable a una

    variable global que estara disponible para cualquier

    pgina de nuestra aplicacin.

    Cmo crear una variable de Session?

    session.setAttribute("usu",usuario);

    Cmo acceder a los datos de una variable de Session?

    (desde otra pagina o la misma pgina)

    String usuario=;

    usuario=(String)session.getAttribute("usu");

    Manejo de Excepciones

    Durante el desarrollo de nuestros programas se pueden presentar diversos tipos de

    errores, los cuales se clasifican de la siguiente forma:

    a. Errores de Compilacin: Son aquellos errores que se presentan en el momento de

    la compilacin nuestro programa, el compilador informa el nmero de lnea donde

    se produjo el error. Este tipo de error se produce generalmente cuando no

    cumplimos rigurosamente las reglas de sintaxis del Lenguaje de Programacin.

    Algunos IDEs tiene el atributo Intelligent Sense con el cual automticamente

    subrayan la lnea de error mientras se escribe el cdigo fuente.

    b. Errores de Lgica: Este error se percibe cuando

    los resultados emitidos por nuestro programa son

    incorrectos e imprecisos, la razn de este tipo de

    error se debe al mal planteamiento de la lgica

    del programador.

    c. Errores en Tiempo de Ejecucin: Este error se

    presenta imprevistamente durante el tiempo de

    ejecucin (run-time) de nuestro programa, cuando ste no soporta una instruccin,

    y como resultado se cuelga o cierra. Estos tipos de errores deben ser controlados

    por la misma aplicacin, y no deberan ocasionar que la ejecucin colapse.

  • UNIVERSIDAD PRIVADA TELESUP

    Precisamente las excepciones o Exceptions en Java

    controlan este ltimo tipo de errores.

    Manejo de excepciones

    A diferencia de otros lenguajes de programacin

    orientados a objetos como C/C++, Java incorpora en el

    propio lenguaje la gestin de errores en tiempo de

    ejecucin.

    Cmo lo hace? Veamos:

    Qu es una Exception?

    En el lenguaje Java, una Exception es un objeto que se genera automticamente

    cuando se produce un error de ejecucin, una excepcin representa al error en s,

    contiene informacin del error producido. Algunas excepciones son fatales y provocan

    que se deba finalizar la ejecucin del programa. En este caso conviene terminar

    ordenadamente y dar un mensaje explicando el tipo de error que se ha producido.

    Otras, como por ejemplo, al no encontrar un fichero en el que hay que leer o escribir

    algo, pueden ser recuperables. En este caso el programa debe dar al usuario la

    oportunidad de corregir el error (indicando una nueva localizacin del fichero no

    encontrado).

    Excepciones Estndar de Java: Los errores se representan mediante dos tipos de

    clases derivadas de la clase Throwable: Error y Exception. La siguiente figura

    muestra parcialmente la jerarqua de clases relacionadas con Throwable:

  • UNIVERSIDAD PRIVADA TELESUP

    La clase Error est relacionada con errores de compilacin, del sistema o de la

    JVM. De ordinario estos errores son irrecuperables y no dependen del

    programador ni debe preocuparse de capturarlos y tratarlos.

    La clase Exception tiene ms inters. Dentro de ella se puede distinguir muchas

    clases derivadas que clasifican los diferentes tipos de errores que se pueden

    producir en Java. Ejemplo de algunas Excepciones:

    NullPointerException : Exception producida cuando se hace referencia a una

    posicin de una estructura de datos que no apunta a ningn dato.

    IndexOutBoundException: Exception producida cuando se hace referencia a un

    ndice que sobrepasa la longitud de la estructura de datos.

    NegativeArraySizeException: Exception que se produce cuando se hace referencia a

    un nmero de ndice negativo.

    EOFException: Exception que se produce cuando el puntero ha avanzado una

    posicin posterior al ltimo registro de una tabla.

    Todas las excepciones por heredar de Throwable usan los mtodos siguientes:

    1. String getMessage() Extrae el mensaje asociado con la excepcin.

    2. String toString() Devuelve un String que describe la excepcin.

    3. void printStackTrace() Indica el mtodo donde se lanz la excepcin.

    Un buen programa debe gestionar correctamente todas o la mayor parte de los

    errores que se pueden producir. Java para este fin utiliza la estructura try catch y

    los Exceptions.

    Estructura try catch

    Cuando en un mtodo se produce una situacin anmala

    es necesario lanzar una excepcin, la cual se desarrolla

    con la siguiente secuencia:

    1. Se crea un objeto Exception de la clase adecuada.

    2. Se lanza la excepcin con la sentencia throw seguida del objeto Exception creado.

    Esta excepcin deber ser capturada (catch) y gestionada, para este fin Java nos

    brinda la estructura try catch.

  • UNIVERSIDAD PRIVADA TELESUP

    Ejemplo 1:

    try

    {

    String cad="Universidad Privada Telesup";

    int n=0;

    String nn=JOptionPane.showInputDialog("Ingrese

    la posicin ");

    n=Integer.parseInt(nn);

    char cc=cad.charAt(n);

    JOptionPane.showMessageDialog(null,"El carcter es: "+cc);

    }

    catch (Exception ex)

    {

    JOptionPane.showMessageDialog(null,ex.getMessage());

    }

    Explicacin del ejemplo 1:

    La zona del try, incluye al cdigo que est siendo controlado por posibles errores de

    ejecucin. La zona del catch es la zona que atrapa al objeto Exception, en el caso de

    producirse un error; al producirse el error, se interrumpe la ejecucin de la zona try y el

    control del programa se direcciona hacia la zona del try y visualizar un mensaje con

    la descripcin del error.

    La estructura try catch puede utilizar varios bloques catch,

    en los cuales puede atrapar diversos tipos de Exceptions

    (errores), estos deben ser colocados desde lo ms

    especfico a lo ms genrico. Esto permite personalizar la

    accin a realizar segn el tipo de error producido. Veamos

    un segundo ejemplo:

  • UNIVERSIDAD PRIVADA TELESUP

    Ejemplo 2:

    try

    { String cad="Universidad Privada Telesup"; int n=0;

    String nn=JOptionPane.showInputDialog("Ingrese la posicin "); n=Integer.parseInt(nn); char cc=cad.charAt(n); JOptionPane.showMessageDialog(null,"El caracter es: "+cc); } catch (StringIndexOutOfBoundsException ex1)

    { JOptionPane.showMessageDialog(null,"Error: La posicin esta fuera del

    rango de la cadena."); } catch (NumberFormatException ex2) {

    JOptionPane.showMessageDialog(null,"Error: El valor que Ud. ingres no corresponde a un nmero."); } catch (Exception ex) { JOptionPane.showMessageDialog(null,ex.getMessage()); }

    } Explicacin del ejemplo 2: En este caso existen 3 bloques catch, cada uno de ellos

    atrapa un diferente tipo de error, segn sea el caso. Nunca se realizar ms de un

    bloque catch, solo se realizar el bloque que corresponda al error producido, los

    primeros dos bloques corresponden a errores especifico, el ultimo es un Exception

    genrico que corresponde a cualquier otro tipo de error. La clusula finally: Esta

    clusula es opcional y se coloca al final de la estructura, lo que se programe en este

    bloque se realizar de todos modos sea que se haya producido un error o no.

    Ejemplo 3:

    try

    { String cad="Universidad Privada Telesup";

    int n=0; String nn=JOptionPane.showInputDialog("Ingrese la posicin "); n=Integer.parseInt(nn);

    char cc=cad.charAt(n); JOptionPane.showMessageDialog(null,"El caracter es: "+cc); }

    catch (StringIndexOutOfBoundsException ex1) {

    JOptionPane.showMessageDialog(null,"Error: La posicin esta fuera del rango de la cadena."); }

    catch (NumberFormatException ex2)

  • UNIVERSIDAD PRIVADA TELESUP

    { JOptionPane.showMessageDialog(null,"Error: El valor que Ud. ingres no corresponde a un nmero."); } catch (Exception ex) { JOptionPane.showMessageDialog(null,ex.getMessage()); } finally { JOptionPane.showMessageDialog(Programa finalizado); } }

    Clausula throws: Esta clusula se puede acompaar en la declaracin de un mtodo,

    esto quiere decir que si dentro del mtodo se produce un Exception (error), entonces

    dicho Exception ser disparado hacia fuera (hacia el lugar desde donde se invoc al

    mtodo, esta zona necesariamente debe estar dentro de un try catch ), tal como

    se muestra en el siguiente ejemplo:

    Ejemplo 4

    public class Demo {

    public Demo() {

    } public void mostrar() throws Exception { String cad="Universidad Privada Telesup"; int n=0; String nn=JOptionPane.showInputDialog("Ingrese la posicin "); n=Integer.parseInt(nn); char cc=cad.charAt(n); JOptionPane.showMessageDialog(null,"El carcter es: "+cc); }

    public static void main(String args[])

    { try {

    Demo obj=new Demo(); obj.mostrar();

    } catch (Exception ex1) {

    JOptionPane.showMessageDialog(null,"Error: La posicin esta fuera del rango de la cadena."); }

    } }