Programación Orientada a Objetos: Conceptos Esenciales con Ejemplos Prácticos
Programación Orientada a Objetos (POO): Conceptos Fundamentales
1. Conceptos Básicos
Definición: La POO modela el mundo real usando objetos que tienen datos (atributos) y comportamientos (métodos).
Ejemplo:
class Persona {
String nombre;
int edad;
void saludar() {
System.out.println("Hola, soy " + nombre);
}
}
// Creación y uso de un objeto
Persona p = new Persona();
p.nombre = "Ana";
p.edad = 25;
p.saludar(); // Imprime: Hola, soy Ana
2. Clases y Objetos
Clase: Es un molde o plantilla (por ejemplo, la clase Coche).
Objeto: Es una instancia de una clase.
Ejemplo:
class Coche {
String modelo;
}
// Creación de un objeto
Coche miCoche = new Coche();
miCoche.modelo = "Toyota";
System.out.println("Modelo: " + miCoche.modelo);
3. Encapsulación
Definición: Consiste en ocultar los datos internos de una clase (usando private
) y exponerlos mediante métodos get y set.
Ejemplo:
class Cuenta {
private double saldo;
public double getSaldo() {
return saldo;
}
public void setSaldo(double s) {
saldo = s;
}
}
// Uso de encapsulación
Cuenta c = new Cuenta();
c.setSaldo(1000);
System.out.println("Saldo: " + c.getSaldo());
4. Constructores
Función: Inicializan los objetos al crearlos.
Tipos:
- Por defecto: Sin parámetros.
- Parametrizado: Reciben valores específicos.
Ejemplo:
class Libro {
String titulo;
// Constructor por defecto
Libro() {
titulo = "Desconocido";
}
// Constructor parametrizado
Libro(String t) {
titulo = t;
}
}
Libro libro1 = new Libro();
Libro libro2 = new Libro("Java Básico");
System.out.println("Libro1: " + libro1.titulo); // Desconocido
System.out.println("Libro2: " + libro2.titulo); // Java Básico
5. Métodos
Definición: Son funciones que definen el comportamiento de una clase.
Ejemplo:
class Calculadora {
int sumar(int a, int b) {
return a + b;
}
}
Calculadora calc = new Calculadora();
System.out.println("Suma: " + calc.sumar(5, 3)); // Imprime: 8
6. Herencia
Concepto: Permite que una clase (subclase) herede atributos y métodos de otra (superclase).
Ejemplo:
class Animal {
void hacerSonido() {
System.out.println("Sonido animal");
}
}
class Perro extends Animal {
// Se redefine el método de la superclase
@Override
void hacerSonido() {
System.out.println("Guau");
}
}
Perro p = new Perro();
p.hacerSonido(); // Imprime: Guau
7. Polimorfismo
Definición: Permite que una variable de tipo superclase referencie objetos de subclases y se invoque el método sobrescrito.
Ejemplo:
Animal a = new Perro();
a.hacerSonido(); // Imprime: Guau (ejecuta el método de Perro)
8. Abstracción
Objetivo: Enfocarse en lo esencial, ocultando detalles innecesarios. Se logra mediante clases abstractas o interfaces.
Ejemplo:
abstract class Figura {
abstract double area();
}
class Rectangulo extends Figura {
double ancho, alto;
Rectangulo(double a, double h) {
ancho = a;
alto = h;
}
@Override
double area() {
return ancho * alto;
}
}
Figura f = new Rectangulo(5, 4);
System.out.println("Área: " + f.area()); // Imprime: 20.0