martes, 27 de octubre de 2015

HERENCIA

La herencia es uno de los cuatro pilares de la programación orientada a objetos que consiste en la creación de nuevas clases(clase hija o derivada) a partir de otras ya existentes(clase padre o superclase) y ésta tendrá todos los atributos y métodos de su "superclase". Por ejemplo un niño hereda los apellidos paternos de sus padres como también ciertas facetas físicas o del comportamiento de sus progenitores.


La herencia es una característica fundamental que distingue el lenguaje orientado a objetos. Existen dos tipos de herencia:


  • Herencia simple(sólo una superclase).
  • Herencia múltiple(más de dos superclases), ésta última no lo soporta java.
Ventajas:
  • Reutilización del código.
  • Ahorro de tiempo y dinero.
En UML se representa de la siguiente manera:


La codificación es la siguiente:

Clase padre: Persona, es una clase abstracta

package blogger;

package blogger;

public abstract class Persona {
    protected String nombre;
    protected String DNI;
    protected int edad;

    public Persona(String nombre, String DNI, int edad) {
        this.nombre = nombre;
        this.DNI = DNI;
        this.edad = edad;
    }
    
    public abstract void mostrar();
}

Clase hija: Estudiante

1 /**package blogger;

public class Estudiante extends Persona{
    
    protected String codigo;
    protected String facultad;

    public Estudiante(String nombre, String DNI, int edad, String codigo, String facultad) {
        super(nombre, DNI, edad);
        this.codigo=codigo;
        this.facultad=facultad;
    }

    public void mostrar(){
        System.out.println("Nombre: "+this.nombre);
        System.out.println("DNI: "+this.DNI);
        System.out.println("Edad: "+this.edad); 
        System.out.println("Código: "+this.codigo);
        System.out.println("Facultad: "+this.facultad);
    }
}

jueves, 22 de octubre de 2015

SENTENCIA DE CONTROL switch

En Java, switch es una sentencia que se utiliza para elegir una de entre múltiples opciones; es especialmente útil cuando la selección se basa en el valor de una variable simple o de una expresión simple denominada expresión de control o selector; el valor de dicha expresión puede ser de tipo int o char pero no de tipo double.
Sintaxis
switch (selector)
{
  case etiqueta1 : sentencias1 ;
    break;
  case etiqueta2 : sentencias2 ;
    break;
  .
  .
  .
  case etiquetan : sentenciasn ;
    break;
  default: sentenciasd ; // opcional
}
La expresión de control o selector se evalúa y compara con cada una de las etiquetas de case; además, debe ser un tipo ordinal, por ejemplo, int, char, bool pero no float o string; cada etiqueta es un valor único, constante y debe tener un valor diferente de los otros. Si el valor de la expresión es igual a una de las etiquetas case,  por ejemplo etiqueta1, entonces la ejecución comenzará con la primera sentencia de sentencias1 y continuará hasta encontrar break o el final de switch. El tipo de cada etiqueta debe ser el mismo que la expresión de selector; las expresiones están permitidas como etiquetas pero sólo si cada operando de la expresión es por sí misma una constante; por ejemplo, 4, +8 o m*15, siempre que m hubiera sido definido anteriormente como constante nombrada. Si el valor del selector no está listado en ninguna etiqueta case no se ejecutará ninguna de las opciones a menos que se especifique una acción predeterminada. La omisión de una etiqueta default puede crear un error lógico difícil de prever; aunque ésta es opcional, se recomienda su uso, a menos de estar absolutamente seguro de que todos los valores de selector están incluidos en las etiquetas case.
Sentencia break

Para alterar el flujo de control de una sentencia de selección múltiple o de los bucles, existe la sentencia break la cual termina el bucle.
Sintaxis

break;
break etiqueta;

Una sentencia break consta de la misma palabra reservada seguida por un punto y coma; cuando la computadora ejecuta las sentencias siguientes a una etiqueta case, continúa hasta que se alcanza una sentencia break; al hacerlo, la computadora termina la sentencia switch. Si se omiten las sentencias break después de ejecutar el código case, la computadora ejecutará el código siguiente hasta el próximo case.
Ejemplo 1
switch (opcion)
{
  case 0:
    System.out.println("Cero!");
    break;
  case 1:
    System.out.println("Uno!");
    break;
  case 2:
    System.out.println("Dos!");
    break;
  default:
    System.out.println("Fuera de rango!");
}
Ejemplo 2
switch (opcion)
{
  case 0:
  case 1:
  case 2:
    System.out.println("Menor que 3!");
    break;
  case 3:
    System.out.println("Igual a 3!");
    break;
  default:
    System.out.println("Mayor que 3!");
}

Nota:
ECAUCIÓN
Si se olvida break en una sentencia switch, el compilador no emitirá mensaje de error pues se habrá escrito una sentencia switch correcta en cuanto a sintaxis, pero no realizará las tareas asignadas.

Sentencia break en bucles
La sentencia break a veces se utiliza para realizar una terminación anormal del bucle o antes de lo previsto; su sintaxis es:
break;
La sentencia break se utiliza para la salida de un bucle while, do-while o for, aunque su uso más frecuente es dentro de una sentencia switch.
while (condición1)
{
  if (condición2)
    break;
  // sentencias
}

Sentencia continue
Esta sentencia se utiliza en el contexto de un bucle y hace que la ejecución prosiga con la siguiente iteración saltando las sentencias que están a continuación; en bucles while/dowhile, la ejecución prosigue con la condición de control del bucle, mientras que en bucles for, la ejecución prosigue con la expresión de incremento. Su sintaxis es la siguiente:
continue;
continue etiqueta;

Ejemplo:
for (cuenta = 1; cuenta <= 100; cuenta++)
{
  System.out.print ("Introduzca un número, -1, Salir: ");
  n = en.nextIn( );
  if (n < 0) continue;
  suma += n: // no se ejecuta si n < 0
}
En este caso, la sentencia continue salta a la sentencia cuenta++ de la expresión
del bucle for.



domingo, 18 de octubre de 2015

BUCLES

CONCEPTO GENERAL DE BUCLE

Nos referimos a estructuras de repetición o bucles en alusión a instrucciones que permiten la repetición de procesos un número n de veces. Los bucles se pueden materializar con distintas instrucciones como for, while, etc. Un bucle se puede anidar dentro de otro dando lugar a que por cada repetición del proceso exterior se ejecute n veces el proceso interior. Lo veremos con ejemplos.

BUCLE FOR


La construcción de bucle básico en el lenguaje Java es la sentencia for, que le permite iterar un rango de valores para determinar cuántas veces ejecutar un bucle. La sintaxis abstracta para un bucle for es:



bucle for

Escribe el siguiente código en tu entorno de desarrollo, ejecuta el método main de esta clase y comprueba los resultados:





bucle_For.java




C:\Users\Dantecitoo\Documents\NetBeansProjects\EJEMPLO1\src\bucle_For.java
1 /**
 2  * @author Dante
 3  */
 4 public class bucle_For {
 5     
 6     public static void main (String [ ] args) {
 7         for (int i = 0; i < 5; i++) {  //Repite Gracias cinco veces
 8             System.out.println ("Gracias");
 9         }
10         for (int i=0; i < ("Gracias").length();  i++) { //Va devolviendo en cada iteración una letra más de la cadena
11             System.out.println ("Gracias".substring (0, i+1) );
12         }
13  
14 } 
15     
16 }
17 



