Maricela Ocaña
Programacion Paralela y Distribuida
Programacion Paralela y Distribuida
Cinco
programas fáciles de entender con POO y Python
Objeto
y Clase
Un
objeto es una entidad que agrupa un estado y una funcionalidad relacionadas. El
estado del objeto se define a través de variables llamadas atributos, mientras
que la funcionalidad se modela a través de funciones a las que se les conoce
con el nombre de métodos del objeto.
Una
clase, por otro lado, no es más que una plantilla genérica a partir de la cuál
instanciar los objetos; plantilla que es la que define qué atributos y métodos
tendrán los objetos de esa clase.
En
Python las clases se definen mediante la palabra clave class seguida del nombre
de la clase, dos puntos (:) y a continuación, indentado, el cuerpo de la clase.
Herencia múltiple
Una
clase puede heredar de varias clases a la vez; basta con enumerar las clases de
las que se hereda separándolas por comas. En el caso de que alguna de las clases
padre tuviera métodos con el mismo nombre y número de parámetros las clases sobrescribirían
la implementación de los métodos de las clases más a su derecha en la definición.
Encapsulación
La
encapsulación se refiere a impedir el acceso a determinados métodos y atributos
de los objetos estableciendo así qué puede utilizarse desde fuera de la clase.
En
Python no existen los modificadores de acceso, y lo que se suele hacer es que
el acceso a una variable o función viene determinado por su nombre: si el
nombre comienza con dos guiones bajos (y no termina también con dos guiones
bajos) se trata de una variable o función privada, en caso contrario es
pública.
En
el siguiente ejemplo sólo se imprimirá la cadena correspondiente al
método
publico(), mientras que al intentar llamar al método __privado() Python lanzará
una excepción de que no existe (existe, pero no lo podemos ver porque es
privado).
Encapsulación
y empleo de Getters y Setters
En
ocasiones también puede suceder que queramos permitir el acceso a algún
atributo de nuestro objeto, pero que este se produzca de forma controlada. Para
esto podemos escribir métodos cuyo único cometido sea este, métodos que
normalmente, por convención, tienen nombres como getVariable y setVariable; de
ahí que se conozcan también con el nombre de getters y setters.
Ahora
un ejercicio más completo utilizando clases, instancias y método constructor.
#Maricela
Ocaña Martínez
#Objetivo:
POO con Python
#Fecha:
29/Ago/2015
#
-*- coding: utf-8 -*-
class
ModeloDePresupuesto:
# Datos comerciales
titulo = "PRESUPUESTO"
encabezado_nombre = "Eugenia
Bahit"
encabezado_web =
"www.eugeniabahit.com.ar"
encabezado_email =
"mail@mail.com"
# Datos impositivos
alicuota_iva = 21
# Propiedades relativas al formato
divline = "="*80
# Setear los datos del cliente
def set_cliente(self):
self.empresa = raw_input('\tEmpresa: ')
self.cliente = raw_input('\tNombre del
cliente: ')
# Setear los datos básicos del presupuesto
def set_datos_basicos(self):
self.fecha = raw_input('\tFecha: ')
self.servicio =
raw_input('\tDescripción del servicio: ')
importe = raw_input('\tImporte bruto:
$')
self.importe = float(importe)
self.vencimiento = raw_input('\tFecha
de caducidad: ')
# Calcular IVA
def calcular_iva(self):
self.monto_iva =
self.importe*self.alicuota_iva/100
# Calcula el monto total del presupuesto
def calcular_neto(self):
self.neto = self.importe+self.monto_iva
# Armar el presupuesto
def armar_presupuesto(self):
"""
Esta función se encarga de armar
todo el presupuesto
"""
txt = '\n'+self.divline+'\n'
txt += '\t'+self.encabezado_nombre+'\n'
txt += '\tWeb Site:
'+self.encabezado_web+' | '
txt += 'E-mail:
'+self.encabezado_email+'\n'
txt += self.divline+'\n'
txt += '\t'+self.titulo+'\n'
txt += self.divline+'\n\n'
txt += '\tFecha: '+self.fecha+'\n'
txt += '\tEmpresa: '+self.empresa+'\n'
txt += '\tCliente: '+self.cliente+'\n'
txt += self.divline+'\n\n'
txt += '\tDetalle del servicio:\n'
txt += '\t'+self.servicio+'\n\n'
txt += '\tImporte: $%0.2f | IVA:
$%0.2f\n' % (
self.importe,
self.monto_iva)
txt += '-'*80
txt += '\n\tMONTO TOTAL: $%0.2f\n' %
(self.neto)
txt += self.divline+'\n'
print txt
# Método constructor
def __init__(self):
print self.divline
print "\tGENERACION DEL
PRESUPUESTO"
print self.divline
self.set_cliente()
self.set_datos_basicos()
self.calcular_iva()
self.calcular_neto()
self.armar_presupuesto()
#
Instanciar clase
presupuesto
= ModeloDePresupuesto()
Para más dudas consulta el Tutorial de Python 'Python para todos' y 'Maestros del Web'.
No hay comentarios:
Publicar un comentario