terminal

codeando_simple

terminal

menu

terminal

search_module

guest@codeandosimple: ~/system/search $ grep -r "" .

Press [ENTER] to execute search

Status

Engine: Ready

Database: Online

Index: V2.1.0_LATEST

bash — cat poo-caso-estudio.md
guest@codeandosimple: ~/blog/poo $ cat caso-estudio.md

Caso de Estudio_

// "He fallado una y otra vez a lo largo de mi vida. Es por eso por lo que he tenido éxito" - Michael Jordan

Este capítulo tiene como objetivo reforzar el entendimiento de la Programación Orientada a Objetos (POO) a través de un caso de estudio, ejemplo práctico del mundo real.

# Caso de estudio: Sistema de Biblioteca Simple

Consideremos un sistema de biblioteca simple. Este sistema necesita gestionar libros, miembros y préstamos.

Vamos a ver cómo los conceptos de POO se aplican aquí.

Clase Libro:

// Clase que representa un libro en la biblioteca
public class Libro {
    private String titulo;
    private String autor;
    private String isbn;

    // Constructor de la clase Libro
    public Libro(String titulo, String autor, String isbn) {
        this.titulo = titulo;
        this.autor = autor;
        this.isbn = isbn;
    }

    // Getters
    public String getTitulo() {
        return titulo;
    }

    public String getAutor() {
        return autor;
    }

    public String getIsbn() {
        return isbn;
    }

    // Setters
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public void setAutor(String autor) {
        this.autor = autor;
    }

    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }
}

Clase Miembro:

import java.util.List;
import java.util.ArrayList;

// Clase que representa a un miembro de la biblioteca
public class Miembro {
    private String nombre;
    private String id;
    private List<Libro> librosPrestados;

    // Constructor de la clase Miembro
    public Miembro(String nombre, String id) {
        this.nombre = nombre;
        this.id = id;
        this.librosPrestados = new ArrayList<>();
    }

    // Método para prestar un libro al miembro
    public void prestarLibro(Libro libro) {
        librosPrestados.add(libro);
    }

    // Getters
    public String getNombre() {
        return nombre;
    }

    public String getId() {
        return id;
    }

    public List<Libro> getLibrosPrestados() {
        return librosPrestados;
    }

    // Setters
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public void setId(String id) {
        this.id = id;
    }
}

Clase Biblioteca:

import java.util.List;
import java.util.ArrayList;

// Clase que representa la biblioteca
public class Biblioteca {
    private List<Libro> librosDisponibles;
    private List<Miembro> miembros;

    // Constructor de la clase Biblioteca
    public Biblioteca() {
        this.librosDisponibles = new ArrayList<>();
        this.miembros = new ArrayList<>();
    }

    // Método para agregar un libro a la biblioteca
    public void agregarLibro(Libro libro) {
        librosDisponibles.add(libro);
    }

    // Método para registrar un nuevo miembro en la biblioteca
    public void registrarMiembro(Miembro miembro) {
        miembros.add(miembro);
    }

    // Métodos adicionales para gestionar préstamos, devoluciones, etc.

    // Getters
    public List<Libro> getLibrosDisponibles() {
        return librosDisponibles;
    }

    public List<Miembro> getMiembros() {
        return miembros;
    }
}

En este ejemplo simple, podemos ver cómo la POO facilita la gestión y organización del sistema:

  • Encapsulamiento: Cada clase (Libro, Miembro, Biblioteca) encapsula sus propios datos y comportamientos.

  • Abstracción: Las operaciones complejas, como prestar o devolver libros, se abstraen detrás de métodos.

  • Reutilización: Las clases pueden ser reutilizadas y extendidas para crear sistemas más complejos.

# Conclusiones

Aplicamos conceptos de POO para construir un sistema de biblioteca, hemos visto cómo la abstracción, el encapsulamiento y la reutilización de código facilitan la creación de software estructurado y mantenible.

ANTERIOR
arrow_back Manejo de Errores
NIVEL COMPLETADO
Fin de la Serie auto_awesome