Metatérminos

    Objeto

    En la programación orientada a objetos (POO), un objeto es una instancia de una clase, que es una plantilla o un modelo que define un conjunto de atributos (propiedades) y métodos (comportamientos). Los objetos combinan datos y funcionalidad en una sola entidad, facilitando la organización y manipulación del código. 

    Conceptos fundamentales 

    • Clase: Una clase es una definición de un tipo de objeto. Actúa como un molde para crear objetos, especificando qué datos y comportamientos tendrán. Por ejemplo, una clase Coche podría tener atributos como color, marca y modelo, y métodos como arrancar(), frenar(), y acelerar(). 

    • Instancia: Una instancia es una ocurrencia concreta de una clase. Cuando creas un objeto, estás creando una instancia de una clase. Por ejemplo, miCoche = Coche() crea un objeto miCoche que es una instancia de la clase Coche. 

    • Atributos: Son las propiedades o datos que se almacenan en un objeto. En el caso del objeto miCoche, los atributos podrían ser color: rojo, marca: Toyota, modelo: Corolla. 

    • Métodos: Son funciones o procedimientos asociados a un objeto que pueden realizar acciones utilizando los atributos del objeto o modificar sus valores. Por ejemplo, miCoche.arrancar() podría cambiar el estado del coche a “encendido”. 

    Características de los objetos 

    • Encapsulamiento: Los objetos encapsulan datos y métodos, protegiendo los datos de acceso directo desde fuera del objeto y permitiendo su manipulación solo a través de métodos definidos. Esto ayuda a mantener la integridad de los datos y facilita el mantenimiento del código. 

    • Herencia: Permite que una clase derive de otra, heredando sus atributos y métodos, y pudiendo añadir nuevos o modificar los existentes. Por ejemplo, CocheElectrico podría heredar de Coche y añadir un atributo batería y un método cargar(). 

    • Polimorfismo: Habilidad de utilizar métodos de la misma manera en diferentes objetos, incluso si esos métodos pertenecen a diferentes clases. Esto permite que objetos de diferentes clases se traten de forma unificada. Por ejemplo, si Coche y Moto ambos tienen un método mover(), puedes llamar vehiculo.mover() sin preocuparte si vehiculo es un Coche o una Moto. 

    • Abstracción: Permite trabajar con conceptos de alto nivel, ocultando los detalles complejos de implementación. Esto se logra mediante la definición de clases y objetos que representan entidades del mundo real o conceptos abstractos. 

    Ejemplo de objeto con Python

    Considera un sistema para gestionar una biblioteca. Podrías tener una clase Libro con los siguientes atributos y métodos: 

    Código Python: 

    class Libro: 

        def __init__(self, titulo, autor, isbn): 

            self.titulo = titulo 

            self.autor = autor 

            self.isbn = isbn 

            self.prestado = False 

     

        def prestar(self): 

            if not self.prestado: 

                self.prestado = True 

                print(f'El libro {self.titulo} ha sido prestado.') 

            else: 

                print(f'El libro {self.titulo} ya está prestado.') 

     

        def devolver(self): 

            if self.prestado: 

                self.prestado = False 

                print(f'El libro {self.titulo} ha sido devuelto.') 

            else: 

                print(f'El libro {self.titulo} no estaba prestado.') 

    Aquí, Libro es una clase que define cómo se representan los libros en el sistema. Los atributos son título, autor, isbn y prestado, mientras que los métodos prestar() y devolver() gestionan el estado de préstamo del libro. 

    Para usar esta clase, crearías instancias (objetos) de Libro: 

    Código Python: 

    libro1 = Libro('1984', 'George Orwell', '1234567890') 

    libro2 = Libro('Brave New World', 'Aldous Huxley', '0987654321') 

    libro1.prestar()  # Salida: El libro 1984 ha sido prestado. 

    libro1.prestar()  # Salida: El libro 1984 ya está prestado. 

    libro1.devolver() # Salida: El libro 1984 ha sido devuelto.