BUCLE WHILE
Estos bucles se utilizan cuando queremos repetir la ejecución de unas sentencias un número indefinido de veces, siempre que se cumpla una condición. Se más sencillo de comprender que el bucle FOR, pues no incorpora en la misma línea la inicialización de las variables su condición para seguir ejecutándose y su actualización. Sólo se indica, como veremos a continuación, la condición que se tiene que cumplir para que se realice una iteración un ejemplo:




bucle_while.java




C:\Users\Dantecitoo\Documents\NetBeansProjects\EJEMPLO1\src\bucle_while.java
1 /**
 2  *
 3  * @author Dante
 4  */
 5 public class bucle_while {
 6     
 7     public static void main (String [ ] args) {
 8      int i = 1;                    // inicializacion
 9     while (i<=10) {               // condicion de repeticion
10         System.out.println(i*3.5);  // cuerpo
11         i++;                       // iteracion
12     }
13     }
14 }    
15 
16 



El cuerpo se realizara mientras la condición de repetición sea verdadera true

BUCLE DO_WHILE


El bucle do...while es la última de las estructuras para implementar repeticiones de las que dispone en Javascript y es una variación del bucle while visto anteriormente. Se utiliza generalmente cuando no sabemos cuantas veces se habrá de ejecutar el bucle, igual que el bucle WHILE, con la diferencia de que sabemos seguro que el bucle por lo menos se ejecutará una vez, ejemplo:







