Enero_2015 Definitivo Solucionado

Páginas: 7 (1508 palabras) Publicado: 15 de octubre de 2015
1:53

Programación Orientada a Objetos
9 de enero de 2015

APELLIDOS:
GRADO:
DNI:

NOMBRE:
FIRMA:
Duración: 2:30h
CALIFICACIÓN:

Ejercicio 1. [5 puntos] En una biblioteca los libros están colocados en estanterías siguiendo el diagrama
UML que se muestra a continuación:
Se pide implementar en Java:
La clase Biblioteca [2 puntos], Estantería [2 puntos] y Libro [1 punto] sabiendo que:

Que la claseBiblioteca tiene los métodos:
visualizarLibrosPorEstanterias(), que muestre por pantalla las estanterías ordenadas
alfabéticamente (por ubicación) y los libros de cada una de ellas.
eliminarEstanteria(Estanteria e) que elimina la estantería pasada, siempre y cuando
la estantería no tenga libros.
aniadirEstanteria (Estanteria e) que añade una nueva estantería a la biblioteca.
Que la claseEstanteria tiene los métodos:
guardarLibros(String ruta), que reciba el nombre de un archivo (un String) y escriba
uno a uno en un fichero binario todos los libros de la estantería
visualizarMayores(int p)que muestra por pantalla los libros cuyo precio es mayor que p.
aniadirLibro (Libro l) que añade un nuevo libro a la estantería.
Dos libros se consideran iguales si tienen el mismo título y el mismoautor.
NOTA: Solo debe implementar un constructor por clase, con todos los atributos. NO se deben

implementar los métodos get() ni set()aunque se usen.


A modo de ayuda, se recuerda el nombre de algunas de las clases, métodos y excepciones relacionadas
con la E/S: FileOutputStream, ObjectOutputStream, writeObject(), IOException,

POSIBLE SOLUCION (usando conjuntos para evitar duplicados enestanterías y en libros)
import
import
import
import

java.io.FileOutputStream;
java.io.IOException;
java.io.ObjectOutputStream;
java.util.HashSet;

/**
*
* @author IHernan
*/
import java.io.Serializable;

import java.util.Objects;
/**
*
* @author IHernan
*/
public class Libro implements Serializable{ //implementa Serializable para guardar
private String titulo;
private String autor;
private doubleprecio;
public Libro(String titulo, String autor, double precio) {
this.titulo = titulo;
this.autor = autor;
this.precio = (precio>0)?precio:0;
}
@Override
public boolean equals(Object obj) {
boolean resul;
if (obj == null) {
resul = false;
}
else if (getClass() != obj.getClass()) {
resul = false;
}
else {
Libro other = (Libro) obj;
resul = (this.titulo.equalsIgnoreCase(other.titulo)) &&(this.autor.equalsIgnoreCase(other.autor)));
}
}
return resul;
}
@Override
public int hashCode() {
int hash = 3;
hash = 59 * hash + Objects.hashCode(this.titulo);
hash = 59 * hash + Objects.hashCode(this.autor);
return hash;
}
@Override
public String toString() {
return "titulo= " + titulo + ", autor= " + autor + ", precio= " + precio + '}';
}
public double getPrecio() {
return this.precio;
}
}

public classEstanteria1

{

private HashSet libros; //conjunto no ordenado de libros.
private String ubicacion;
public Estanteria1(HashSet libros, String ubicacion) {
if (libros != null) {
this.libros = libros;
} else {
this.libros = new HashSet();
}
this.ubicacion = ubicacion;
}

public HashSet getLibros() {
return this.libros;

Pág. 2 / 8

}
public boolean aniadirLibro(Libro l) {return this.libros.add(l);
}
public void visualizarMayores(int p) {
System.out.println("Los libros de la estanteria de precio mayor que " + p +
"son:");
for (Libro l : this.libros) {
if (l.getPrecio() > p) {
System.out.println(l);
}
}
}
public void guardarLibros(String ruta) {
try {
FileOutputStream out = new FileOutputStream(ruta);
ObjectOutputStream so = new ObjectOutputStream(out);
for (Libro l :this.libros) {
so.writeObject(l);
}
so.close();
} catch (IOException ex) {
System.out.println("Error en la escritura del fichero");
}
}
@Override
public boolean equals(Object obj) {
boolean resul;
if (obj == null) {
resul = false;
}
else if (getClass() != obj.getClass()) {
resul = false;
}
else {
Estanteria other = (Estanteria) obj;
resul = this.ubicacion.equalsIgnoreCase(other.ubicacion);
}...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Solución definitiva al Malware
  • Guía SOLUCIONES DEFINITIVA
  • Definitivo
  • Definitivo
  • Definitivo
  • solucion
  • soluciones
  • solucion

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS