[go: up one dir, main page]

0% encontró este documento útil (0 votos)
240 vistas12 páginas

Tarea 2 Programacion

El documento presenta una serie de ejercicios de programación orientada a objetos en Python, incluyendo la creación de clases como Persona, Banco, Animal, Usuario, Rectángulo y Producto, cada una con atributos y métodos específicos. Además, se discuten conceptos fundamentales de la programación orientada a objetos como encapsulamiento, abstracción y la importancia de la organización del código para el mantenimiento y escalabilidad de proyectos de software. Se incluyen ejemplos prácticos y preguntas orientadoras que refuerzan la comprensión de estos conceptos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
240 vistas12 páginas

Tarea 2 Programacion

El documento presenta una serie de ejercicios de programación orientada a objetos en Python, incluyendo la creación de clases como Persona, Banco, Animal, Usuario, Rectángulo y Producto, cada una con atributos y métodos específicos. Además, se discuten conceptos fundamentales de la programación orientada a objetos como encapsulamiento, abstracción y la importancia de la organización del código para el mantenimiento y escalabilidad de proyectos de software. Se incluyen ejemplos prácticos y preguntas orientadoras que refuerzan la comprensión de estos conceptos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 12

Universidad Nacional Abierta y a Distancia

Estudiante: Rosa Gómez Noriega

Docente: Yahith Gutiérrez

ECBTI
Programa: Ingeniería de Sistemas
Curso: Programación
Grupo 213023_4
Grupo de ejercicios 1

Primer ejercicio

• Crear una clase llamada Persona con atributos nombre y edad, e inicialízalos con valores
predeterminados.

class Persona:
def __init__(self, nombre="Rosa", edad=34):
self.nombre = nombre
self.edad = edad

def mostrar_datos(self):
print(f"Nombre: {self.nombre}")
print(f"Edad: {self.edad}")

# Metodo para datos por consola


nombre = (input("Digite el nombre:"))
edad = int(input("Digite la edad:"))

# crear instancia

Foto
Segundo ejercicio

• Crear una clase Banco con un atributo saldo. Añadir métodos para depositar y retirar cierta
cantidad.

class Banco:
def __init__(self, saldo=0):
self.saldo = saldo

def depositar(self, cantidad):


if cantidad > 0:
self.saldo += cantidad
print(f"Depósito exitoso. Saldo actual: {self.saldo}")
else:
print("La cantidad a depositar debe ser positiva.")

def retirar(self, cantidad):


if 0 < cantidad <= self.saldo:
self.saldo -= cantidad
print(f"Retiro exitoso. Saldo actual: {self.saldo}")
else:
print("Fondos insuficientes o cantidad no válida.")
# Metodo para datos por consola
saldo = int(input("Digite la saldo:"))
cantidad = int(input("Digite la cantidad:"))

Foto
Tercer ejercicio

• Crear una clase abstracta Animal que tenga un método hacer_sonido. Luego, crear clases Perro y
Gato que hereden de Animal e implementen hacer_sonido.

class Animal:

def hacer_sonido(self):
pass

# Clase Perro
class Perro(Animal):
def hacer_sonido(self):
return "Guau Guau"

# Clase Gato
class Gato(Animal):
def hacer_sonido(self):
return "Miau"

# Metodo para datos por consola


gato= (input("mostrar sonido :"))
hacer_sonido= (input("mostrar sonido :"))
Foto
Cuarto ejercicio

• Encapsulamiento y métodos estáticos: Crear una clase Usuario con un atributo


privado_password. Añadir un método para cambiar la contraseña solo si se ingresa
correctamente la actual.

class Usuario:
def __init__(self, nombre, password):
self.nombre = nombre
self.__password = password # Atributo privado

def cambiar_password(self, password_actual, nuevo_password):


"""Cambia la contraseña solo si la actual es correcta."""
if self.__password == password_actual:
self.__password = nuevo_password
print("Contraseña actualizada correctamente.")
else:
print("Error: La contraseña actual es incorrecta.")

@staticmethod
def validar_password(password):
"""Verifica si la contraseña es segura (mínimo 6
caracteres)."""
return len(password) >= 6
# Crear un usuario
usuario1 = Usuario("Juan", "clave123")

# Intentar cambiar la contraseña con una incorrecta


usuario1.cambiar_password("claveIncorrecta", "nuevaClave456")

# Cambiar la contraseña correctamente


usuario1.cambiar_password("clave123", "nuevaClave456")

# Verificar si la nueva contraseña es válida


print("¿Es válida la nueva contraseña?",
Usuario.validar_password("nuevaClave456"))

Foto
Quinto ejercicio

• Crea una clase Rectángulo que tenga dos atributos, ancho y alto. Incluye un método área que
calcule y devuelva el área del rectángulo, y un método perímetro que devuelva el perímetro. Crea
una instancia de Rectángulo y muestra su área y perímetro.

class Rectangulo:
def __init__(self, ancho, alto):
self.ancho = ancho
self.alto = alto

def area(self):
return self.ancho * self.alto

def perimetro(self):
return 2 * (self.ancho + self.alto)

# Crear una instancia de Rectangulo


rectangulo1 = Rectangulo(5, 10)

# Mostrar resultados en consola