bucle_do_while.java




C:\Users\Dantecitoo\Documents\NetBeansProjects\EJEMPLO1\src\bucle_do_while.java
1 /**
 2  *
 3  * @author Dante
 4  */
 5 public class bucle_do_while {
 6     
 7     public static void main (String [ ] args) {
 8      
 9     int i = 1;                    // inicializacion
10     do {                        
11         System.out.println(i*3.5);  // cuerpo
12      i++;                       // iteracion
13     } while ( i <= 10 );                        // condicion
14 
15     }
16 }    
17 
18 



Realiza la condicion de repetición al finalizar el bloque.








jueves, 15 de octubre de 2015

ESTRUCTURAS SELECTIVAS: IF....ELSE, SWITCH

En la implementación de programas es muy usual el tener que tomar una decisión, ya sea el uso de un valor específico o a la ejecución de una función determinada, en forma general, a la ejecución de una determinada acción.


Debemos tener en cuenta que una toma de decisiones siempre nos da un valor de verdad o falso, por ejemplo, a la pregunta ¿Tengo hambre? si la respuesta es positiva comeré, en caso contrario no lo haré.


Las estructura condicional if..else(si..entonces), es aquella que nos permite tener obtener un resultado lógico para a toma de decisiones. Por otro lado hay situaciones en las que nos veremos en la necesidad de realizar mas de una acción dado un determinado valor, para este caso usaremos la estructra switch(en caso de).


A continuación veremos el desarrollo de las estructuras mencionadas y su utilización en el desarrollo de programas.

ESTRUCTURA IF...ELSE (ALTERNATIVA DOBLE)

Esta estructura permite tomar decisiones en ambos sentidos, es decir cuando la sentencia de comparación sea verdadero o cuando sea falso, en otras palabras cuando la respuesta de la comparación sea verdadera se ejecutarán una o más acciones, así mismo si la respuesta es falsa se ejecutarán acciones diferentes. Veamos un ejemplo: Escriba un programa que pida el ingreso de un número entero y muestre un mensaje diciendo si el número es mayor o menor que 15.
package blogger;

import java.util.Scanner;

public class If_else {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int numero;
        System.out.println("Ingrese un número entero...");
        numero = entrada.nextInt();
        if (numero > 15) {
            System.out.println("El número ingresado es mayor que 15");
        } else {
            if (numero < 15) {
                System.out.println("El numero ingresado es menor que 15");
            } else {
                System.out.println("En numero ingresado es igual a 15");
            }
        }
    }
}

En el ejemplo anterior podemos ver un anidamiento de la estructura if...else

ESTRUCTURA SWITCH (SELECCIÓN MÚLTIPLE)


La estructura de selección múltiple permite que el flujo del programa se desvíe por varias ramas en el punto de la toma de decision(es), esto en función del valor que tome el selector. Cuando se usa la sentencia "switch" el control se transfiere al punto etiquetado "case" cuya expresión constante coincida con el valor de la variable del "switch". Veamos un ejemplo. Elabore un programa que pida el ingreso de dos números y permita usar las cuatro operaciones básicas.
package blogger;

import java.util.Scanner;

public class Switch {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int numero1, numero2, opcion;
        System.out.print("Ingrese el primer número entero...");
        numero1 = entrada.nextInt();
        System.out.print("Ingrese el segundo número entero...");
        numero2 = entrada.nextInt();
        System.out.println("Ingrese la operación deseada:");
        System.out.println("[1]<---- +");
        System.out.println("[2]<---- -");
        System.out.println("[3]<---- *");
        System.out.println("[4]<---- /");
        opcion = entrada.nextInt();

