Guía de Estudio: Introducción a Clases y Objetos PDF

Summary

Este documento es una guía de estudio sobre introducción a las clases y objetos en la programación orientada a objetos (POO) usando el lenguaje de programación Python. Explica conceptos básicos, incluye ejemplos, y tiene secciones para la creación de objetos y clases personalizadas. También incluye ejercicios.

Full Transcript

## Guía de Estudio: Introducción a Clases y Objetos ### ¿Qué es la Programación Orientada a Objetos (POO)? La Programación Orientada a Objetos (POO) es un paradigma de programación que organiza el código en objetos, que son instancias de clases. Este enfoque nos permite estructurar nuestros progra...

## Guía de Estudio: Introducción a Clases y Objetos ### ¿Qué es la Programación Orientada a Objetos (POO)? La Programación Orientada a Objetos (POO) es un paradigma de programación que organiza el código en objetos, que son instancias de clases. Este enfoque nos permite estructurar nuestros programas de una manera que se asemeja más a cómo pensamos sobre el mundo real. Definición: Un paradigma de programación es un estilo fundamental de programación que define cómo se estructura y organiza el código. ### Conceptos Básicos: Clases y Objetos #### ¿Qué es una Clase? Una clase es como un plano o una plantilla para crear objetos. Define las propiedades (atributos) y comportamientos (métodos) que tendrán los objetos creados a partir de ella. Definición: Una clase es una estructura que encapsula datos y funciones que operan sobre esos datos. #### ¿Qué es un Objeto? Un objeto es una instancia de una clase. Es una entidad concreta creada a partir del "plano" que es la clase. Definición: Un objeto es una instancia específica de una clase que tiene sus propios datos y puede realizar acciones definidas por su clase. ### 1. Introducción a Objetos En Python, todo es un objeto. Los objetos son una forma de organizar y estructurar nuestro código de manera que represente conceptos del mundo real. Antes de profundizar en la creación de nuestros propios objetos, veamos un ejemplo de un objeto incorporado en Python: la cadena (string). ```python # Creamos una cadena s = "Soy una cadena" # Imprimimos el tipo de s print(type(s)) # Imprimimos todos los atributos y métodos de la clase str print(dir(str)) ``` Explicación: - Creamos una variable `s` y le asignamos una cadena. - `type(s)` nos dirá que `s` es de tipo `str`, que es la clase de las cadenas en Python. - `dir(str)` nos muestra todos los atributos y métodos disponibles para los objetos de tipo cadena. #### Ejercicio: Intenta lo siguiente y observa qué sucede: 1. Añade la línea `print(s.add_("!"))` 2. Añade la línea `print(s._sizeof__())` 3. Añade la línea `print(s.startswith("S"))` ### 2. Vocabulario Importante - **Clase:** Es como un plano o molde que define qué datos y qué acciones tendrá un objeto. - **Objeto:** Es una instancia específica de una clase. Si la clase es el molde, el objeto es el pastel que sale de ese molde. - **Instancia:** Otra forma de decir objeto. Decimos que un objeto es una instancia de una clase. - **Instanciación:** El proceso de crear un objeto a partir de una clase. ### 3. Creando Nuestras Propias Clases Vamos a crear una clase simple llamada `Actor`: ```python class Actor: pass print(Actor) ``` Explicación: - Usamos la palabra clave `class` para definir una clase. - Por convención, los nombres de las clases en Python comienzan con mayúscula. - `pass` es una instrucción que no hace nada, la usamos aquí como un marcador de posición. ### 4. Añadiendo Atributos Podemos añadir atributos a nuestros objetos usando la notación de punto: ```python class Actor: pass helen = Actor() helen.nombre = "Helen" helen.apellido = "Mirren" print(helen.nombre, helen.apellido) ``` Explicación: - Añadimos dos atributos a `helen`: `nombre` y `apellido`. - Podemos acceder a estos atributos usando la notación de punto: `helen.nombre`. #### Ejercicio: 1. Añade un atributo `peliculas_totales` con el valor `80`. 2. Añade un atributo `peliculas_notables` con el valor `"La Reina", "La Locura del Rey Jorge", "Gosford Park"`. 3. Imprime `helen`. ¿Qué ves? ### 5. El Constructor Añadir atributos uno por uno puede ser tedioso. Para esto, usamos el método constructor `__init__`: ```python class Actor: """Define la clase Actor""" def __init__(self): self.nombre = "Helen" self.apellido = "Mirren" self.cumpleanos = "26 de julio" self.peliculas_totales = 80 self.nominaciones_oscar = 4 self.victorias_oscar = 1 helen = Actor() print(helen.nombre, helen.apellido) ``` Explicación: - `__init__` es un método especial que se llama cuando creamos un nuevo objeto. - `self` se refiere al objeto que estamos creando. - Definimos los atributos usando `self.nombre_atributo`. #### Ejercicio: 1. Añade una línea que imprima: "El cumpleaños de {nombre} {apellido} es {cumpleanos}." 2. Calcula y imprime el porcentaje de veces que Helen ha ganado un Oscar cuando ha sido nominada. ### 6. Constructor con Parámetros Podemos hacer nuestra clase más flexible permitiendo que se pasen parámetros al crear un objeto: ```python class Actor: """Define la clase Actor""" def __init__(self, nombre, apellido, cumpleanos, peliculas_totales, nominaciones_oscar, victorias_oscar): self.nombre = nombre self.apellido = apellido self.cumpleanos = cumpleanos self.peliculas_totales = peliculas_totales self.nominaciones_oscar = nominaciones_oscar self.victorias_oscar = victorias_oscar helen = Actor("Helen", "Mirren", "26 de julio", 80, 4, 1) tom = Actor("Tom", "Hanks", "9 de julio", 76, 5, 2) print(helen.nombre, helen.apellido) print(tom.nombre, tom.apellido) ``` Explicación: - Ahora podemos crear diferentes actores pasando diferentes valores. - Esto hace nuestra clase más flexible y reutilizable. #### Ejercicio: Crea un objeto `Actor` para tu actor o actriz favorito/a. ### 7. Parámetros por Defecto Podemos dar valores por defecto a algunos parámetros: ```python class Actor: """Define la clase Actor""" def __init__(self, nombre, apellido, cumpleanos, peliculas_totales, nominaciones_oscar=0, victorias_oscar=0): self.nombre = nombre self.apellido = apellido self.cumpleanos = cumpleanos self.peliculas_totales = peliculas_totales self.nominaciones_oscar = nominaciones_oscar self.victorias_oscar = victorias_oscar helen = Actor("Helen", "Mirren", "26 de julio", 80, 4, 1) dwayne = Actor("Dwayne", "Johnson", "2 de mayo", 34) print (f' {helen.nombre} ha ganado {helen.victorias_oscar} Oscar(s).') print (f'{dwayne.nombre} ha ganado {dwayne.victorias_oscar} Oscar(s).') ``` Explicación: - Damos valores por defecto a `nominaciones_oscar` y `victorias_oscar`. - Esto nos permite crear actores sin especificar estos valores si no los conocemos o si son cero. ### 8. Atributos de Clase Los atributos de clase son compartidos por todas las instancias de la clase: ```python class Actor: """Define la clase Actor""" sindicato = "Sindicato de Actores de Pantalla" def __init__(self, nombre, apellido, cumpleanos, peliculas_totales, nominaciones_oscar=0, victorias_oscar=0): self.nombre = nombre self.apellido = apellido self.cumpleanos = cumpleanos self.peliculas_totales = peliculas_totales self.nominaciones_oscar = nominaciones_oscar self.victorias_oscar = victorias_oscar helen = Actor("Helen", "Mirren", "26 de julio", 80, 4, 1) dwayne = Actor ("Dwayne", "Johnson", "2 de mayo", 34) print (f" {helen.nombre} {helen.apellido} es miembro de {helen.sindicato}.") print (f" {dwayne.nombre} {dwayne.apellido} es miembro de {dwayne.sindicato}.") ``` Explicación: - `sindicato` es un atributo de clase, compartido por todas las instancias. - Podemos acceder a él usando `Actor.sindicato` o `instancia.sindicato`. ### 9. Resumen - Las clases son plantillas para crear objetos. - Los objetos son instancias de clases. - Usamos `__init__` para inicializar los atributos de un objeto. - Podemos tener atributos de instancia (diferentes para cada objeto) y atributos de clase (compartidos por todos los objetos). ### 10. Preguntas de Autoevaluación 1. ¿Qué es una clase en Python? 2. ¿Cuál es la diferencia entre una clase y un objeto? 3. ¿Para qué se usa el método `__init__`? 4. ¿Qué es `self` en el contexto de una clase? 5. ¿Cuál es la diferencia entre un atributo de instancia y un atributo de clase? ### 11. Creando más Clases Vamos a crear una clase simple para entender mejor estos conceptos. Imagina que queremos representar un perro en nuestro programa. ```python class Perro: def __init__(self, nombre, edad): self.nombre = nombre self.edad = edad def ladrar(self): print(f"{self.nombre} dice: ¡Guau!") # Creando un objeto de la clase Perro mi_perro = Perro ("Firulais", 3) # Usando el objeto print (f"Mi perro se llama {mi_perro.nombre} y tiene {mi_perro.edad} años.") mi_perro.ladrar() ``` Explicación del código: 1. `class Perro:` - Esto define una nueva clase llamada `Perro`. 2. `def __init__(self, nombre, edad):` - Este es el método constructor. Se llama automáticamente cuando creamos un nuevo objeto. `self` se refiere al objeto que se está creando. 3. `self.nombre = nombre` `self.edad = edad` - Esto establece los atributos `nombre` y `edad` del objeto. 4. `def ladrar(self):` - Este es un método de la clase. Define un comportamiento que pueden realizar los objetos de tipo `Perro`. 5. `mi_perro = Perro("Firulais", 3)` - Esto crea un nuevo objeto `Perro` y lo asigna a la variable `mi_perro`. 6. Las últimas dos líneas muestran cómo acceder a los atributos y métodos del objeto. ### 12. Atributos y Métodos #### 12.1 Atributos Los atributos son variables que pertenecen a un objeto. Representan las características o propiedades del objeto. ```python class Estudiante: def __init__(self, nombre, edad, carrera): self.nombre = nombre self.edad = edad self.carrera = carrera # Creando un objeto Estudiante estudiante1 = Estudiante ("Ana", 28, "Ingeniería de Sistemas") # Accediendo a los atributos print(f"Nombre: {estudiante1.nombre}") print (f"Edad: {estudiante1.edad}") print (f"Carrera: {estudiante1.carrera}") ``` #### 12.2 Métodos Los métodos son funciones que pertenecen a una clase. Definen las acciones que pueden realizar los objetos de esa clase. ```python class Calculadora: def sumar(self, a, b): return a + b def restar(self, a, b): return a - b # Creando un objeto Calculadora mi_calc = Calculadora () # Usando los métodos resultado_suma = mi_calc.sumar(5,3) resultado_resta = mi_calc.restar (10, 4) print (f"Suma: {resultado_suma}") print (f"Resta: {resultado_resta}") ``` ### 13. Ejercicio Práctico Crea una clase llamada `Libro` que tenga los siguientes atributos: `titulo`, `autor` y `año_publicacion`. Añade un método llamado `informacion` que imprima todos los detalles del libro. Luego, crea dos objetos de la clase `Libro` y muestra su información. ```python class Libro: def __init__(self, titulo, autor, año_publicacion): self.titulo = titulo self.autor = autor self.año_publicacion = año_publicacion def informacion(self): print (f"Título: {self.titulo}") print (f"Autor: {self.autor}") print (f"Año de publicación: {self.año_publicacion}") # Creando objetos Libro libro1 = Libro ("Don Quijote", "Miguel de Cervantes", 1605) libro2 = Libro ("Cien años de soledad", "Gabriel García Márquez", 1967) # Mostrando información de los libros print("Información del primer libro:") libro1.informacion() print("\nInformación del segundo libro:") libro2.informacion() ``` ### 14. Preguntas de Autoevaluación 1. ¿Qué es una clase en programación orientada a objetos? 2. ¿Cuál es la diferencia entre una clase y un objeto? 3. ¿Qué es un método constructor y para qué se utiliza? 4. ¿Cómo se accede a los atributos de un objeto en Python? 5. ¿Qué es `self` en una clase de Python y por qué es importante?

Use Quizgecko on...
Browser
Browser