PROGRAMACION Ejercicios 13 SHEILA NIETO UREÑA 1

Anuncio
PROGRAMACION
Ejercicios 13
SHEILA NIETO UREÑA
INTERFACES
 Crear un interfaz para realizar las 4 operaciones básicas de las Matemáticas.
 Crear un interfaz para cargar, ver, sumar y restar arrays.
1. Escriba un programa para una biblioteca que contenga libros y revistas.
a) Las características comunes que se almacenan tanto para las revistas como para los libros son el
código, el título y el año de publicación. Estas tres características se pasan por parámetro en el
momento de crear los objetos.
b) Los libros tienen además un atributo prestado. Los libros cuando se crean no están prestados.
c) Las revistas tienen un número. En el momento de crear las revistas se pasa el número por
parámetro.
d) Tanto las revistas como los libros deben tener (aparte de los constructores) un método toString()
que devuelve el valor de todos los atributos en una cadena de caracteres. También tienen un
método que devuelve el año de publicación y otro para el código.
e) Para prevenir posibles cambios en el programa se tiene que implementar una interfaz Prestable
con los métodos prestar(), devolver(), y prestado(). la clase Libro implementa esta interfaz.
Planteamiento:
a) Se implementa una superclase de Libro y Revista con sus características comunes, que se llama
Publicación. En esta clase además de declarar los tres atributos, se implementa un constructor que
reciba por parámetro el valor de los tres atributos. También se implementan los métodos
getAño(), getCódigo() y un método toString() que devuelve la información d estos tres atributos en
forma de cadena de texto.
b) Se implementan las clases Libro y Revista que añaden sus nuevos atributos.
c) Se escriben sus constructores, que llaman al constructor de la superclase.
d) Se sobrescribe el método toString() que también llama al método toString() de la superclase.
e) La interfaz Prestable declara los métodos indicados sin implementarlos, la clase Libro implementa
Prestable y, por tanto, todos los métodos.
1
PROGRAMACION
Ejercicios 13
SHEILA NIETO UREÑA
ejercicios13
claseInterfaz .......................................................................................................................................................3
OpBasicas........................................................................................................................................................ 3
OpMatematicas............................................................................................................................................ 3
AppMain ......................................................................................................................................................... 3
claseInterfaz2 ..................................................................................................................................................... 4
OperacionesArrays ................................................................................................................................... 4
Constante ....................................................................................................................................................4
Operaciones ................................................................................................................................................ 4
AppOp ............................................................................................................................................................. 5
ejer1 .................................................................................................................................................................... 5
Prestable ......................................................................................................................................................... 5
Publicacion......................................................................................................................................................5
Libro ................................................................................................................................................................ 6
Revista ............................................................................................................................................................6
AppMain ......................................................................................................................................................... 7
2
PROGRAMACION
Ejercicios 13
SHEILA NIETO UREÑA
claseInterfaz
OpBasicas
package claseInterfaz;
public interface OpBasicas {
public abstract int sumar (int a , int b);
void restar (int a1, int a2);
public abstract void producto (int a1, int a2);
double dividir (int a1, int a2);
}
OpMatematicas
package claseInterfaz;
import java.util.Scanner;
public class OpMatematicas implements OpBasicas {
public int sumar (int a , int b){
int suma;
suma=a+b;
return suma;
}
public void restar (int a1, int a2){
System.out.println("La resta es "+(a1-a2));
}
public void producto (int a1, int a2){
int producto;
producto=a1*a2;
System.out.println("El producto es "+producto);
}
public double dividir (int a1, int a2){
double division;
System.out.println("No es posible realizar la division por 0");
division=(double)a1/a2;
return division;
}
public int cargarValor(){
Scanner sc=new Scanner(System.in);
int valor=sc.nextInt();
sc.close();
return valor;
}
}
AppMain
package claseInterfaz;
public class AppMain {
public static void main(String[] args) {
int a, b;
OpMatematicas om= new OpMatematicas();
System.out.println("Introduce el valor de a");
a=om.cargarValor();
System.out.println("Introduce el valor de b");
b=om.cargarValor();
System.out.println("La suma es: "+om.sumar(a, b));
om.restar(a, b);
om.producto(a, b);
if(b==0)
System.out.println("No se puede calcular la division entre 0");
else
System.out.println("La division es: "+om.dividir(a, b));
}
}
3
PROGRAMACION
claseInterfaz2
Ejercicios 13
OperacionesArrays
package interfaces;
public interface OperacionesArrays {
public abstract void cargar(int tab[]);
public abstract void ver(int tab[]);
public abstract int[] suma(int tab1[], int tab2[]);
public abstract int[] resta(int tab1[], int tab2[]);
public abstract void resta(int tab1[], int tab2[], int tab3[]);
}
Constante
package interfaces;
public interface Constante {
public final int N=5;
}
Operaciones
package interfaces;
public class Operaciones implements OperacionesArrays, Constante{
public int t1[]=new int[N];
public int t2[]=new int[N];
public int t3[]=new int[N];
public Operaciones(){}
public Operaciones(int tab1[],int tab2[]){
t1=tab1;
t2=tab2;
}
}
public void cargar(int tab[]){
for (int i=0; i<N; i++)
tab[i]=(int)(Math.random()*10);
}
public void ver(int tab[]){
for (int i=0; i<N; i++)
System.out.print(tab[i]+" ");
}
public int[] suma(int tab1[], int tab2[]){
int sum[]=new int[N];
for (int i=0; i<N; i++)
sum[i]=tab1[i]+tab2[i];
return sum;
}
public int[] resta(int tab1[], int tab2[]){
int res[]=new int[N];
for (int i=0; i<N; i++)
res[i]=tab1[i]-tab2[i];
return res;
}
public void resta(int tab1[], int tab2[], int tab3[]){
for (int i=0; i<N; i++)
tab3[i]=tab1[i]-tab2[i];
for (int i=0; i<N; i++)
System.out.print(tab3[i]+" ");
}
4
SHEILA NIETO UREÑA
PROGRAMACION
Ejercicios 13
SHEILA NIETO UREÑA
AppOp
package interfaces;
public class AppOp {
}
public static void main(String[]args){
Operaciones op=new Operaciones();
op.cargar(op.t1);
op.cargar(op.t2);
System.out.print("Array 1:\t");
op.ver(op.t1);
System.out.print("\nArray 2:\t");
op.ver(op.t2);
System.out.println();
//Suma
op.t3=op.suma(op.t1, op.t2);
System.out.print("\nArray suma:\t");
op.ver(op.t3);
//Resta 1
op.t3=op.resta(op.t1, op.t2);
System.out.print("\nArray resta:\t");
op.ver(op.t3);
//Resta 2
System.out.print("\nArray resta:\t");
op.resta(op.t1, op.t2, op.t3);
}
ejer1
Prestable
package ejer1;
public interface Prestable {
void prestar();
public abstract void devolver();
/*public abstract*/ String prestado();
//por def. todos los métodos
//son públicos y abstractos, por lo que se pueden omitir al escribirlos.
}
Publicacion
package ejer1;
public class Publicacion {
protected String cod,tit;
protected short fecha;
public Publicacion (){}
public Publicacion (String codigo,String titulo,short fecha){
cod=codigo;
tit=titulo;
this.fecha=fecha;
}
public String toString() {
return "Titulo: "+tit+"\nCod: "+cod+"\nFecha publicacion: "+fecha;
}
public String getTit() {
return tit;
}
public String getCod() {
return cod;
5
PROGRAMACION
}
Ejercicios 13
}
public int getFecha() {
return fecha;
}
public void setCod(String cod) {
this.cod = cod;
}
public void setTit(String tit) {
this.tit = tit;
}
public void setFecha(short fecha) {
this.fecha = fecha;
}
Libro
package ejer1;
public class Libro extends Publicacion implements Prestable{
protected boolean prestado;
public Libro(){
super();
}
public Libro(String c,String t,short f,boolean p){
super(c,t,f);
this.prestado=p;
}
public String toString() {
return super.toString()+"\nPrestado: "+prestado;
}
public void prestar(){}
public void devolver(){}
public String prestado(){
if (getPrestado())
return super.toString()+"Libro no disponible";
else
return super.toString()+"Libro disponible";
}
public boolean getPrestado() {
return prestado;
}
}
Revista
package ejer1;
public class Revista extends Publicacion implements Prestable{
protected int num;
public Revista(){
super();
}
public Revista(String c,String t,short f,int n){
super(c,t,f);
num=n;
}
public void prestar(){}
public void devolver(){}
public String prestado(){
Libro l=new Libro();
if (l.getPrestado())
return super.toString()+"Libro no disponible";
6
SHEILA NIETO UREÑA
PROGRAMACION
Ejercicios 13
SHEILA NIETO UREÑA
else
return super.toString()+"Libro disponible";
}
}
public String toString() {
return super.toString()+"\nNº Revista: "+num;
}
public int getNum() {
return num;
}
AppMain
import java.util.Scanner;
public class AppMain {
Scanner sc;
static int op,libro,revis;
Libro t[]=new Libro[3];
Revista tab[]=new Revista[2];
//
//
//
//
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
AppMain a=new AppMain();
//1ª parte
Libro l1=new Libro("B612","La Metarmorfosis",1915,false);
// ¿¿??
l1.toString();
Revista r1=new Revista("B613","El Buscon",1626,false); // ¿¿??
r1.toString();
//2ª parte - MENU
System.out.print("¿Cuantos libros tienes? ");
libro=sc.nextInt();
System.out.print("¿Cuantas revistas tienes? ");
revis=sc.nextInt();
a.menu();
sc.close();
}
public void menu(){
sc=new Scanner(System.in);
do{
do{
System.out.print("\nMENU:\n1. REGISTRAR LIBRO\n2. REGISTRAR REVISTA\n"
+ "3. VISUALIZAR COLECCION\n0. SALIR\n
Introduce una opcion: ");
op=sc.nextInt();
}while (op<0 || op>3);
switch (op) {
case 1:
cargarLibro(t);
break;
case 2:
cargarRevis(tab);
break;
case 3:
verLibros(t);
verRevis(tab);
break;
case 0:
System.out.println("¡HASTA PRONTO!");
break;
}
}while(op!=0);
}
7
PROGRAMACION
}
Ejercicios 13
public void cargarLibro(Libro t[]){
sc=new Scanner(System.in);
Libro l=new Libro();
int c=0;
for(int i=0;i<t.length;i++)
if (t[i]==null)
c++;
if (c>0){
System.out.print("Introduce codigo del libro: ");
l.cod=sc.nextLine();
System.out.print("Introduce titulo: ");
l.tit=sc.nextLine();
System.out.print("Introduce año de publicacion: ");
l.fecha=sc.nextShort();
sc.nextLine();
t[t.length-c]=new Libro(l.tit,l.cod,l.fecha, false);
System.out.println();
}else
System.out.println("No se pueden introducir mas libros");
}
public void cargarRevis(Revista tab[]){
sc=new Scanner(System.in);
Revista r=new Revista();
int c=0;
for(int i=0;i<tab.length;i++)
if (tab[i]==null)
c++;
if (c>0){
System.out.print("Introduce codigo de la revista: ");
r.cod=sc.nextLine();
System.out.print("Introduce titulo: ");
r.tit=sc.nextLine();
System.out.print("Introduce año de publicacion: ");
r.fecha=sc.nextShort();
System.out.print("Introduce nº de revista: ");
r.num=sc.nextInt();
sc.nextLine();
tab[tab.length-c]=new Revista(r.tit,r.cod,r.fecha,r.num);
System.out.println();
}else
System.out.println("No se pueden introducir mas libros");
}
public void verLibros(Libro t[]){
System.out.println("\nLISTADO LIBROS");
if(t[0]==null)
System.out.println("
No hay libros");
else
for (int i=0;i<t.length;i++)
if (t[i]!=null)
System.out.print(t[i]+"\n");
}
public void verRevis(Revista tab[]){
System.out.println("\nLISTADO REVISTAS");
if(tab[0]==null)
System.out.println("
No hay revistas");
else
for (int i=0;i<tab.length;i++)
if (t[i]!=null)
System.out.print(tab[i]+"\n");
}
8
SHEILA NIETO UREÑA
Descargar