        switch (opcion) {
            case 1:
                System.out.println("La suma es: " + (numero1 + numero2));
                break;
            case 2:
                System.out.println("El resto es: " + (numero1 - numero2));
                break;
            case 3:
                System.out.println("El producto es: " + (numero1 * numero2));
                break;
            case 4:
                try{
                    System.out.println("El cociente es: "+ (numero1 / numero2));  
                }catch(Exception e){
                    System.out.println("ERROR "+e.getMessage());
                }
                break;
        }
    }
}


martes, 13 de octubre de 2015

SOLUCIÓN DE LA PRIMERA EVALUACIÓN

PREGUNTA 1:

Crea una clase Cuenta (bancaria) con atributos para el número de cuenta (un entero largo), el DNI del cliente (otro entero largo), el saldo actual y el interés anual que se aplica a la cuenta (porcentaje). Define en la clase los siguientes métodos:
a.       Constructor por defecto y constructor con DNI, saldo e interés
b.      Accedentes y mutadores. Para el número de cuenta no habrá mutador.
c.       actualizarSaldo(): actualizará el saldo de la cuenta aplicándole el interés diario (interés anual dividido entre 365 aplicado al saldo actual).
d.      ingresar(double): permitirá ingresar una cantidad en la cuenta.
e.      retirar(double): permitirá sacar una cantidad de la cuenta (si hay saldo).
Método que permita mostrar todos los datos de la cuenta. El número de cuenta se asignará de forma correlativa a partir de 100001, asignando el siguiente número al último asignado.


SOLUCIÓN

package Pregunta1;

public class Cuenta {

    static long numero_de_cuenta = 100001;
    float DNI;
    float saldo_actual;
    float interes_anual;

    //CONSTRUCTOR POR DEFECTO
    public Cuenta() {
    }

    //CONSTRUCTOR CON DNI, SALDO E INTERÉS
    public Cuenta(float DNI, float saldo_actual, float interes_anual) {
        this.DNI = DNI;
        this.saldo_actual = saldo_actual;
        this.interes_anual = interes_anual;
    }

    //ACCEDENTES
    public static long getNumero_de_cuenta() {
        return numero_de_cuenta++;
    }

    public float getDNI() {
        return DNI;
    }

    public float getSaldo_actual() {
        return saldo_actual;
    }

    public float getInteres_anual() {
        return interes_anual;
    }

    //MUTADORES.... Para el número de cuenta no habrá mutador
    public void setDNI(float DNI) {
        this.DNI = DNI;
    }

    public void setSaldo_actual(float saldo_actual) {
        this.saldo_actual = saldo_actual;
    }

    public void setInteres_anual(float interes_anual) {
        this.interes_anual = interes_anual;
    }

    //actualizarSaldo(): actualizará saldo de la cuenta aplicándole el interés diario
    //(interés anual dividido entre 365 aplicado al saldo actual)
    public float actualizarSaldo() {
        float saldo_nuevo;
        saldo_nuevo = saldo_actual + (saldo_actual * ((interes_anual / 100) / 365));
        return saldo_nuevo;
    }

    //ingresar(double): permitirá ingresar una cantidad en la cuenta
    public double ingresar(double cant_ingresada) {
        double nuevo_monto;
        nuevo_monto = actualizarSaldo() + cant_ingresada;
        return nuevo_monto;
    }

    //retirar(double): permitirá sacar una cantidad de la cuenta (si hay saldo)
    public double retirar(double cant_retiro) {
        double nuevo_monto = 0;
        if (this.saldo_actual >= cant_retiro) {
            nuevo_monto = actualizarSaldo() - cant_retiro;
        } else {
            System.out.println("No hay saldo suficiente en su cuenta!!");
        }
        return nuevo_monto;
    }

    //Método que permita mostrar todos los datos de la cuenta. El número de 
    //cuenta se incrementa en 1 por cada cuenta ingresada
    void mostrar(double ing, double ret) {
        System.out.println("Numero de cuenta:" + Cuenta.getNumero_de_cuenta());
        System.out.println("Número de DNI: " + this.DNI);
        System.out.println("Interes anual:" + this.interes_anual);
        System.out.println("Saldo actual:" + actualizarSaldo());
        System.out.println("Saldo despues del ingreso realizado:" + ingresar(ing));
        System.out.println("Saldo despues del retiro realizado:" + retirar(ret));

    }
}

