Guía de programación en Java > Ejercicios sobre clases
Introducción
En esta sesión, pondremos en práctica todo lo aprendido sobre la Programación Orientada a Objetos (POO). Diseñaremos y trabajaremos con clases simples como Persona
y Coche
, aplicando conceptos como constructores, campos, métodos, getters y setters. Al finalizar, serás capaz de crear tus propias clases y trabajar con objetos de manera efectiva.
Objetivos
- Diseñar clases simples en Java.
- Aplicar conceptos de POO como campos, constructores, getters y setters.
- Manipular objetos y probar su funcionalidad.
- Entender la importancia de encapsular datos.
Ejemplo 1: Clase Persona
Paso 1: Diseño de la Clase
Definiremos una clase Persona
con los siguientes campos:
nombre
(String): El nombre de la persona.edad
(int): La edad de la persona.
También incluiremos:
- Un constructor para inicializar los campos.
- Getters y setters para acceder y modificar los campos de manera controlada.
- Un método
saludar()
que imprima un saludo personalizado.
Implementación:
class Persona {
private String nombre;
private int edad;
// Constructor
public Persona(String nombre, int edad) {
this.nombre = nombre;
this.edad = edad;
}
// Getter para nombre
public String getNombre() {
return nombre;
}
// Setter para nombre
public void setNombre(String nombre) {
this.nombre = nombre;
}
// Getter para edad
public int getEdad() {
return edad;
}
// Setter para edad
public void setEdad(int edad) {
if (edad >= 0) {
this.edad = edad;
} else {
System.out.println("La edad no puede ser negativa.");
}
}
// Método saludar
public void saludar() {
System.out.println("Hola, mi nombre es " + nombre + " y tengo " + edad + " años.");
}
}
Prueba de la Clase
public class Main {
public static void main(String[] args) {
Persona persona1 = new Persona("Ana", 25);
persona1.saludar();
persona1.setEdad(30);
System.out.println("Edad actualizada: " + persona1.getEdad());
persona1.setNombre("Laura");
persona1.saludar();
}
}
Salida Esperada
Hola, mi nombre es Ana y tengo 25 años.
Edad actualizada: 30
Hola, mi nombre es Laura y tengo 30 años.
Ejemplo 2: Clase Coche
Paso 1: Diseño de la Clase
Definiremos una clase Coche
con los siguientes campos:
marca
(String): La marca del coche.modelo
(String): El modelo del coche.velocidad
(int): La velocidad actual del coche.
También incluiremos:
- Un constructor para inicializar los campos.
- Getters y setters para los campos.
- Métodos
acelerar()
yfrenar()
para modificar la velocidad.
Implementación:
class Coche {
private String marca;
private String modelo;
private int velocidad;
// Constructor
public Coche(String marca, String modelo) {
this.marca = marca;
this.modelo = modelo;
this.velocidad = 0; // Velocidad inicial
}
// Getters y Setters
public String getMarca() {
return marca;
}
public void setMarca(String marca) {
this.marca = marca;
}
public String getModelo() {
return modelo;
}
public void setModelo(String modelo) {
this.modelo = modelo;
}
public int getVelocidad() {
return velocidad;
}
public void setVelocidad(int velocidad) {
if (velocidad >= 0) {
this.velocidad = velocidad;
} else {
System.out.println("La velocidad no puede ser negativa.");
}
}
// Método acelerar
public void acelerar(int incremento) {
if (incremento > 0) {
velocidad += incremento;
System.out.println("El coche ha acelerado. Velocidad actual: " + velocidad + " km/h.");
} else {
System.out.println("El incremento debe ser positivo.");
}
}
// Método frenar
public void frenar(int decremento) {
if (decremento > 0 && velocidad - decremento >= 0) {
velocidad -= decremento;
System.out.println("El coche ha frenado. Velocidad actual: " + velocidad + " km/h.");
} else {
System.out.println("El decremento es inválido o la velocidad no puede ser negativa.");
}
}
}
Prueba de la Clase
public class Main {
public static void main(String[] args) {
Coche coche1 = new Coche("Toyota", "Corolla");
System.out.println("Marca: " + coche1.getMarca() + ", Modelo: " + coche1.getModelo());
coche1.acelerar(50);
coche1.frenar(20);
coche1.frenar(40);
}
}
Salida Esperada
Marca: Toyota, Modelo: Corolla
El coche ha acelerado. Velocidad actual: 50 km/h.
El coche ha frenado. Velocidad actual: 30 km/h.
El decremento es inválido o la velocidad no puede ser negativa.
Ejercicios Propuestos
- Clase
Libro
:- Campos:
titulo
(String),autor
(String),numPaginas
(int). - Métodos: Constructor, getters y setters, y un método
mostrarInfo()
que imprima toda la información del libro.
- Campos:
- Clase
CuentaBancaria
:- Campos:
titular
(String),saldo
(double). - Métodos: Constructor, getters y setters, y métodos
depositar(double cantidad)
yretirar(double cantidad)
.
- Campos:
- Clase
Producto
:- Campos:
nombre
(String),precio
(double),cantidadStock
(int). - Métodos: Constructor, getters y setters, y un método
actualizarStock(int cantidad)
que modifique el stock disponible.
- Campos:
Resumen
- Diseñar clases simples te ayuda a entender los fundamentos de la POO.
- Los getters y setters garantizan el control y la seguridad de los datos.
- La práctica constante con ejemplos como
Persona
oCoche
mejora tus habilidades como programador.
¡Es tu turno de practicar! ¡Crea tus propias clases y dales vida con código! 🚀
Deja una respuesta