Soluciones ejercicio 1
Alumno.java
package orientacionobjetos;
import java.util.Objects;
public class Alumno {
private String nombre;
private String apellidos;
private String email;
private int edad;
private String telefono;
public Alumno() { }
public Alumno(String nombre, String apellidos, String email, int edad, String telefono) {
super();
this.nombre = nombre;
this.apellidos = apellidos;
this.email = email;
this.edad = edad;
this.telefono = telefono;
}
public Alumno(String nombre, String apellidos, int edad) {
this.nombre = nombre;
this.apellidos = apellidos;
this.edad = edad;
}
// También así
/*public Alumno(String nombre, String apellidos, int edad) {
this(nombre, apellidos, null, edad, null);
}*/
public String getNombre() {
return nombre;
}
public String getApellidos() {
return apellidos;
}
public String getEmail() {
return email;
}
public int getEdad() {
return edad;
}
public String getTelefono() {
return telefono;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}
public void setEmail(String email) {
this.email = email;
}
public void setEdad(int edad) {
this.edad = edad;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
public boolean esMayorEdad() {
return (edad >= 18);
}
@Override
public int hashCode() {
return Objects.hash(apellidos, edad, email, nombre, telefono);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Alumno other = (Alumno) obj;
return Objects.equals(apellidos, other.apellidos) && edad == other.edad && Objects.equals(email, other.email)
&& Objects.equals(nombre, other.nombre) && Objects.equals(telefono, other.telefono);
}
@Override
public String toString() {
return "Alumno [nombre=" + nombre + ", apellidos=" + apellidos + ", email=" + email + ", edad=" + edad
+ ", telefono=" + telefono + "]";
}
}
App.java
package orientacionobjetos;
public class App {
public static void main(String[] args) {
Alumno a1 = new Alumno();
a1.setNombre("Jose");
a1.setApellidos("García López");
a1.setEdad(14);
a1.setEmail("jose.garcia@centroeducativo.com");
System.out.println(a1);
Alumno a2 = new Alumno("María", "Fernández Martín", 17);
a2.setEmail("maria.fernandez@centroeducativo.com");
a2.setTelefono("600123456");
System.out.println(a2);
System.out.println("La alumna %s %s %s mayor de edad"
.formatted(
a2.getNombre(),
a2.getApellidos(),
a2.esMayorEdad() ? "sí" : "no" ));
if (a1.equals(a2))
System.out.println("Son el mismo objeto");
else
System.out.println("No son el mismo objeto");
}
}
Soluciones ejercicio 2
package orientacionobjetos;
public class App {
public static void main(String[] args) {
var alumnos = new Alumno[5];
alumnos[0] = new Alumno("José", "García López", 14);
alumnos[1] = new Alumno("María", "Fernández Martín", 17);
alumnos[2] = new Alumno("Raúl", "Miraflores Redondo", 11);
alumnos[3] = new Alumno("Lucía", "Muñoz Seco", 16);
alumnos[4] = new Alumno("Antonio", "De la Cruz Serón", 19);
// Por defecto, el alumno más joven será el primero de todos.
int posicionMasJoven = 0;
for(int i = 1; i < alumnos.length; i++) {
// Versión más larga.
//Alumno a1 = alumnos[posicionMasJoven];
//Alumno a2 = alumnos[i];
//if (a1.getEdad() > a2.getEdad())
// posicionMasJoven = i;
// Versión reducida, aunque el efecto es el mismo.
if (alumnos[posicionMasJoven].getEdad() > alumnos[i].getEdad())
posicionMasJoven = i;
}
Alumno joven = alumnos[posicionMasJoven];
System.out.println("El alumno más joven es %s %s con %d años"
.formatted(joven.getNombre(), joven.getApellidos(), joven.getEdad()));
}
}
Soluciones ejercicio 3
Producto.java
package orientacionobjetos;
import java.util.Objects;
public class Producto {
private long codigo;
private String nombre;
private String descripcion;
private double precio;
public Producto() { }
public Producto(long codigo, String nombre, String descripcion, double precio) {
this.codigo = codigo;
this.nombre = nombre;
this.descripcion = descripcion;
this.precio = precio;
}
public long getCodigo() {
return codigo;
}
public void setCodigo(long codigo) {
this.codigo = codigo;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public double getPrecio() {
return precio;
}
public void setPrecio(double precio) {
this.precio = precio;
}
public String precioLiteral() {
String resultado;
if (precio > 0 && precio < 1.0)
resultado = "GANGA";
else if (precio >= 1.0 && precio < 10)
resultado = "NORMAL";
else
resultado = "LUJO";
return resultado;
}
@Override
public int hashCode() {
return Objects.hash(codigo, descripcion, nombre, precio);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Producto other = (Producto) obj;
return codigo == other.codigo && Objects.equals(descripcion, other.descripcion)
&& Objects.equals(nombre, other.nombre)
&& Double.doubleToLongBits(precio) == Double.doubleToLongBits(other.precio);
}
@Override
public String toString() {
return "Producto [codigo=" + codigo + ", nombre=" + nombre + ", descripcion=" + descripcion + ", precio="
+ precio + "]";
}
}
App.java
package orientacionobjetos;
public class App {
public static void main(String[] args) {
Producto p1 = new Producto(1234l, "Ordenador portátil", "Magnífico ordenador portátil para programar", 599.99);
Producto p2 = new Producto(2345l, "Monitor 24", "Estupendo monitor para programar", 199.99);
System.out.println(p1.precioLiteral());
System.out.println(p2.precioLiteral());
}
}
Soluciones ejercicio 4
Personaje.java
package orientacionobjetos;
import java.util.Arrays;
import java.util.Objects;
public class Personaje {
private String nombre;
private int puntosVida;
private long puntos;
private String[] mochila;
private int elementosEnMochila;
public Personaje() {
this.puntos = 0;
this.puntosVida = 100;
this.mochila = new String[10];
this.elementosEnMochila = 0;
}
public Personaje(String nombre) {
this();
this.nombre = nombre;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public int getPuntosVida() {
return puntosVida;
}
public void setPuntosVida(int puntosVida) {
this.puntosVida = puntosVida;
}
public long getPuntos() {
return puntos;
}
public void setPuntos(long puntos) {
this.puntos = puntos;
}
public String[] getMochila() {
return mochila;
}
public int getElementosEnMochila() {
return elementosEnMochila;
}
public int addElementoToMochila(String elemento) {
if (elementosEnMochila == 10)
System.out.println("YA NO PUEDES CONSEGUIR MÁS ELEMENTOS PUES TU MOCHILA ESTÁ COMPLETA");
else
mochila[elementosEnMochila] = elemento;
return ++elementosEnMochila;
}
public int recibirGolpe(int puntosGolpe) {
this.puntosVida -= puntosGolpe;
if (this.puntosVida < 0)
this.puntosVida = 0;
return this.puntosVida;
}
// Falta reasignar el array y decrementar elementosEnMochila
public int usarBotiquin() {
boolean tieneBotiquin = false;
if (elementosEnMochila > 0) {
for(int i = 0; i < elementosEnMochila && !tieneBotiquin; i++) {
if (mochila[i] == "BOTIQUIN") {
tieneBotiquin = true;
this.puntosVida += 10;
if (this.puntosVida > 100)
this.puntosVida = 100;
// Reasignar resto de elementos del array
mochila[i] = null;
for(int x = i+1; x < elementosEnMochila; x++) {
mochila[x-1] = mochila[x];
}
elementosEnMochila--;
mochila[elementosEnMochila] = null;
}
}
}
if (tieneBotiquin == false)
System.out.println("LO SIENTO, PERO NO TIENES NINGUNA POCIÓN DE BOTIQUÍN");
return this.puntosVida;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + Arrays.hashCode(mochila);
result = prime * result + Objects.hash(elementosEnMochila, nombre, puntos, puntosVida);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Personaje other = (Personaje) obj;
return elementosEnMochila == other.elementosEnMochila && Arrays.equals(mochila, other.mochila)
&& Objects.equals(nombre, other.nombre) && puntos == other.puntos && puntosVida == other.puntosVida;
}
@Override
public String toString() {
return "Personaje [nombre=" + nombre + ", puntosVida=" + puntosVida + ", puntos=" + puntos + ", mochila="
+ Arrays.toString(mochila) + ", elementosEnMochila=" + elementosEnMochila + "]";
}
}
App.java
package orientacionobjetos;
public class App {
public static void main(String[] args) {
Personaje p1 = new Personaje("Harry Potter");
p1.recibirGolpe(15);
System.out.println(p1);
p1.usarBotiquin();
p1.addElementoToMochila("VARITA");
p1.addElementoToMochila("BOTIQUIN");
p1.addElementoToMochila("EXPECTO PATRONUM");
p1.usarBotiquin();
System.out.println(p1);
}
}