Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Licencia de la Presentacin
Objetivos
Dar un repaso general a la Programacin Orientada a Objetos, comprendiendo de manera general conceptos tales como Objetos, Clases, Mtodos, Herencia, polimorfismo, etc. Conocer e implementar cada uno de los conceptos claves de la POO usando Python como lenguaje de programacin.
Python Manizales - Jesse Padilla Agudelo 4
Introduccin
Hoy en da la POO es un paradigma de programacin fundamental para el desarrollo de cualquier tipo de aplicacin, por eso hoy en da se la mayora de los lenguajes de alto nivel (Como Java, C#, C++ entre otros) soportan este paradigma y buscan explotarlo al mximo, Python no es la excepcin de hecho en Python trabajar con POO es muy fcil y agradable. Razn por la cual durante esta presentacin analizaremos de forma detallada las virtudes de Python a la hora de desarrollar software bajo este paradigma.
Python Manizales - Jesse Padilla Agudelo 5
ndice
1. 2. 3. 4. 5. 6. 7. 8. Conceptos de Programacin Orientada a Objetos Python: Clases y Objetos Python: Herencia Python: Herencia Mltiple Python: Polimorfismo Python: Encapsulacin Python: Clases de Nuevo Estilo Python: Mtodos Especiales
Python Manizales - Jesse Padilla Agudelo 6
Ventajas de la POO
Fomenta la reutilizacin y extensin del cdigo. Permite crear sistemas ms complejos. Relacionar el sistema al mundo real. Facilita la creacin de programas visuales. Construccin de prototipos Agiliza el desarrollo de software Facilita el trabajo en equipo Facilita el mantenimiento del software
Python Manizales - Jesse Padilla Agudelo 9
POO: El Objeto
Un objeto es una unidad que engloba en s mismo caractersticas y comportamiento necesarias para procesar informacin. Cada objeto contiene datos y funciones. Y un programa se construye como un conjunto de objetos, o como un nico objeto.
11
POO: El Objeto
Ejemplo
Carro BMW
Caractersticas
4 Ruedas Micheline Motor BMW Caja de cambios de 7 Velocidades Color Azul 2 Espejos
12
POO: La Clase
La clase es un modelo o prototipo que define las variables y mtodos comunes a todos los objetos de cierta clase. Tambin se puede decir que una clase es una plantilla genrica para un conjunto de objetos de similares caractersticas.
13
POO: La Clase
Ejemplo:
Clase Vehculo
Numero de Ruedas Tipo de Motor Capacidad del Tanque de Gasolina Numero de Velocidades de la Caja de Cambios Color
14
POO: Mensaje
El mensaje es el modo en que se comunican los objetos entre si. Ejemplo:
Cuando llamemos a una funcin de un objeto, diremos que estamos enviando un mensaje a ese objeto.
15
POO: Mtodo
Un Mtodo es en POO se encarga de procesar los mensajes que lleguen a un objeto, un mtodo no es otra cosa que una funcin o procedimiento perteneciente a un objeto.
16
POO: Interfaz
Las clases y por lo tanto tambin los objetos, tienen partes pblicas y partes privadas. Algunas veces llamaremos a la parte pblica de un objeto su interfaz. Se trata de la nica parte del objeto que es visible para el resto de los objetos, de modo que es lo nico de lo que se dispone para comunicarse con ellos.
17
POO: Herencia
La herencia es uno de los conceptos ms cruciales en la POO. La herencia bsicamente consiste en que una clase puede heredar sus variables y mtodos a varias subclases. Esto significa que una subclase, aparte de los atributos y mtodos propios, tiene incorporados los atributos y mtodos heredados de la superclase.
Python Manizales - Jesse Padilla Agudelo 18
En este ejemplo el nombre de la clase es Ejemplo y no hereda de otra clase. Por convencin las clases empiezan en Mayscula. Esta clase no define atributos pero no puede estar vaca para eso usamos la funcin pass, equivalente en otros lenguajes a usar {}
Python Manizales - Jesse Padilla Agudelo 20
Las clases de Python no tienen constructores o destructores explcitos. Las clases de Python tienen algo similar a un constructor: el mtodo __init__.
21
25
26
27
28
29
33
Python: Herencia
Una de las principales propiedades de las clases es la herencia. Esta propiedad nos permite crear nuevas clases a partir de clases existentes, conservando las propiedades de la clase original y aadiendo otras nuevas. La nueva clase obtenida se conoce como clase derivada, y las clases a partir de las cuales se deriva, clases base. Adems, cada clase derivada puede usarse como clase base para obtener una nueva clase derivada.
Python Manizales - Jesse Padilla Agudelo 34
Python: Herencia
Definicin de una clase heredada en Python.
class Instrumento: pass class Guitarra(Instrumento): pass class Bajo(Instrumento): pass
35
36
37
Polimorfismo
En programacin orientada a objetos se denomina polimorfismo a la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en funcin de los parmetros utilizados durante su invocacin. Un objeto polimrfico es una entidad que puede contener valores de diferentes tipos durante la ejecucin del programa. (wikipedia)
Python Manizales - Jesse Padilla Agudelo 39
Python: Polimorfismo
El polimorfismo es el proceso de la utilizacin de un operador o funcin de diferentes formas para diferentes datos de entrada. En trminos prcticos, el polimorfismo significa que si la clase B hereda de la clase A, no tiene que heredar todo acerca de la clase A, que puede hacer algunas de las cosas que hace una clase diferente
Python Manizales - Jesse Padilla Agudelo 40
Python: Polimorfismo
A diferencia de Java y C++ el Polimorfismo en Python no es de gran importancia, dada su naturaleza de lenguaje dinmico. En Python no existe la sobrecarga de mtodos, el ultimo mtodo que se declare reemplazara a los anteriores, aunque se puede conseguir este comportamiento usando mtodos de # argumentos variable (*otros, **otros)
Python Manizales - Jesse Padilla Agudelo 41
Encapsulacin
Para proteger a las variables de modificaciones no deseadas se introduce el concepto de encapsulacin. Los miembros de una clase se pueden dividir en pblicos y privados. Los miembros pblicos son aquellos a los que se puede acceder libremente desde fuera de la clase. Los miembros privados, por el contrario, solamente pueden ser accedidos por los mtodos de la propia clase.
Python Manizales - Jesse Padilla Agudelo 42
Encapsulacin
La Encapsulacin se consigue en otros lenguajes de programacin como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa mtodo o atributo. En estos lenguajes tenemos los modificaciones: public -> hace visible los mtodos y atributos fuera de la clase. private -> hace que los mtodos y atributos solo sean accesibles por mtodos dentro de la clase.
Python Manizales - Jesse Padilla Agudelo 43
Python: Encapsulacin
En Python no existen los modificadores de acceso. El acceso a una atributo o a los mtodos viene determinado por su nombre: si el nombre comienza con dos guiones bajos (y no termina tambin con dos guiones bajos) se trata de una atributo o mtodo privada, si no es asi estos son pblicos.
Python Manizales - Jesse Padilla Agudelo 44
Python: Encapsulacin
45
Preguntas
48
Referencias
Python para todos, Ral Gonzlez Duque Inmersin en Python, MARK PILGRIM FRANCISCO CALLEGO RICARDO CRDENAS. Aprenda a Pensar Como un Programador con Python, ALLEN DOWNEY - JEREY ELKNER CHIRIS MEYER
49
Enlaces
www.python.org http://es.wikipedia.org/wiki/Programaci%C3%B3 n_orientada_a_objetos http://www.python.org/doc/2.5.2/ref/numerictypes.html http://blog.rvburke.com/2006/11/22/programaci on-orientada-a-objetos-en-python/ http://www.freenetpages.co.uk/hp/alan.gauld/sp anish/tutclass.htm http://juanjoalvarez.net/?q=cambiospython
Python Manizales - Jesse Padilla Agudelo 50
51