Diferència entre revisions de la pàgina «Prácticas M17 Unidad Formativa 3 (18-19)»
Salta a la navegació
Salta a la cerca
Línia 65: | Línia 65: | ||
* método abstracto void move(int kilometers) | * método abstracto void move(int kilometers) | ||
* Sobreescribe el método toString() para imprimir toda la info del Vehículo | * Sobreescribe el método toString() para imprimir toda la info del Vehículo | ||
+ | Esta clase representa un vehículo genérico (una bici, un monopatín, un coche, un trator...) | ||
</li> | </li> | ||
<li>Crea una clase abstracta llamada "MotorVehicle" que herede de la clase "Vehicle" con las siguientes propiedades y métodos: | <li>Crea una clase abstracta llamada "MotorVehicle" que herede de la clase "Vehicle" con las siguientes propiedades y métodos: | ||
Línia 72: | Línia 73: | ||
* filterStatus (int) | * filterStatus (int) | ||
* clutchStatus (int) | * clutchStatus (int) | ||
− | * método | + | * performRevision (boolean) |
+ | * constructor por defecto sin parámetros: valores por defectos,motorTipe = "Gasolina", isAutomatic = false, motorStatus, filterStatus, clutchStatus = 100, performRevision = false | ||
+ | * constructor parámetros: color, numWheels, brand, model | ||
+ | * constructor parámetros: color, numWheels, brand, model, motorTipe, isAutomatic | ||
+ | * Sobreescribir el método move(int kilometers): Cada kilometro tenemos que comprobar si es necesiria la revisión, si es nesaria actualizamos la variable correspondiente, además calculamos el desgaste de ruedas, motor, filtro y embrague (el embrague siempre que no sea automatico). | ||
+ | * El desgaste del filtro y el motor tiene una probabilidad de un 40% de restar 1 punto al status correspondiente, mientras que el embrague tiene una probabilidad de un 20% de restar 1 al status. (Crea las funciones de desgate necesarias) | ||
+ | * La revisión es necesaria si filtros, ruedas o motor estan por debajo de 40. (Crea la función necesaria) | ||
+ | * método abstracto void revision | ||
+ | * Sobreescribe el método toString() para imprimir toda la info del Vehículo a motor | ||
+ | Esta clase representa un vehículo a motor genérico (una moto, un coche, un trator...) | ||
+ | |||
</li> | </li> | ||
<li></li> | <li></li> |
Revisió del 10:07, 5 juny 2018
- 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)
- performRevision (boolean)
- constructor por defecto sin parámetros: valores por defectos,motorTipe = "Gasolina", isAutomatic = false, motorStatus, filterStatus, clutchStatus = 100, performRevision = false
- constructor parámetros: color, numWheels, brand, model
- constructor parámetros: color, numWheels, brand, model, motorTipe, isAutomatic
- Sobreescribir el método move(int kilometers): Cada kilometro tenemos que comprobar si es necesiria la revisión, si es nesaria actualizamos la variable correspondiente, además calculamos el desgaste de ruedas, motor, filtro y embrague (el embrague siempre que no sea automatico).
- El desgaste del filtro y el motor tiene una probabilidad de un 40% de restar 1 punto al status correspondiente, mientras que el embrague tiene una probabilidad de un 20% de restar 1 al status. (Crea las funciones de desgate necesarias)
- La revisión es necesaria si filtros, ruedas o motor estan por debajo de 40. (Crea la función necesaria)
- método abstracto void revision
- Sobreescribe el método toString() para imprimir toda la info del Vehículo a motor
Criterios de puntuación
- 2,5 puntos: pregunta 1
- 2,5 puntos pregunta 2
- 2,5 puntos pregunta 3
- 2,5 puntos pregunta 4