4 Conceptos Generales de la POO
La Programación Orientada a Objetos (POO) es un paradigma de programación que organiza el código en torno a “objetos” que representan entidades del mundo real. La POO permite una estructura modular, reutilizable y escalable, haciendo el código más fácil de entender y mantener.
4.1 Principios Fundamentales de la POO
La POO se basa en cuatro principios clave: Clases y Objetos, Encapsulación, Herencia y Polimorfismo. A continuación, veremos cada uno en detalle.
4.2 1 Clases y Objetos
4.2.1 Clases
Una clase es una plantilla o modelo que define las propiedades y comportamientos de un tipo de objeto. Es como un plano que describe cómo debe ser un objeto.
public class Persona { // NOMBRE DE LA CLASE
String nombre; // ATRIBUTO
int edad;
public void presentarse() { // METODO
System.out.println("Hola, soy " + nombre + " y tengo " + edad + " años.");
}
}
4.2.2 Objetos
Un objeto es una instancia concreta de una clase. Cuando se crea un objeto, se asigna un espacio en memoria y se puede interactuar con sus atributos y métodos.
public class Main {
public static void main(String[] args) {
= new Persona();
Persona persona .nombre = "Ana";
persona.edad = 25;
persona.presentarse();
persona}
}
En este ejemplo, persona
es un objeto de la clase Persona
con atributos nombre
y edad
.
4.3 2. Encapsulación
La encapsulación consiste en restringir el acceso directo a ciertos datos de un objeto, protegiendo sus atributos para que solo se modifiquen a través de métodos específicos.
4.3.1 Ejemplo de Encapsulación
class Persona {
public String nombre;
private int edad;
public Persona(String nombre) {
this.nombre = nombre;
}
public String getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
}
En este caso, el atributos nombre
es público y edad
es privados, y solo se pueden acceder mediante los métodos getEdad()
y setEdad()
.
4.4 3 Herencia
La herencia permite que una clase (subclase) herede atributos y métodos de otra clase (superclase), permitiendo reutilizar código y extender funcionalidades.
Ejemplo de Herencia
class Animal {
public String nombre;
public Animal (String nombre){
this.nombre = nombre;
}
public void sonido() {
System.out.println("El animal hace un sonido");
}
}
class Perro extends Animal {
@Override
public void sonido() {
System.out.println("El perro ladra");
}
}
Aquí, Perro
es una subclase de Animal
y hereda el atributo nombre y su método sonido()
, que luego sobrescribimos (@verride) para proporcionar un comportamiento específico.
5 Polimorfismo
El polimorfismo permite que objetos de diferentes clases respondan al mismo método de formas distintas, aumentando la flexibilidad del código.
5.0.1 Ejemplo de Polimorfismo
class Animal {
public void sonido() {
System.out.println("El animal hace un sonido");
}
}
class Perro extends Animal {
public void sonido() {
System.out.println("El perro ladra");
}
}
class Gato extends Animal {
public void sonido() {
System.out.println("El gato maúlla");
}
}
public class Main {
public static void main(String[] args) {
= new Perro();
Animal miAnimal .sonido();
miAnimal}
}
En este ejemplo, el método sonido()
se comporta de manera distinta dependiendo del tipo de objeto (Perro
o Gato
) que lo invoque.