PREGUNTA 2
Crea una clase Libro que modele la información que se mantiene en una biblioteca sobre cada libro: título, autor (usa la clase Persona), ISBN, páginas, edición, editorial , lugar (ciudad y país) y fecha de edición (usa la clase Fecha). La clase debe proporcionar los siguientes servicios: accedentes y mutadores, método para leer la información y método para mostrar la información. Este último método mostrará la información del libro con este formato:
Título: Introductionto Java Programming 3a. edición
Autor: Liang, Y. Daniel
ISBN: 0-13-031997-X Prentice-Hall, New Jersey (USA), viernes 16 de noviembre de 2001
784 páginas.

SOLUCIÓN

 CLASE LIBRO
package Pregunta2;

import java.util.*;


public class Libro {
    String titulo;
    Persona autor;
    String ISBN;
    int paginas;
    String edicion;
    String editorial;
    String lugar;
    Fecha fecha_edicion;

    public Libro() {
    }

    public Libro(String titulo, Persona autor, String ISBN, int paginas, String edicion, String editorial, String lugar, Fecha fecha_edicion) {
        this.titulo = titulo;
        this.autor = autor;
        this.ISBN = ISBN;
        this.paginas = paginas;
        this.edicion = edicion;
        this.editorial = editorial;
        this.lugar = lugar;
        this.fecha_edicion = fecha_edicion;
    }

    //ACCEDENTES Y MUTADORES
    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public Persona getAutor() {
        return autor;
    }

    public void setAutor(Persona autor) {
        this.autor = autor;
    }

    public String getISBN() {
        return ISBN;
    }

    public void setISBN(String ISBN) {
        this.ISBN = ISBN;
    }

    public int getPaginas() {
        return paginas;
    }

    public void setPaginas(int paginas) {
        this.paginas = paginas;
    }

    public String getEdicion() {
        return edicion;
    }

    public void setEdicion(String edicion) {
        this.edicion = edicion;
    }

    public String getEditorial() {
        return editorial;
    }

    public void setEditorial(String editorial) {
        this.editorial = editorial;
    }

    public String getLugar() {
        return lugar;
    }

    public void setLugar(String ciudad,String pais) {
        this.lugar = ciudad+"("+pais+")";
    }

    public Fecha getFecha_edicion() {
        return fecha_edicion;
    }

    public void setFecha_edicion(Fecha fecha_edicion) {
        this.fecha_edicion = fecha_edicion;
    }
    
    //Método para leer la información
    public void leer(Persona p, Fecha f){
        Scanner sc=new Scanner(System.in);
        System.out.println("INGRESE LOS DATOS DEL LIBRO");
        System.out.print("Titulo: ");
        this.titulo=sc.nextLine();
        System.out.println("Datos del autor ");
        System.out.print("Nombre: ");
        p.nombre=sc.nextLine();
        System.out.print("Apellido: ");
        p.apellido=sc.nextLine();
        System.out.print("ISBN del libro: ");
        this.ISBN=sc.nextLine();
        System.out.print("Paginas: ");
        this.paginas=sc.nextInt();
        System.out.print("Edición: ");
        this.edicion=sc.nextLine();
        System.out.print("Editorial: ");
        this.editorial=sc.nextLine();
        System.out.println("Lugar ");
        System.out.print("Ciudad: ");
        String ciudad=sc.nextLine();
        System.out.print("Pais: ");
        String pais=sc.nextLine();
        this.setLugar(ciudad, pais);
        System.out.print("Fecha de edicion ");
        System.out.println("Dia de la semana: ");
        f.día_semana=sc.nextLine();
        System.out.print("Dia del mes: ");
        f.dia_mes=sc.nextInt();
        System.out.print("Mes: ");
        f.mes=sc.nextLine();
        System.out.print("Año: ");
        f.anio=sc.nextInt();
    }
    
    //Método para mostrar la información
    public void mostrar(Persona p, Fecha f){
        System.out.print("Titulo: "+this.titulo+", "+this.edicion);
        System.out.print("\nAutor: "+p.nombre+", "+p.apellido);
        System.out.print("\nISBN: "+this.ISBN+" "+this.editorial+", "+this.lugar+", "+f.día_semana+" "+f.dia_mes+" de "+f.mes+" de "+f.anio);
        System.out.print("\n"+this.paginas+" páginas");
       
    }    
}