print(f"Área del rectángulo: {rectangulo1.area()}")
print(f"Perímetro del rectángulo: {rectangulo1.perimetro()}")
Foto

Sexto ejercicio

• Crea una clase Producto que tenga los atributos nombre, precio, stock, y descuento
(inicialmente en 0). Agrega métodos aplicar_descuento(porcentaje) que ajuste el precio en función
del porcentaje de descuento dado, y actualizar_stock(cantidad) que modifique el stock según la
cantidad (positiva o negativa). También, crea un método descripcion que devuelva una cadena con
toda la información del producto. Crea varios productos, aplícales descuentos y actualiza su stock.

class Producto:
def __init__(self, nombre, precio, stock, descuento=0):
self.nombre = nombre
self.precio = precio
self.stock = stock
self.descuento = descuento

def aplicar_descuento(self, porcentaje):


"""Aplica un descuento al precio del producto."""
if 0 <= porcentaje <= 100:
self.descuento = porcentaje
self.precio *= (1 - porcentaje / 100)
else:
print("Porcentaje de descuento inválido.")
def actualizar_stock(self, cantidad):
"""Actualiza el stock sumando o restando la cantidad dada."""
if self.stock + cantidad >= 0:
self.stock += cantidad
else:
print("No hay suficiente stock disponible.")

def descripcion(self):
"""Devuelve una descripción completa del producto."""
return f"Producto: {self.nombre}, Precio: ${self.precio:.2f},
Stock: {self.stock}, Descuento: {self.descuento}%"

# Crear varios productos


producto1 = Producto("Laptop", 1200, 10)
producto2 = Producto("Smartphone", 800, 15)
producto3 = Producto("Auriculares", 100, 30)

# Aplicar descuentos
producto1.aplicar_descuento(10) # 10% de descuento
producto2.aplicar_descuento(5) # 5% de descuento
producto3.aplicar_descuento(15) # 15% de descuento

# Actualizar stock
producto1.actualizar_stock(-2) # Vender 2 laptops
producto2.actualizar_stock(-5) # Vender 5 smartphones
producto3.actualizar_stock(10) # Recibir 10 auriculares nuevos

# Mostrar información de los productos en consola


print(producto1.descripcion())
print(producto2.descripcion())
print(producto3.descripcion())

Foto
Preguntas orientadora

1. ¿Cómo contribuyen las clases y objetos a la organización del código en un proyecto de


software, y por qué es importante esta organización para el mantenimiento y escalabilidad del
mismo?

Las clases y objetos son fundamentales en la programación orientada a objetos (POO). Las clases
actúan como plantillas que definen atributos y métodos, mientras que los objetos son instancias
concretas de estas clases. Esta estructura permite modularizar el código, facilitando su
comprensión y gestión. Al dividir un proyecto en clases y objetos, se promueve la reutilización del
código y se evita la duplicidad, siguiendo el principio DRY ("Don't Repeat Yourself"). Esta
organización es esencial para el mantenimiento, ya que permite localizar y corregir errores de
manera más eficiente. Además, facilita la escalabilidad del software, ya que se pueden añadir
nuevas funcionalidades sin alterar significativamente el código existente

2. ¿De qué manera los métodos dentro de una clase permiten encapsular la funcionalidad y
facilitar la reutilización del código en diferentes partes de un programa? Proporciona un ejemplo
que ilustre esta relación.

El encapsulamiento es un principio de la POO que consiste en ocultar los detalles internos de una
clase y exponer solo lo necesario a través de métodos públicos. Esto protege los datos y asegura
que solo se manipulen mediante las interfaces definidas, evitando accesos indebidos o
modificaciones accidentales. Al encapsular la funcionalidad dentro de métodos, se promueve la
reutilización del código, ya que estos métodos pueden ser invocados en diferentes partes del
programa sin necesidad de reescribir la lógica.

3. ¿Por qué es fundamental la abstracción en la programación orientada a objetos, y cómo


ayuda a los desarrolladores a enfocarse en la lógica del problema sin preocuparse por los
detalles de implementación?

La abstracción es un concepto clave en la POO que permite a los desarrolladores centrarse en las
características esenciales de un objeto, ignorando los detalles innecesarios. Al utilizar la
abstracción, se pueden crear interfaces o clases abstractas que definen métodos y propiedades
comunes, dejando la implementación específica a las clases derivadas. Esto facilita la gestión de la
complejidad en sistemas de software, ya que los desarrolladores pueden trabajar con
representaciones simplificadas de los objetos, enfocándose en la lógica del problema sin distraerse
con las particularidades de la implementación.

Por ejemplo, en un sistema de gestión de vehículos, se puede crear una clase abstracta Vehiculo
con métodos como arrancar() y detener(). Las clases concretas Coche y Moto heredarían de
Vehiculo e implementarían estos métodos según sus especificaciones, permitiendo a los
desarrolladores interactuar con objetos de tipo Vehiculo sin preocuparse por cómo cada tipo de
vehículo implementa dichas funciones.
Referencia

 Dueñas Meza, J. M., Valdés Benjumea, J. J., & Rodríguez Niño, M. C. (2021). Didáctica para
el aprendizaje de algoritmos (19 - 23). Sello Editorial
UNAD. https://doi.org/10.22490/9789586517799

También podría gustarte