poo python

Download POO Python

If you can't read please download the document

Upload: radicaled

Post on 15-Jun-2015

5.276 views

Category:

Documents


8 download

TRANSCRIPT

Grupo CABUNTU Programacin Orientada a Objetos con Python

Guillermo Morales RadicalEd Universidad Cooperativa de Colombia

Licencia GNU/GFDL

http://www.gnu.org/copyleft/fdl.html http://es.wikipedia.org/wiki/Licencia_de_documentaci%C3%B3n_libre_de_GNU

Presentacin del grupo CABUNTU

INDICE

Definicin Wikipedia sobre POO :P Conceptos sobre POO El lenguaje de programacin Python Clases (para no ir a la escuela)

Rematando (pero no vendiendo) Las excepciones tambin son clases Metaclases (clases de clases)

Type() la madre de las metaclases

Atributos Mtodos Abstraccin Herencia Polimorfismo Encapsulamiento

Preguntas Enlaces

Presentacin del grupo CABUNTUCabuntu es un grupo de entusiastas amantes del software libre y del sistema operativo GNU/Linux Ubuntu; creado a finales del ao 2008 por Jhon Galindo, un Diseador Grfico que paso de utilizar programas propietarios a usar solo Software Libre. Nos gusta participar en eventos importantes que tengan que ver con la temtica del grupo, poder difundir Ubuntu y sobre todo la cultura libre.

DEFINICION EN LA WIKIPEDIA SOBRE POOLa Programacin Orientada a Objetos (POO u OOP segn sus siglas en ingls) es un paradigma de programacin que usa objetos y sus interacciones para disear aplicaciones y programas de computadora. Est basado en varias tcnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se populariz a principios de la dcada de 1990. Actualmente son muchos los lenguajes de programacin que soportan la orientacin a objetos.

El lenguaje de programacin

Python es un lenguaje de programacin desarrollado por Gido Van Rossum en 1991, el nombre del lenguaje fue inspirado en el grupo de cmicos ingleses Monty Python y no en la serpiente constrictora, es similar a Perl. Se trata de un lenguaje interpretado o de script, con tipado dinmico, fuertemente tipado, multiplataforma y orientado a objetos.

Zen de Python por Tim Peters

Bello es mejor que feo. Explcito es mejor que implcito. Simple es mejor que complejo. Complejo es mejor que complicado. Plano es mejor que anidado. Ralo es mejor que denso. La legibilidad cuenta. Los casos especiales no son tan especiales como para quebrantar las reglas. Aunque lo prctico gana a la pureza. Los errores nunca deberan dejarse pasar silenciosamente. A menos que hayan sido silenciados explcitamente. Frente a la ambigedad, rechaza la tentacin de adivinar. Debera haber una -y preferiblemente slo una- manera obvia de hacerlo. Aunque esa manera puede no ser obvia al principio a menos que usted sea holands.[18] Ahora es mejor que nunca. Aunque nunca es a menudo mejor que ya mismo. Si la implementacin es difcil de explicar, es una mala idea. Si la implementacin es fcil de explicar, puede que sea una buena idea. Los espacios de nombres (namespaces) son una gran idea Hagamos ms de esas cosas!

Clases (para no ir a la escuela)Las clases en Python y en cualquier lenguaje de programacin son una especie de plantilla donde se fijan los atributos y funcionalidades para la creacin de los objetos. Una clase es un contenedor de uno o ms datos (variables o propiedades miembro) junto a las operaciones de manipulacin de dichos datos (funciones/mtodos). Las clases pueden definirse como estructuras (struct), uniones (union) o clases (class) pudiendo existir diferencias entre cada una de las definiciones segn el lenguaje. adems las clases son agrupaciones de objetos que describen su comportamiento.

AtributosQu sera de un objeto sin saber sus atributos??? Un objeto necesita saber de qu forma y cmo ser, por ejemplo, si sabemos que tenemos una clase para conexiones MySQL, entonces necesitaremos saber haca que equipo, base de datos, con que usuario y contrasea se debe conectar, para eso definimos los atributos de la clase para ese objeto.

Nota: el mtodo __init__() no es el constructor de la clase, para eso est el mtodo __new__() que se ejecuta antes de instanciarse el __init__()

MtodosLos mtodos son las acciones que puede realizar un objeto, por ejemplo, en la clase anterior llamada ConexionMySQL se puede crear un mtodo para conectarse a la DB despus de tener los atributos de conexin.

Nota: Se est haciendo uso del mdulo MySQLdb para manejo de DB MySQL, lo pueden encontrar en http://sourceforge.net/projects/mysql-python/

La abstraccin denota las caractersticas esenciales de un objeto, donde se capturan sus comportamientos. A la hora de crear una clase abstracta, Python no ofrece una sintaxis particular para hacer esta labor. El problema surge cuando alguien, usando un mdulo, decide instanciar esa clase. Python no se opondr, por lo que se debe usar un pequeo truco.

Abstraccin

De esta forma si se intenta crear un objeto objeto = AbstractClass() lanzar un error, mientras que si se crea un objeto objeto = SubClass() ejecutar igualmente el constructor de la clase padre, pero se ir por la rama del else y ejecutar lo que tenga que hacer el constructor segn AbstractClass. Informacin extrada de:http://valdaris.es/2008/07/clases-abstractas-en-python/

HerenciaUn lenguaje POO, no sera POO sino tuviera la herencia dentro de l. Esta caracterstica es la que permite relacionar clases entre si para compartir sus mtodos y atributos.

PolimorfismoEl polimorfismo se da cuando una clase deriva de otra pero los mtodos tienen comportamientos diferentes, por ejemplo, el mtodo desplazar del cdigo anterior podramos decirle que nos especifique que tipo de desplazamiento est realizando.

EncapsulamientoEl encapsulamiento impide que se pueda tener acceso a mtodos o atributos de la clase por fuera de esta, sea, en la declaracin de los objetos en si, solamente seran utilizables dentro de la misma clase.

Rematando (pero no vendiendo)Algunas veces se necesita hacer uso de un tipo similar a las estructuras de C para tener unos cuantos datos de distinto tipo agrupados bajo un mismo nombre, para esto podemos declarar una clase vaca.

ExcepcionesAdems de las excepciones manejadas por el lenguaje, se pueden crear excepciones propias dependiendo lo que se est manejando. Las excepciones definidas por usuario se identifican mediante clases. Utilizando este mecanismo, es posible crear jerarquas ampliables de excepciones.

Metaclases (clases de clases)Si un objeto es una instancia de una clase, una clase es una instancia de una metaclase, como quien dice en POO una metaclase es una clase (valga el bug) cuyas instancias son clases; esto nos sirve para definir clases en tiempo de ejecucin.

A partir de Python 2.2 type() tiene un significado nuevo muy especial: permite crear nuevos tipos, es decir, es una metaclase, de hecho es la metaclase con la que estn creados todos los tipos built-in de Python y todas las clases de nuevo-estilo (las que heredan de object); para crear una clase con type() se usa la siguiente sintaxis: type(name, bases, dct)

name: es el nombre de la nueva clase bases: son las clases de las que hereda dct: es un diccionario con los atributos y mtodos que implementa

ENLACES

http://docs.python.org/tutorial/ http://es.wikipedia.org/wiki/Python http://es.wikipedia.org/wiki/Programacin_orientada_a_objetos http://radicalpython.blogspot.com http://mundogeek.net/tutorial-python/ http://valdaris.es/2008/07/clases-abstractas-en-python/ http://crysol.org/node/600 http://www.google.com.co