Prácticas M17 Unidad Formativa 3 (18-19)
La revisió el 14:32, 28 maig 2018 per Lzabala (discussió | contribucions)
- TODO el código ha de estar comentado tal y como se ha explicado en clase i correctamente indentado, de no ser así se aplicará -1 punto 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 estática llamada GeneradorId que contenga un métdodo estático que devuelva un id diferente (único y correlativo) cada vez que se llama.
- 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 dos libros, el primero con el constructor por defecto, el segundo 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.
Criterios de puntuación
- 1,5 puntos: pregunta 1
- 2 puntos pregunta 2
- 2 puntos pregunta 3
- 3 puntos pregunta 4
- 0,5 puntos pregunta 5
- 1 punto pregunta 6
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 25% de la nota
Descripción
- Crea una clase mKart con los siguientes atributos: Nombre(String), Aceleración(int), Velocidad(int), Peso(double), Manejo(int). Aceleración, velocidad, peso y manejo solo admiten valores entre 0 y 100 Crea un constructor por defecto, un constructor por parámetros y un constructor por copia. Crea 2 karts con las características que desees y un 3 kart haciendo uso del constructor por copia, después cámbiale el nombre. Crea los getters y setters para los atributos de la clase.
- Crea un método llamado info que pinte por pantalla toda la información relativa al kart.
- Crea un método llamado mejorAtributo que devuelva el atributo más alto del kart. Crea otro método llamado peorAtributo que devuelva el atributo más bajo del kart. Los dos métodos devuelven un String que es el nombre del atributo. Pon ejemplos para ver que el método funciona correctamente
- Crea un método llamado bestKart que reciba como parámetro un kart. El método ha de comparar los 4 atributos de cada kart el que tenga más atributos buenos es el mejor kart. Ha de devolver un kart. Pon ejemplos para ver que el método funciona correctamente
- Sobrecarga el método bestKart para pasarle por parámetro un número indefinido de karts y que devuelva el mejor kart. Pon ejemplos para ver que el método funciona correctamente
Criterios de puntuación
- 2 puntos: pregunta 1
- 1 puntos pregunta 2
- 2 puntos pregunta 3
- 3 puntos pregunta 4
- 2 puntos pregunta 5
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 60% de la nota
Descripción
- Vamos a crear una serie de clases que nos permitan representar ciertas interacciones de un juego de rol. Crearemos 3 clases abstractas: Clase Personaje (Atributos: Nombre, Clase, Fuerza, Resistencia, Arma, Vida, Mochila; Métodos: Atacar "método abstracto", Equipar y Desequipar), Clase Dado(Atributos: Resultado; Métodos:tirar "método abstracto"), Clase Item(Atributos:Clase, Tipo, Nombre, Modificador, Métodos: usar "método abstracto"). Crea los constructores por defecto para cada clase.
- Ahora crearemos la clase Guerrero (posee como atributo propio Armadura) y Mago(posee como atributos propios Maná y Magia. Como método propio lanzarHechizo) que heredarán de la clase personaje.Todos los personajes tienen una mochila de 10 posiciones de items. También crearemos la clase DadoD6 y DadoD10 que heredarán de la clase dado y por último las clases BolaDeFuego(Atributos: ManáNecesario, Daño), PocionDeMana y PocionDeVida que heredarán de Item.
- Crear un Guerrero (Nombre = "Geralt de Rivia", Clase = 0, Fuerza = 4, Resistencia = 4, Arma = 0, Vida = 40, Armadura = 3). Crear un Mago (Nombre = "Raistlin", Clase = 1, Fuerza = 1, Resistencia = 2, Arma = 1, Vida = 25, Maná = 30). Ahora queremos que nuestros personajes puedan equipar objetos para poder usarlos, asi que al guerrero le tendríamos que equipar con 2 pociones de vida y al mago con 1 bola de fuego, 1 poción de maná y 1 poción de vida. Equipar un item consiste en tener ese item dentro de la mochila. Desequipar un item consiste en sacarlo de la mochila. Usar un item consiste en aplicar sus efectos y luego eliminarlo de la mochila.
- NOTA:
- Poción de vida -> Clase = -1 (-1 todas las clases pueden usar este objeto), Tipo = 0 (consumible, es decir, una vez que se usa se tiene que eliminar), Nombre = "Poción de Vida", Modificador = 10
- Poción de maná -> Clase = 1 (1 solo la clase mago puede usar este objeto), Tipo = 0 (consumible, es decir, una vez que se usa se tiene que eliminar), Nombre = "Poción de Maná", Modificador = 15
- Bola de fuego -> Clase = 1 (1 solo la clase mago puede usar este objeto), Tipo = 1 (NO consumible), Nombre = "Bola de Fuego", Modificador = 0, ManaNecesario = 10, Daño = 12
- NOTA:
- Por último queremos que estos personajes se puedan atacar. Atacar consiste en lanzar tantos dados de 10 como indique el atributo fuerza del personaje, sumar ese resultado y restarlo al resultado de tirar tantos dados de 6 como indique la propiedad resistencia del personaje defensor. Hay que tener en cuenta que si el personaje tiene Armadura (ejemplo Armadura = 3) el valor de la armadura se suma al resultado de los dados de resistencia que tira el defensor. Por otro lado el mago puede atacar con arma (se aplica el método atacar) o lanzar un hechizo, en este último caso tenemos que comprobar que el personaje tiene maná suficiente para lanzar la bola de fuego el Atributo Daño es directamente el daño provocado al defensor menos su tirada de dados de 6 de resistencia (en caso de hechizos el atributo Armadura no puede usarse.
Criterios de puntuación
- 2,5 puntos: pregunta 1
- 2,5 puntos pregunta 2
- 2,5 puntos pregunta 3
- 2,5 puntos pregunta 4