Prácticas M17 Unidad Formativa 3 (18-19)
La revisió el 09:35, 5 juny 2018 per Lzabala (discussió | contribucions)
- TODO el código ha de estar comentado tal y como se ha explicado en clase y correctamente indentado, de no ser así se aplicará -2 puntos a la práctica
- Es imprescindible que la práctica compile, de no ser así la nota es un 0 automáticamente
Práctica 1: Creando clases
Fecha de entrega
- 7 de octubre de 2018 a través de Moodle
Ponderación
Esta práctica vale un 15% de la nota
Descripción
- Crea una clase llamada book que tenga los siguientes atributos: ISBN(String), title(String), authors(array String), pageNum(int), hasImages(boolean), genre(String), booksSold(int).
- Crea una clase llamada GeneradorId que contenga un método estático llamado (getId) que devuelva un id diferente (único y correlativo) cada vez que se llama.
- Crea un método estático llamado (getRandomInt) que devuelva un número entero entre 0 y 9.
- Crea un constructor por defecto que asigne los siguiente valores: ISBN = un id autogenerado y 3 números random con el formato xxx-yyy, title = no title, authors = array de 1 con el valor no author, pageNum = -1, hasImages = false, genre = no genre, booksSold = -1.
- Crea un constructor con parámetros pero ha de cumplir siempre las siguientes restricciones: pageNum ha de ser más grande 0, genre = fantasia o thriller o terror o novela histórica o divulgación científica, booksSold = 0.
- Crea un método llamado showBookInfo que imprima por pantalla toda la información del libro (cada dato en una nueva linea).
- Crea 4 libros, el primero usando el constructor por parámetros con los siguientes datos:iSBN: 978-8499890401, El tesoro cósmico, Stephen y lucy Hawking, 224 páginas, contiene imágenes, divulgación científica, ventas 10.000, los otros 3 usando el constructor por defecto.
Criterios de puntuación
- 1,5 puntos: pregunta 1
- 2 puntos pregunta 2
- 1 punto pregunta 3
- 2 puntos pregunta 4
- 2 puntos pregunta 5
- 0,5 puntos pregunta 6
- 1 punto pregunta 7
Práctica 2: Métodos, constructores y sobrecarga
Fecha de entrega
- 14 de octubre de 2018 a través de Moodle
Ponderación
Esta práctica vale un 40% de la nota
Descripción
- Crea una clase BookV2 que sea igual que la clase libro. Añade un constructor por copia, crea los getters de los atributos de la clase, crea el setter para el atributo booksSold y permite que un libro pueda tener más de un género.
- Modifica los métodos getRandomInt y getId para que devuelvan un String.
- Crea un método llamado getRandomChar que recibe un parámetro (número de carácteres) y devuelve un String con carácteres alfabéticos random. Modifica el constructor por defecto para que en el título del libro genere un String aleatorio de 8 carácteres.
- Sobrecaga el método getRandomInt pasándole un parámetro que indique el número de carácteres que ha de tener el número random generado.
- Sobrecarga el método getId con un parámetro que indique el número de carácteres que tiene que tener el Id (rellena con 0 a la izquierda para completar los carácteres) Ahora el ISBN tiene que tener el formato xxx-xxxxxxxxxx.
- Crea una clase llamada bookShop, esta clase almacenará los libros y permitirá su venta. Para almacenar los libros usaremos un Hashtable<String, Book> (Hashtable<isbn,Book>), por otro lado usaremos otro Hashtable<String, int> (Hashtable<isbn,Libros disponibles>) para guardar los libros que tenemos disponibles (lo que sería el stock).Crearemos un método llamado isBookAvailable que recibe como parámetro un String isbn y devuelve si hay stock disponible.
- En la clase bookShop crea un método llamado addBook que recibe un libro como parámetro y permite añadir un libro a la libreria.Sobrecarga el método addBook para que también permita pasar como parámetro un array de libros.
- Crea un método bookSell que recibe como parámetro un String isbn y realiza la venta del libro y devuelve un true si la venta fue correctamente o un false en caso contrario. Esto consiste en comprobar si hay disponibilidad y si hay stock, descontar el libro y aumentar el numero de libros vendidos correspondiente. Sobrecarga este para realizar una venta pero que reciba como parámetro un número no determinado de isbns. La operación de venta solo puede realizarse si TODOS los libros pueden venderse, sino no se venderá ninguno.
- Crea un programa principal para probar las clases. Crea 10 libros diferentes. Uno usando el constructor por parámetros, otro el constructor por cópia y 8 usando el constructor por defecto. Introduce los 10 libros en la librería. Como uno de ellos es una copia en la librería debería de haber 9 libros pero 10 en Stock ( uno de ellos ha de tener 2 libros disponibles). Vende 1 libro con el método bookSell. Intenta volver a vender el mismo libro. Vende 3 libros con el método bookSell sobrecargado (el de array de isbn). Intenta vender 3 libros más con el mismo método pero que 1 de ellos no tenga Stock.
Criterios de puntuación
- 1 punto:pregunta 1
- 1 punto: pregunta 2
- 1 punto: pregunta 3
- 1 punto: pregunta 4
- 1 punto: pregunta 5
- 1 punto: pregunta 6
- 1 punto: pregunta 7
- 1 punto: pregunta 8
- 2 puntos: pregunta 9
Práctica 3: Jugando con la herencia y el polimorfismo
Fecha de entrega
- 21 de octubre de 2018 a través de Moodle
Ponderación
Esta práctica vale un 45% de la nota
Descripción
- Construye una clase abstracta llamada "Vehicle" con las siguientes propiedades y métodos:
- color (String)
- numWheels (Int)
- statusWheels (Array int)
- brand (String)
- model (String)
- constructor por defecto sin parámetros: valores por defectos, numWheels = 2, statusWheels 100 cada rueda
- constructor parámetros: color, numWheels, brand, model
- método void wheelWear(Random rn) : con una probabilidad de un 60% resta 1 punto al statusWheels de cada rueda
- método abstracto void move(int kilometers)
- Sobreescribe el método toString() para imprimir toda la info del Vehículo
- Crea una clase abstracta llamada "MotorVehicle" que herede de la clase "Vehicle" con las siguientes propiedades y métodos:
- motorTipe (String) (Gasolina/Diesiel)
- isAutomatic (boolean)
- motorStatus (int)
- filterStatus (int)
- clutchStatus (int)
- método realizarRevision
Criterios de puntuación
- 2,5 puntos: pregunta 1
- 2,5 puntos pregunta 2
- 2,5 puntos pregunta 3
- 2,5 puntos pregunta 4