CLASE PERSONA
package Pregunta2;

public class Persona {
    String nombre;
    String apellido;

    public Persona() {
    }
    
    public Persona(String nombre, String apellido) {
        this.nombre = nombre;
        this.apellido = apellido;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApellido() {
        return apellido;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }   
}

CLASE FECHA
package Pregunta2;

public class Persona {
    String nombre;
    String apellido;

    public Persona() {
    }
    
    public Persona(String nombre, String apellido) {
        this.nombre = nombre;
        this.apellido = apellido;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApellido() {
        return apellido;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }   
}


PREGUNTA 3:

Desarrolla una clase CD con los siguientes atributos:
a.       canciones: un array de objetos de la clase Cancion.
b.      contador: la siguiente posición libre del array canciones. y los siguientes métodos:
c.       CD(): constructor predeterminado (creará el array canciones).
d.      numeroCanciones(): devuelve el valor del contador de canciones.
e.      dameCancion(int): devuelve la Cancion que se encuentra en la posición indicada.
f.        grabaCancion(int, Cancion): cambia la Cancion de la posición indicada por la nueva Cancion               proporcionada.
g.       agrega(Cancion): agrega al final del array la Cancion proporcionada.
h.      elimina(int): elimina la Cancion que se encuentra en la posición indicada.

SOLUCIÓN

CLASE CD
package Pregunta3;

import java.util.ArrayList;

public class CD {

    int contador = 0;
    int tamaño_maximo = 20;
    ArrayList canciones  //Array de objetos de la clase Cancion

    //CD(): Costructor predeterminado(creará arrar de canciones
    public CD() {
        canciones = new ArrayList(tamaño_maximo);
    }
    
    //numeroCanciones(): Devuelve el valor del contador de canciones
    public int numeroCanciones() {
        return canciones.size();
    }

    //dameCancion(int):devuelve la Cancion que se encuentra en la posición indicada 
    public Cancion dameCancion(int i) {
        return (Cancion) canciones.get(i);
    }

    //grabaCancion(int,Cancion): cambia la Cancion de la posición indicada por la nueva Cancion proporcionada
    public void grabaCancion(int i, Cancion c) {
        canciones.set(i, c);
    }

    //agrega(Cancion): agrega al final del array la Cancion proporcionada
    public void agrega(Cancion c) {
        canciones.add(c);
    }

    //elimina(int): elimina la Cancion que se encuentra en la posición indicada.
    public void elimina(int i) {
        canciones.remove(i);
    }
  
    public void graba_Cancion(String nombre_cancion, Cancion c) {
        int estado = 0;
        for (int i = 0; i < this.numeroCanciones(); i++) {
            if (dameCancion(i).nombre.equals(nombre_cancion)) {
                estado = 1;
                grabaCancion(i, c);
            }
        }
        if (estado == 0) {
            System.out.println("Cancion no encontrada!!");
        }
    }
  
    public void eliminar_Cancion(String nombre_cancion, Cancion c) {
        int estado = 0;
        for (int i = 0; i < this.numeroCanciones(); i++) {
            if (dameCancion(i).nombre.equals(nombre_cancion)) {
                estado = 1;
                canciones.remove(c);
            }
        }

        if (estado == 0) {
            System.out.println("Cancion no encontrada");
        }
    }
}

CLASE CANCION
package Pregunta3;

public class Cancion {
    String nombre;
    int duracion;
    String autor;

    public Cancion(String nombre, int duracion, String autor) {
        this.nombre = nombre;
        this.duracion = duracion;
        this.autor = autor;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getDuracion() {
        return duracion;
    }

    public void setDuracion(int duracion) {
        this.duracion = duracion;
    }

    public String getAutor() {
        return autor;
    }

    public void setAutor(String autor) {
        this.autor = autor;
    }

    public void mostrar(){
        System.out.println("Nombre: "+this.nombre);
        System.out.println("Duracion: "+this.duracion);
        System.out.println("Autor: "+this.autor);
    }
}