Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

POO en Python

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 10

Capítulo 2.

Introducción a la
POO en Python
Raúl José Palma Mendoza

Fuente: Goodrich, M., Tamassia, R., & Goldwasser, M (2013). Data structures and algorithms in
Python
Clases y Objetos

Una clase es simplemente un molde para crear un objeto.

Un molde describe todas las características de un objeto sin llegar a serlo.

A partir de un molde es posible crear un número ilimitado de objetos.

Ejemplos:

Clase Objetos

Estudiante Juan Pérez, Nro de Cuenta: 20001001234


Automóvil Toyota Corrolla 2010, Placa: 5467
País Honduras
En Python todas las variables que podemos crear pertenecen a un clase.
Ejemplo de Clase: CreditCard

class CreditCard:
"""Una tarjeta de credito"""

def __init__(self, customer, bank, acnt, limit):


"""El balance inicial es cero.
customer nombre del cliente (ej.:, 'John Bowman')
bank nombre del banco (ej.:, 'California Savings')
acnt número de la tarjeta (ej.:, '5391 0375 9387 5309')
limit límite de crédito
"""
self._customer = customer
self._bank = bank
self._account = acnt
self._limit = limit
self._balance = 0
Ejemplo de Clase: CreditCard

def get_customer(self):
return self._customer

def get_bank(self):
return self._bank

def get_account(self):
return self._account

def get_limit(self):
return self._limit

def get_balance(self):
return self._balance
Ejemplo de Clase: CreditCard

def charge(self, price):


"""Realiza un cargo a la tarjeta.

Retorna True si el cargo fue procesado y Falso sino.


"""
if price + self._balance > self._limit:
return False
else:
self._balance += price
return True

def make_payment(self, amount):


"""Recibe un pago del cliente."""
self._balance -= amount
Ejemplo de Clase: CreditCard

wallet = []
wallet.append(CreditCard('John Bowman', 'California Savings',
'5391 0375 9387 5309', 2500) )
wallet.append(CreditCard('John Bowman', 'California Federal',
'3485 0399 3395 1954', 3500) )
wallet.append(CreditCard('John Bowman', 'California Finance',
'5391 0375 9387 5309', 5000) )

for val in range(1, 17):


wallet[0].charge(val)
wallet[1].charge(2*val)
wallet[2].charge(3*val)
Ejemplo de Clase: CreditCard

for c in range(3):
print('Customer =', wallet[c].get_customer())
print('Bank =', wallet[c].get_bank())
print('Account =', wallet[c].get_account())
print('Limit =', wallet[c].get_limit())
print('Balance =', wallet[c].get_balance())
while wallet[c].get_balance() > 100:
wallet[c].make_payment(100)
print('New balance =', wallet[c].get_balance())
print()
Herencia

La herencia nos permite reutilizar el código al organizar las clases utilizando un


jerarquía que va desde las más generales a las más específicas. La relación que
se establece entre las clases se puede definir como del tipo "es-un". En el
ejemplo vemos que un gato "es-un" mamífero y un mamífero "es-un" animal.
Ejemplo Herencia: AbusiveCreditCard

import CreditCard

class AbusiveCreditCard(CreditCard):
"""Una tarjeta de crédito abusiva."""
def __init__(self, customer, bank, acnt, limit, apr):
"""El balance inicial es cero.
customer nombre del cliente (ej.:, 'John Bowman')
bank nombre del banco (ej.:, 'California Savings')
acnt número de la tarjeta (ej.:, '5391 0375 9387 5309')
limit límite de crédito
apr tasa de porcentaje anual (ej.:, 0.0825 for 8.25% APR)
"""
super().__init__(customer, bank, acnt, limit)
self._apr = apr
Ejemplo Herencia: AbusiveCreditCard

def charge(self, price):


success = super().charge(price)
if not success:
self._balance += 5
return success

def process_month(self):
if self._balance > 0:
monthly_factor = pow(1 + self._apr, 1/12)
self._balance *= monthly_factor

También podría gustarte