guía - laboratorio # 3_java(2)

Upload: carlos-andrade

Post on 24-Feb-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    1/25

    / . . . 1

    GuaGuaGuaGua ---- TallerTallerTallerTaller # 3# 3# 3# 3(JAVA - POO)

    Objetivo: Brindar al estudiante las herramientas necesarias para elaprendizaje de aplicaciones relacionadas con el paradigma de la POO.

    Programacin Orientada

    a ObjetosIntroduccin.

    La idea de usar la POO es hacer quela Programacin sea ms sencilla, yaque permitir dividir un problema. Estdivisin se hace en objetos, de talmanera que cada objeto funcione enforma totalmente independiente. Un

    objeto es un elemento del programaque posee sus propios datos y supropio funcionamiento. Es decir unobjeto est formado por datos(propiedades) y funciones que escapaz de realizar el objeto (mtodos).

    Antes de poder utilizar un objeto, se debe definir su clase. La clase es la

    definicin de un tipo de objeto. Al definir una clase lo que se hace es

    indicar como funciona un determinado tipo de objetos. Luego, a partir de

    la clase, podremos crear objetos de esa clase. Por ejemplo, si quisiramoscrear el juego del Parqus en Java, una clase sera la casilla, otra las fichas,

    etc. En el caso de la casilla, se definira la clase para indicar su

    funcionamiento y sus propiedades, y luego se creara tantos objetos casilla

    como casillas tenga el juego.

    Lo mismo ocurrira con las fichas, la clase ficha definira las propiedades de la ficha (color

    y posicin por ejemplo) y su funcionamiento mediante sus mtodos (por ejemplo un

    mtodo sera mover, otro llegar a la meta, etc., etc. ), luego se crearan tantos objetos

    ficha, como fichas tenga el juego.

    CEET - Distrito Capital

    Programa de Formacin: ADSI 150752 TRIMESTRE VI

    Conocimiento de Conocimiento: Aplicar diversos estilos de Programacin usando herramientas para

    Desarrollo Web

    Instructor: Ing. Espec. Javier Vaquiro

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    2/25

    / . . . 2

    PPPPropiedadesropiedadesropiedadesropiedades dededede lalalala POOPOOPOOPOO

    ENCAPSULAMIENTO.

    Una clase se compone tanto de variables (propiedades) como defunciones y procedimientos (mtodos). De hecho no se pueden

    definir variables (ni funciones) fuera de una clase (es decir no hay

    variables globales).

    OCULTACIN.

    Hay una zona oculta al definir las clases (zona privada) que slo esutilizada por esa clases y por alguna clase relacionada. Hay una zonapblica (llamada tambin interfaz de la clase) que puede ser utilizada

    por cualquier parte del cdigo.

    POLIMORFISMO.

    Cada mtodo de una clase puede tener varias definicionesdistintas. En el caso del parchs: partida.empezar(4) empieza una partidapara cuatro jugadores, partida.empezar(rojo, azul) empieza una partidade dos jugadores para los colores rojo y azul; estas son dos formas distintasde emplear el mtodo empezar, que es polimrfico.

    HERENCIA.Una clase puede heredar propiedades y mtodos de su clase padre.

    Concepto de Objeto

    Un objeto es cualquier entidadrepresentable en un programainformtico, bien sea real (ordenador) o

    bien sea un concepto (transferencia). Unobjeto en un sistema posee: unaidentidad, un estado y uncomportamiento.

    El Estado marca las condiciones deexistencia del objeto dentro delprograma. Lgicamente este estadopuede cambiar. Un coche puede estar

    parado, en marcha, estropeado, funcionando, sin gasolina, etc.

    El Comportamiento determina como responde el objeto ante peticiones de otrosobjetos. Por ejemplo un objeto conductor puede lanzar el mensaje arrancar a uncoche. El comportamiento determina qu es lo que har el objeto.

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    3/25

    / . . . 3

    La Identidad determina que cada objeto es nico aunque tengan el mismovalor. No existen dos objetos iguales. Lo que s existe es dos referencias al mismoobjeto.

    Los objetos se manejan por referencias, existir una referencia a un objeto. De

    modo que esa referencia permitir cambiar los atributos del objeto. Inclusopuede haber varias referencias al mismo objeto, de modo que si una referenciacambia el estado del objeto, el resto (lgicamente) mostrarn esos cambios.

    Los objetos por valor son los que no usan referencias y usan copias de valoresconcretos. En Java estos objetos son los tipos simples: int, char, byte, short, long,float, double y boolean. El resto son todos objetos (incluidos los arrays y Strings).

    A los objetostambin se les llama instancias de clase. Son un elemento en s de laclase. Un objeto se crea utilizando el llamado constructor de la clase. El constructores el mtodo que permite iniciar el objeto.

    Datos Miembro (propiedades o atributos)

    Para poder acceder a los atributos de un objeto, se utiliza esta sintaxis:

    objeto.atributo

    Por ejemplo:

    Circulo.radio;

    Mtodos

    Los mtodos se utilizan de la misma forma que los atributos, excepto porquelos mtodos poseen siempre parntesis, dentro de los cuales pueden ir valoresnecesarios para la ejecucin del mtodo (parmetros):

    objeto.mtodo(argumentosDelMtodo)

    Los mtodos siempre tienen parntesis (es la diferencia con las propiedades) ydentro de los parntesis se colocan los argumentos del mtodo. Que son los datosque necesita el mtodo para funcionar. Por ejemplo:

    MiCirculo.gira(5);

    Lo cual podra hacer que la Noria avance a 5 Km/h.

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    4/25

    / . . . 4

    HerenciaEn la POO tiene mucha importancia este concepto, la herencia es el mecanismoque permite crear clases basadas en otras existentes. Se dice que esas clasesdescienden de las primeras. As por ejemplo, se podra crear una clasellamada vehculo cuyos mtodos seran mover, parar, acelerar y frenar. Y despusse podra crear una clase coche basada en la anterior que tendra esos mismosmtodos (les heredara) y adems aadira algunos propios, por ejemplo abrirCapo cambiarRueda.

    Clases

    Es decir antes de poder tilizar un objeto se debe definir la clase a la quepertenece, esa definicin incluye:

    Sus ATRIBUTOS.Es decir, los datos miembros de esa clase. Los datos pueden serpblicos (accesibles desde otra clase) o privados (slo accesibles por cdigo de supropia clase. Tambin se las llama campos.

    Sus MTODOS. Las funciones miembro de la clase. Son las acciones (u

    operaciones) que puede realizar la clase.

    Cdigo de inicializacin. Para crear una clase normalmente hace falta realizaroperaciones previas(es lo que se conoce como el constructor de la clase).

    Otras clases.Dentro de una clase se pueden definir otras clases (clases internas,son consideradas como asociaciones dentro de UML).

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    5/25

    / . . .

    Imgen: Notacin UML de una Clase

    El formato general para crear una clase en Java es:

    [acceso] class nombreDeClase { [acceso] [static] tipo atributo1; [acceso]

    [static] tipo atributo2; [acceso] [static] tipo atributo3;

    ...

    [access] [static] tipo mtodo1(listaDeArgumentos) {

    ...cdigo del mtodo...}

    ...}

    La palabra opcional static sirve para hacer que el mtodo o la propiedad a la queprecede se pueda utilizar de manera genrica (ms adelante se hablar de clasesgenricas), los mtodos o propiedades as definidos se llaman atributos de clase ymtodos de clase respectivamente. Su uso se ver ms adelante. Ejemplo;

    class Noria {double radio;

    void girar(int velocidad){...//definicin del mtodo

    }

    void parar(){...}

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    6/25

    / . . .

    Para poder utilizar un objeto, hay que crearle de verdad. Eso consiste enutilizar el operador new.

    Por ejemplo:

    Vehiculo Mivehiculo = new Vehiculo( );

    Al hacer esta operacin el objeto reserva la memoria que necesita y seinicializa el objeto mediante su constructor. Ms adelante veremos comodefinir el constructor.

    CREACIN DE CLASES

    Definir atributos de la clase (variables, propiedades o datos de lasclases)

    Cuando se definen los datos de una determinada clase, se debe indicar eltipo de propiedad que es (String, int, double, int[ ][ ],...) y el especificador deacceso (public, private,...). El especificador indica en qu partes del cdigo esedato ser visible.

    Ejemplo:

    class Persona {

    public String nombre;//Se puede acceder desde cualquier claseprivate int contrasea;//Slo se puede acceder desde la

    //clase Persona

    protected String direccin;//Acceden a esta propiedad

    //esta clase y sus descendientes

    : Persona

    +nombre: String

    -contrasea: String

    #direccion: String

    dormir( )trabajar( )

    Ilustracin 8, La clase persona en UML. El signo + significa public,el signo # protected y el signo - private

    Por lo general las propiedades de una clase suelen ser privadas o protegidas, a

    no ser que se trate de un valor constante, en cuyo caso se declararn comopblicos.

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    7/25

    / . . .

    Las variables locales de una clase pueden ser inicializadas.

    Ejemplo:

    Class auto

    {public nRuedas=4;

    Definir mtodos de clase (operaciones o funciones de clase)

    Un mtodoes una llamada a una operacin de un determinado objeto. Al realizaresta llamada (tambin se le llama enviar un mensaje), el control del programa

    pasa a ese mtodo y lo mantendr hasta que el mtodo finalice o se haga uso dereturn.

    Para que un mtodo pueda trabajar, normalmente hay que pasarle unos datos enforma de argumentos o parmetros, cada uno de los cuales se separa porcomas. Ejemplos de llamadas:

    vehiculo.frenar (); // Sin argumentos o parmetros

    miCoche.acelerar(10); // Con argumentos

    ficha.comer(posicin15); // posicin 15 es una variable que se pasa comoargumento

    partida.empezarPartida(18:15,colores);

    Los mtodos de la clase se definen dentro de sta. Hay que indicar un modificadorde acceso (public, private, protected o ninguno, al igual que ocurre con lasvariables y con la propia clase) y un tipo de datos, que indica qu tipo devalores devuelve el mtodo.

    Esto ltimo se debe a que los mtodos son funciones que pueden devolver undeterminado valor (un entero, un texto, un valor lgico,...) mediante elcomando return. Si el mtodo no devuelve ningn valor, entonces se utiliza el tipovoid que significa que no devuelve valores (en ese caso el mtodo no tendrinstruccin return).

    El ltimo detalle a tener en cuenta es que los mtodos casi siempre necesitan datospara realizar la operacin, estos datos van entre parntesis y se les llamaargumentos. Al definir el mtodo hay que indicar que argumentos se necesitan y de

    qu tipo son.

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    8/25

    / . . .

    Ejemplo: Creacin de una Clase llamadavehiculo

    public class vehiculo{

    // Funcin principal

    int ruedas;private double velocidad=0;

    String nombre;

    // Aumenta la velocidad

    public void acelerar(double cantidad) {velocidad += cantidad;

    }

    // Disminuye la velocidad

    public void frenar(double cantidad) {velocidad -= cantidad;

    }

    // Devuelve la velocidad

    public double obtenerVelocidad(){return velocidad;}

    public static voidmain(String args[])

    {

    vehiculo miCoche = new vehiculo(); miCoche.acelerar(12); miCoche.frenar(5);System.out.println(miCoche.obtenerVelocidad());

    }

    En la clase anterior, los mtodos acelerar y frenar son de tipo void por eso no tienensentencia return. Sin embargo el mtodo obtenerVelocidad es de tipo double porlo que su resultado es devuelto por la sentencia return y puede ser escrito enpantalla.

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    9/25

    / . . .

    :Vehculo

    ruedas: int

    -velocidad:double=0

    #direccion:String

    nombre:String

    +acelerar(double)

    +frenar(double)

    +obtenerVelocidad( ):double

    Imagen: Versin UML de la clase Coche

    Destruccin de Objetos

    En C y C++ todos los programadores saben que los objetos se crean con new ypara eliminarles de la memoria y as ahorrarla, se deben eliminar con la instruccin

    delete. Es decir, es responsabilidad del programador eliminar la memoria quegastaban los objetos que se van a dejar de usar. La instruccin delete del C++ llamaal destructor de la clase, que es una funcin que se encarga de eliminar

    adecuadamente el objeto.

    La sorpresa de los programadores C++ que empiezan a trabajar en Java es queno hay instruccin delete en Java. La duda est entonces, en cundo se elimina lamemoria que ocupa un objeto.

    En Java hay un recolector de basura (garbage collector) que se encarga de

    gestionar los objetos que se dejan de usar y de eliminarles de memoria. Este

    proceso es automtico e impredecible y trabajo en un hilo (thread) de baja

    prioridad.

    Por lo general ese proceso de recoleccin de basura, trabaja cuando detecta que

    un objeto hace demasiado tiempo que no se utiliza en un programa. Estaeliminacin depende de la mquina virtual, en casi todas la recoleccin se realiza

    peridicamente en un determinado lapso de tiempo. La implantacin de mquina

    virtual conocida como HotSpot1 suele hacer la recoleccin mucho ms a menudo

    Se puede forzar la eliminacin de un objeto asignndole el valor null, pero teniendoen cuenta que eso no equivale al famoso delete del lenguaje C++. Con null no selibera inmediatamente la memoria, sino que pasar un cierto tiempo

    (impredecible, por otro lado) hasta su total destruccin.

    Se puede invocar al recolector de basura desde el cdigo invocando al

    mtodo esttico System.gc(). Esto hace que el recolector de basura trabaje encuanto se lea esa invocacin.

    ()

    ,

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    10/25

    / . . . 10

    Sin embargo puede haber problemas al crear referencias circulares. Como:

    class uno {

    dos d;

    uno( ){

    // constructor d = new dos( );

    }

    }

    class dos { uno u; dos() {

    u = new uno();

    }

    public class app

    {

    public static void main(Stgring[] args){

    uno prueba = new uno();//referencia circularprueba = null; //no se liberar bien la memoria

    }}

    Al crear un objeto de clase uno, automticamente se crea uno de la clase dos,que al crearse crear otro de la clase uno. Eso es un error que provocar que no

    se libere bien la memoria salvo que se eliminen previamente los objetosreferenciados.

    El mtodo finalize

    Es equivalente a los destructores del C++. Es un mtodo que es llamado antesde eliminar definitivamente al objeto para hacer limpieza final. Un uso puede sereliminar los objetos creados en la clase para eliminar referencias circulares. Ejemplo:

    class uno { dos d; uno()

    {d = new dos();

    }

    protected void finalize(){d = null;//Se elimina d por lo que pudiera pasar

    }}

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    11/25

    / . . . 11

    finalize es un mtodo de tipo protected heredado por todas las clases ya queest definido en la clase raz Object.La diferencia de finalize respecto a losmtodos destructores de C++ estriba en que en Java no se llaman al instante (de

    hecho es imposible saber cuando son llamados). la llamada System.gc() llama atodos los finalize pendientes inmediatamente (es una forma de probar si el mtodo

    finalize funciona o no).

    RReeuuttiilliizzaacciinnddee ccllaasseess

    Herencia

    Es una de las armas fundamentales de la programacin orientada a objetos.Permite crear nuevas clases que heredan caractersticas presentas en clasesanteriores. Esto facilita enormemente el trabajo porque ha permitido crear clasesestndar para todos los programadores y a partir de ellas crear nuestras propiasclases personales. Esto es ms cmodo que tener que crear nuestras clases desdecero.Para que una clase herede las caractersticas de otra hay que utilizar la palabraclave extends tras el nombre de la clase. A esta palabra le sigue el nombre de laclase cuyas caractersticas se heredarn. Slo se puede tener herencia de unaclase (a la clase de la que se hereda se la llama superclase y a la claseheredada se la llama subclase). Ejemplo:

    class coche extends vehiculo{

    ...} //La clase coche parte de la definicin de vehculo

    mtodos y propiedades no heredados

    Por defecto se heredan todos los mtodos y propiedades protected y public (nose heredan los private). Adems si se define un mtodo o propiedad en lasubclase con el mismo nombre que en la superclase, entonces se dice quese est redefiniendo el mtodo, con lo cual no se hereda ste, sino que sereemplaza por el nuevo.

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    12/25

    / . . . 12

    Ejemplo:

    class vehiculo {

    public int velocidad; public int ruedas;

    public void parar() {

    velocidad = 0;}

    public void acelerar(int kmh) {velocidad += kmh;}

    class coche extends vehiculo{public int ruedas=4;

    public int gasolina;

    public void repostar(int litros) {gasolina+=litros;

    }}

    public class app {

    public static void main(String[] args) {coche coche1=new coche(); coche.acelerar(80);//Mtodo

    heredado coche.repostar(12);

    superA veces se requiere llamar a un mtodo de la superclase. Eso se realiza con lapalabra reservada super. Si this hace referencia a la clase actual, super hacereferencia a la superclase respecto a la clase actual, con lo que es un mtodoimprescindible para poder acceder a mtodos anulados por herencia. Ejemplo

    public class vehiculo{double velocidad;

    ...public void acelerar(double cantidad)

    {velocidad+=cantidad;

    }}

    public class coche extends vehiculo{

    double gasolina;public void acelerar(double cantidad){

    super.acelerar(cantidad);gasolina*=0.9;

    }

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    13/25

    / . . . 13

    En el ejemplo anterior, la llamadasuper.acelerar(cantidad) llama al mtodoacelerar de la clase vehculo (el cual acelerar la marcha). Es necesario redefinir elmtodo acelerar

    en la clase coche ya que aunque la velocidad vara igual que en la superclase,hay que tener en cuenta el consumo de gasolina

    Se puede incluso llamar a un constructor de una superclase, usando la sentenciasuper().

    Ejemplo:

    public class vehiculo{

    double velocidad;public vehiculo(double v){

    velocidad=v;}}

    public class coche extends vehiculo{double gasolina;public coche(double v, double g)

    {super(v); //Llama al constructor de la clase vehiculo

    gasolina=g}

    }

    Por defecto Java realiza estas acciones:

    Si la primera instruccin de un constructor de una subclase es una sentencia que

    no es ni super ni this, Java aade de forma invisible e implcita una llamadasuper() al constructor por defecto de la superclase, luego inicia las variables de lasubclase y luego sigue con la ejecucin normal.

    Si se usa super(..) en la primera instruccin, entonces se llama al constructorseleccionado de la superclase, luego inicia las propiedades de la subclase yluego sigue con el resto de sentencias del constructor.

    Finalmente, si esa primera instruccin es this(..), entonces se llama alconstructor seleccionado por medio de this, y despus contina con las sentenciasdel constructor. La inicializacin de variables la habr realizado el constructor alque se llam mediante this.

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    14/25

    / . . . 14

    Clases abstractas

    A veces resulta que en las superclases se desean incluir mtodos tericos, mtodosque no se desea implementar del todo, sino que sencillamente se indican en laclase para que el desarrollador que desee crear una subclase heredada de laclase abstracta, est obligado a sobrescribir el mtodo.

    A las clases que poseen mtodos de este tipo (mtodos abstractos) se lasllama clases abstractas. Son clases creadas para ser heredadas por nuevasclases creadas por el programador. Son clases base para herencia. Las clasesabstractas no deben de ser instanciadas (no se pueden crear objetos de las clasesabstractas).Una clase abstracta debe ser marcada con la palabra clave abstract.Cada mtodo abstracto de la clase, tambin llevar el abstract. Ejemplo:

    abstract class vehiculo {public int velocidad=0;abstract public void acelera();public void para() {velocidad=0;}}

    class coche extends vehiculo {public void acelera() {

    velocidad+=5;

    }

    }

    public class prueba {public static void main(String[] args) {

    coche c1=new coche(); c1.acelera();

    System.out.println(c1.velocidad); c1.para();System.out.println(c1.velocidad);

    }}

    Final

    Se trata de una palabra que se coloca antecediendo a un mtodo, variable o

    clase. Delante de un mtodo en la definicin de clase sirve para indicar que ese

    mtodo no puede ser sobrescrito por las subclases. Si una subclase intentar

    sobrescribir el mtodo, el compilador de Java avisar del error.

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    15/25

    / . . . 1

    Si esa misma palabra se coloca delante de una clase, significar que esa claseno puede tener descendencia.

    Por ltimo si se usa la palabra final delante de la definicin de una propiedadde clase, entonces esa propiedad pasar a ser una constante, es decir nose le podr cambiar el valor en ninguna parte del cdigo.

    Clases internas

    Se llaman clases internas a las clases que se definen dentro de otra clase. Estopermite simplificar aun ms el problema de crear programas. Ya que unobjeto complejo se puede descomponer en clases ms sencillas. Perorequiere esta tcnica una mayor pericia por parte del programador.

    Al definir una clase dentro de otra, estamos hacindola totalmente

    dependiente. Normalmente se realiza esta prctica para crear objetos internosa una clase (el motor de un coche por ejemplo), de modo que esos objetospasan a ser atributos de la clase.Por ejemplo:

    public class Coche {

    public int velocidad;public Motor motor;

    public Coche(int cil) { motor=newMotor(cil); velocidad=0;

    }public class Motor{ //Clase internapublic int cilindrada;

    public Motor(int cil){

    cilindrada=cil;

    }}

    }

    El objeto motor es un objeto de la claseMotor que es interna a Coche. Siquisiramos acceder al objeto motor de un coche sera:

    Coche c=new Coche(1200);

    System.out.println(c.motor.cilindrada);//Saldr 1200

    Las clases internas pueden ser privadas, protegidas o pblicas. Fuera de la clasecontenedora no pueden crear objetos (slo se pueden crear motoresdentro de un coche), salvo que la clase interna sea static en ese caso spodran. Por ejemplo (si la clase motor fuera esttica):

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    16/25

    / . . . 1

    //suponiendo que la declaracin del Motor dentro de Coche es//public class static Motor{....

    Coche.Motor m=new Coche.Motor(1200);

    Pero eso slo tiene sentido si todos los Coches tuvieran el mismo motor.Dejando de lado el tema de las clases static, otro problema est en el operador this. Elproblema es que al usar this dentro de una clase interna, this se refiere al objeto de laclase interna (es decir this dentro de Motor se refiere al objeto Motor). Para poderreferirse al objeto contenedor (al coche) se usa Clase.this (Coche.this). Ejemplo:

    public class Coche { publicint velocidad;

    public int cilindrada;public Motor motor;

    public Coche(int cil) {motor=new Motor(cil);velocidad=0;}

    public class Motor{public int cilindrada;public Motor(int cil){

    Coche.this.cilindrada=cil;//Cochethis.cilindrada=cil;//Motor

    }

    }}

    Por ltimo las clases internas pueden ser annimas (se vern ms adelante al estar msrelacionadas con interfaces y adaptadores).

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    17/25

    / . . . 1

    Laboratorio

    Objetivo: Diagnosticar el progreso del aprendizaje del estudiante sobre la

    aplicacin de conocimientos fundamentales de las propiedades de la POO.

    1. La facultad de Ingeniera necesita un programa que le permita registrar lasnotas de los estudiantes a la finalizacin del semestre ya que se necesita conocerel rendimiento acadmico de la facultad. Se debe leer los datos haciendo usode la clase JOptionPane de Java. De cada estudiante se debe leer el cdigo,nombre, plan acadmico, periodo acadmico (String), el nmero de crditosmatriculados (int) y el promedio acadmico (double). En la figura 1.1 semuestra la forma de ingresar los datos.

    Imagen 1.1 Entrada de datos delestudiante

    Despus de terminar de leer los datos se debe mostrar un informe con los datos delestudiante como se muestra en la imagen 1.2

    Imagen 1.2 Resultados mostrados despus de leer el estudiante

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    18/25

    / . . . 1

    Se debe entregar los siguientes archivos.

    NotasIngenieria.javaUsaNotasIngenieria.java

    Punto1.pdf: Contiene el diagrama de clases y una lista de figurasexplicadas, con ejemplos de ejecucin del programa.

    2. Se desea hacer un programa en Java para calcular la nmina en unaempresa constructora. Esta empresa cada fin de semana le paga a lostrabajadores de la obra . Para cada empleado se debe leer la cdula, nombre(String), el nmero de horas trabajadas a la semana (int) y el precio por hora(double). El programa debe calcular el salario bsico. El empleado debe pagar losaportes a salud y pensin que son el 5% y 10% respectivamente del salario bsico.Al final se debe mostrar un informe como se muestra a continuacin. Los datos sedeben ingresar como se muestra en la imagen 2.1

    Imagen 2.1 Entrada de datos del empleado

    La respuesta se debe mostrar en un mensaje como el mostrado en la imagen 2.2

    Imagen 2.2 Resultados de la Nmina del Empleado

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    19/25

    / . . . 1

    Se debe entregar los siguientes archivos.

    Nomina.javaUsaNomina.java

    Punto2.pdf: Contiene el diagrama de clases y una lista de figurasexplicadas, con ejemplos de ejecucin del programa.

    3. Se necesita un programa para calcular el promedio ponderado de unestudiante de Ingeniera que tiene matriculadas las siguientes materias:

    Asignatura Nmero de Crditos

    Clculo 4

    Fsica 4

    Algoritmia 3

    Algebra lineal 3

    Deporte Formativo 2

    Total crditos 16

    El peso de cada materia en el promedio depende del nmero de crditos. Unejemplo se muestra en la tabla anterior.El promedio ponderado se calculara as.

    Promedio= (Nota1 * numeroCreditosNota1/ totalCreditos) + (Nota2*numeroCreditosNota2/ totalCreditos) +(Nota n numeroCreditosNota n / totalCreditos)

    Usando la clase JOptionPane se debe leer el cdigo del estudiante, nombre(String) y las notas obtenidas en cada materia. Con estos datos el sistemacalcular el promedio ponderado y mostrar el resultado, como se muestra en lafigura 3.1

    Imagen 3.1 Resultados del promedio ponderado

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    20/25

    / . . . 20

    Se debe entregar los siguientes archivos.

    Estudiante.javaUsaEstudiante.java

    Punto3.pdf: Contiene el diagrama de clases y una lista de figurasexplicadas, con ejemplos de ejecucin del programa.

    Ayudas y Gua de implementacin

    /** LABORATORIO No. 2* INTEGRANTES DEL GRUPO:* CODIGO DE LOS INTEGRANTES:* FECHA DE REALIZACIN:

    * PROFESOR:* SALA DE COMPUTO No:* DESCRIPCION DE LA CLASE:*/import javax.swing.*;

    public class ClaseBase{

    //Definicin de atributosint atributo1;String atributo2;

    doubleatributo3;

    //Definicin de mtodos

    public void metodo1(){

    }

    public void metodo2(){

    }

    public void metodon(){

    }

    }//fin clase

    /** LABORATORIO No. 2* INTEGRANTES DEL GRUPO:* CODIGO DE LOS INTEGRANTES:* FECHA DE REALIZACIN:

    * PROFESOR:* SALA DE COMPUTO No:* DESCRIPCION DE LA CLASE:

    */

    public class ClasePrincipal{

    //Mtodoprincipal

    public static void main(String ]){

    //Creacin del objetoClaseBase objeto= new ClaseBase();

    //Utilizacin de los mtodos delobjeto creado

    objeto.metodo1();objeto.metodo

    2();

    System.exit(0);

    }//Finmain

    }//fin clase

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    21/25

    / . . . 21

    4._ Investiga los siguientes conceptos y mencione un ejemplo aplicativoa) finalize

    b) this

    c) newd) extends

    e) final

    5._ Explique brevemente en que consiste la destruccin de objetos y para que se utiliza. Escriba

    un ejemplo.

    6._ Con sus propios trminos, defina que son las clases Abstractas y para que se utilizan. Escribaun ejemplo.

    7._ Explique brevemente en que consiste la propiedad Polimorfismo y como se utiliza. Escribaun ejemplo.

    8._ Cul de las siguientes afirmaciones es falsa en Java?

    a) Es posible definir arrays bidimensionales de la forma a[i][j], donde cada fila a[i] puede tenerdistinta longitud.

    b) No es posible declarar arrays con memoria esttica.

    c) Hola es un array.

    d) Un array es un objeto.

    9._ Dado el siguiente programa:

    class A {

    static int x[ ] = {1, 2};

    int y[ ];

    void f (int z[ ]) { z[1]+=2; }

    void g ( ) {

    A a = new A ( );

    a.x[0]++;

    }

    }

    class B {

    public static void main (String args[ ]) {

    A b = new A ( );b.y = b.x; b.f

    (b.y); b.g ( );

    System.out.println (b.x[0] + " " + b.x[1]); (1)

    System.out.println (b.y[0] + " " + b.y[1]); (2)

    }

    }

    Cul es la salida de la lnea (1) ?

    a)1 2b)1 4c)2 2d)2 4

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    22/25

    / . . . 22

    10._ En el programa anterior, cul es la salida de la lnea (2) ?

    a) 1 2b) 1 4c) 2 2

    d) 2 4

    11._ Cul es la salida en pantalla del siguiente programa?

    class A {

    static int n = 0;

    String f (A x) { return "AA" + (x.n++); } String f (B x) { return

    "AB" + (x.n--); }

    }

    class B extends A {

    String f (B x) { return "BB" + (x.n--); }

    public static void main (String args[]) { A a = new A ();A b = new B (); System.out.println (a.f (b));

    System.out.println (b.f (b)); System.out.println (a.f

    ((B) b)); System.out.println (b.f ((B) b));

    }

    }

    Salida:

    a) AA0

    b) AA1

    c) AB2

    d) BB1

    12._ a) Definir una clase Conjunto que ontenga:

    Un array de valores de cualquier tipo.

    Un mtodo interseccion que tome como argumento otro conjunto, ydevuelva un nuevo conjunto con la interseccin de los dos, es decir, loselementos de la primera lista que son equal a algn elemento de la segunda.

    class Conjunto {

    Object elementos[]; Conjunto

    (Vector elems) {

    elementos = new Object [elems.size ()];

    for (int i = 0; i < elementos.length; i++)

    elementos [i] = elems.elementAt (i);

    }

    Conjunto interseccion (Conjunto conj) { Vector

    inter = new Vector ();

    for (int i = 0; i < elementos.length; i++)

    for (int j = 0; j < conj.elementos.length; j++)

    if (elementos[i].equals (conj.elementos[j])) {

    inter.addElement (elementos[i]);

    break;

    }

    return new Conjunto (inter);

    }

    }

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    23/25

    / . . . 23

    b) Definir una clase Persona con una variable dni y los mtodos necesarios para que se puedahacer la interseccin de listas de personas con la clase anterior, considerando que dospersonas son la misma cuando tienen el mismo DNI.

    class Persona { Stringdni;

    public boolean equals (Object obj) {return (obj instanceof Persona) && dni.equals (((Persona) obj) .dni);

    }

    }

    c) Definir un mtodo elements en la clase Conjunto que devuelva una Enumeration paraiterar sobre un conjunto. Indicacin: Enumeration es una interface con dos mtodos:nextElement y hasMoreElements.

    class Conjunto {

    ...

    Enumeration elements () {return new ConjEnumeration (this);

    }

    }

    class ConjEnumeration implements Enumeration {

    Conjunto conjunto;

    int actual = 0;

    ConjEnumeration (Conjunto conj) { conjunto = conj; }

    public Object nextElement () {

    return conjunto.elementos[actual++];

    }

    public boolean hasMoreElements () {return actual < conjunto.elementos.length;

    }

    }

    13._ Indicar cul es la salida del siguiente programa y explicar porqu.

    class A {

    public static void main (String args[]) throws X {

    try { f (); throw new Z (); }

    catch (Y ex) { System.out.println (Y + ex); }

    catch (X ex) { System.out.println (X + ex); }

    }

    static f () throws X {

    try { throw new Y (); } catch (X ex) { g (); }

    }

    static g () throws X {

    try { throw new X (); } catch (Y ex) {}

    }

    }

    class X extends Exception {

    public String toString () { return "X"; }

    }

    class Y extends X {

    public String toString () { return "Y"; }

    }

    class Z extends Y {

    public String toString () { return "Z"; }

    }

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    24/25

    / . . . 24

    NOTA: No olvide incluir en cada una de sus clases el siguiente encabezado

    /* LABORATORIO No. 3

    * AUTOR :

    * FECHA DE REALIZACIN:

    * PROFESOR:

    * GRUPO:

    * DESCRIPCION DE LA CLASE : describa lo que hace esta clase. */

  • 7/25/2019 Gua - Laboratorio # 3_Java(2)

    25/25

    / . . . 2

    Anexo - Instrucciones JAVADESCRIPCION INSTRUCCION

    Declarar un rea de Texto dedimensiones: alto 10 X largo 20

    JTextArea areaT = new JTextArea(10, 20);

    Crear barras de desplazamiento pararea de texto en ventana JScrollPane scroller = new JScrollPane(areaT);

    Definir un ttulo para el rea de texto(areaTexto)

    areaT.setText(" Texto a desplegar ")

    Adicionar cadena de caracteres(salida) al rea de texto

    areaT.append(salida);

    Mostrar la ventana de dilogo conla salida (el rea de texto)

    JOptionPane.showMessageDialog(null, scroller, "Tabla dePosiciones Futbol", JOptionPane.INFORMATION_MESSAGE);

    Abrir una ventana para ingresar

    un dato

    JOptionPane.showInputDialog("Cadena de texto con mensaje a

    mostrar");

    Ventana de dilogo paraconfirmar la continuacin de algo

    JOptionPane.showConfirmDialog(null,"Desea incluir maspartidos?");

    Convertir una cadena decaracteres a un dato real

    Double.parseDouble(cadena de caracteres)

    Ingresar un valor entero xValint xVal = Integer.parseInt(JOptionPane.showInputDialog

    ("Digite un valor"));

    Ingresar un valor String variable=JOptionPane.showInputDialog("Digite un valor");

    Sentencia if-else

    if (condicin){

    Instrucciones si se cumple la condicin; }else{

    Instrucciones si no se cumple la condicin; }

    Sentencia switch

    switch (clave) {case 12: pago = nroMin * VALMIN1; break;case 15: pago = nroMin * VALMIN2; break;case 19: pago = nroMin * VALMIN3; break;

    }

    Ciclos forfor (declaracion; condicion; incremento){

    instrucciones a repetir}

    Ciclo whilewhile (condicin){

    Instrucciones a repetir}

    Ciclo do-whiledo{

    Instrucciones a repetir}while(condicin);

    Importar la clase DecimalFormat importjava.text.DecimalFormat;

    Se declara un objeto formato quecontiene el formato a trabajar

    DecimalFormat formato = new DecimalFormat("0.00");// se trabajarn solamente 2 decimales

    Uso del formato en un mensaje de salida:objeto form, mtodo format yatributo (valorSalida)

    Salida = "\n\tValor ="+form.format(valorSalida);

    Uso de la instruccin para calcularX

    y(x elevado y) El resultado es

    double

    Math.pow( x, y );

    double = Math.pow( x, y );