Tuesday, February 21, 2006

Tython - Programacion Base de Objetos

Ide
===
  • Dividir un porgrama en partes independientes (clase)
  • Cada clase define un interface publico pero tambien tiene un estado interno
  • No importa al resto del sistema como la clase funciona
Ejmeplo
=====



Tarea:
====
  • Cambiar la tarea 2
  • Crear una clase con tres métodos
    • Número_Aleatorio: retorna un número 1-100
    • pregunta: Pregunta el usuario para un número
    • Jugar:juega
Solución:
======
# -*- coding: iso-8859-15 -*-
class Juego:
def numero_aleatorio(self):
from random import randint
return randint(1,100)
# Retornar número
def pregunta(self):
# Retornar número
#return = numero_aleatorio('Nuemro de 1 100')
while True:
num=raw_input("Ingrese un Nuemro 1 -100")
if num.isdigit() and int(num)<=100: return int(num) print "Ingrese un Numero Valido" def juega(self): numero = self.numero_aleatorio() intentos = 0 while True: usuario = self.pregunta() intentos = intentos + 1 if usuario == numero: print "Muy bien." print intentos, " intentos." break elif numero > usuario:
print "El número buscado es mayor"
elif numero < usuario:
print "El número buscado es menor"
j = Juego()
j.juega()
print j.pregunta()


Ejemplo de Clase:
============
# -*- coding: iso-8859-15 -*-
class Persona:
def __init__(self, nombre, apellido):
self.__nombre=nombre
self.__apelli=apellido
def getNombre(self):
return self.__nombre
def getApellido(self):
return self.__apelli
def setApellido(self,apellido):
self.__apelli=apellido
def getNombreCompleto(self):
return self.__nombre + " " + self.__apelli
def enviarCorreo(self,mensaje):
#
pass

amigos=[]
print "Por favor Ingresa los Nombres de tus Amigos"
print "Para Teminar Ingrese q!"

while True:
nombre=raw_input("Nombre: ")
if nombre=='q':
break
apellido=raw_input("Apellido: ")

pers=Persona(nombre,apellido)
amigos.append(pers)

print
print "Terminado"
for amigo in amigos:
print " - ", amigo.getNombreCompleto()

Caso Practico: Palicacion con clase
======================

Clase.py
=====
class Salon:
def __init__(self,nombre, profesor):
self.__nombre = nombre
self.__profesor = profesor
self.__estudiantes = []
def getNombre(self):
return self.__nombre
def getProfesor(self):
return self.__profesor
def anadir(self, estudiante):
self.__estudiantes.append(estudiante)
def getEstudiantes(self):
return self.__estudiantes

class Profesor:
def __init__(self,nombre):
self.__nombre = nombre
def getNombre(self):
return self.__nombre

class Estudiante:
def __init__(self,nombre):
self.__nombre = nombre
def getNombre(self):
return self.__nombre
Crear.py
=======
from clases import *

p = Profesor("Profe 1")
e1= Estudiante("Estudiante 1")
e2= Estudiante("Estudiante 2")
e3= Estudiante("Estudiante 3")

s = Salon("Salon 1", p)
s.anadir(e1)
s.anadir(e2)
s.anadir(e3)

from pickle import dump
f = open ("Salon.data", "w")
dump(s, f)
f.close()
Leer.py
======
from clases import *
from pickle import load

f = open ("Salon.data", "r")
s = load(f)
f.close()


print s.getNombre()
print 'Profe: ', s.getProfesor().getNombre()
print "Estuduiantes: "
for e in s.getEstudiantes():
print " - ",e.getNombre()
==================

0 Comments:

Post a Comment

<< Home