Java / Clases / Programación Orientada a Objetos (POO)
Programación orientada a objetos (POO) en Java
¿Qué es la Programación Orientada a Objetos?
Programar “orientado a objetos” significa organizar el programa pensando en cosas del mundo real. En lugar de escribir una lista larga de instrucciones, piensas en qué “cosas” hay en tu programa, qué características tienen y qué pueden hacer.
Por ejemplo, en el mundo de las motos hay motos, pilotos, carreras, etc., y cada una tiene características (marca, cilindrada, velocidad) y acciones (acelerar, frenar, arrancar)
Clases y Objetos
Una clase es como el plano de fábrica de una moto. Describe cómo será, pero no es una moto real.
Un objeto es cada moto fabricada a partir de ese plano. Puedes fabricar muchas, y cada una es independiente.
Veamos un ejemplo de Clase:
1
2
3
4
5
6
7
8
9
10
public class Moto{
String marca; // Característica o atributo
int cilindrada; // Característica o atributo
int velocidad; // Característica o atributo
void acelerar(){ // Acción o método
velocidad = velocidad + 10;
System.out.println(marca + " va a " + velocidad + " km/h");
}
}
voidsignifica “este método no devuelve nada”. Todo método en Java indica, justo antes de su nombre, qué tipo de dato entrega cuando termina:
void: métodos que hacen algo y no devuelven nada, comoacelerar().int,String,boolean…: métodos que responden algo y lo devuelven conreturn.
Ahora “fabricamos” motos concretas (objeto):
1
2
3
4
5
6
7
8
9
10
11
Moto moto1 = new Moto(); // moto1 es ahora un Objeto
moto1.marca = "Honda";
moto1.cilindrada = 650;
Moto moto2 = new Moto(); // moto2 es ahora un Objeto
moto2.marca = "Yamaha";
moto2.cilindrada = 900;
moto1.acelerar(); // Honda va a 10 km/h
moto1.acelerar(); // Honda va a 20 km/h
moto2.acelerar(); // Yamaha va a 10 km/h
newsignifica “fabrica una moto nueva con este plano”. Fíjate en que acelerar la Honda no afecta a la Yamaha, porque cada moto tiene sus propios datos.
Constructor
Rellenar los datos uno a uno es incómodo. El constructor es un método especial que se ejecuta al crear la moto y se llama igual que la clase:
1
2
3
4
5
6
7
8
9
10
11
public class Moto{
String marca;
int cilindrada;
int velocidad;
public Moto(String marca, int cilindrada){
this.marca = marca;
this.cilindrada = cilindrada;
this.velocidad = 0; // toda moto nueva empieza parada
}
}
1
Moto moto1 = new Moto("Honda", 650); // mucho más cómodo
this.marcasignifica “la marca de esta moto”, para no confundirla con el parámetro que se llama igual.
