Professional Documents
Culture Documents
Contenidos
1. 2. 3. 4. 5. 6. 7. 8. Paradigmas de la Programacin Programacin Orientada a objetos Clases Objetos Encapsulacin Herencia Funciones para clases y objetos Mtodos internos de la clase (builtin-methods)
10/04/2013
Paradigmas de Programacin
Un paradigma es el resultado de un proceso social en el cual un grupo de personas desarrolla nuevas ideas y crea principios y prcticas alrededor de estas ideas.
Resumiendo: un paradigma es una metodologa de trabajo. En programacin, se trata de un enfoque concreto de desarrollar y estructurar el desarrollo de programas. Hasta el momento, el trabajo que han realizado ha obedecido al paradigma de programacin imperativa. En esta presentacin, introduciremos la programacin imperativa (aunque a estas alturas del curso no le sonar a algo nuevo) y desarrollaremos el paradigma orientado a objeto a travs de Python.
10/04/2013 Csar Husillos Rodrguez Vctor Terrn Salas 3
10/04/2013
10/04/2013
2. Herencia
Es la propiedad de crear nuevos datos a partir de los ya existentes (progenitores). Heredamos sus atributos y mtodos. Podemos sobrescribirlos para adaptarlos a la clase heredada (clase hija).
3. Polimorfismo
Hace referencia a la llamada de una funcin de una clase por parte de un objeto. Cuando se produce, se ejecuta la correspondiente al tipo del objeto que lo llama, no al de sus progenitores.
10/04/2013
Clases
Una clase es un nuevo tipo de dato. Contiene :
otros datos (que pueden ser de cualquier tipo) Funciones, que operan sobre esos datos.
Se declaran en el cdigo de la siguiente forma: class Nueva_clase (object): cdigo_de_la_clase Donde el cdigo_de_la_clase incluye la declaracin de variables y funciones. object es la clase base para cualquier objeto creado en Python.
10/04/2013 Csar Husillos Rodrguez Vctor Terrn Salas 8
objeto = Nombre_clase ()
donde objeto ser una nueva variable del tipo Nombre_clase.
10/04/2013
11
10/04/2013
14
EJERCICIOS: 1,2,3,4 Y 5
Csar Husillos Rodrguez Vctor Terrn Salas
10/04/2013
15
Encapsulacin
Significa que los datos pertenecen a un objeto (espacio de nombres del objeto). Podemos ir ms all y ocultar los datos de un objeto a cualquier otro objeto o cdigo que trate de hacer uso de ellos. Seran slo accesibles al propio objeto y, en algunos casos, a objetos de sus clases descendientes.
Python implementa bien el nivel de ocultacin de variables, pero no es efectivo en cuanto a la proteccin de las variables ocultas de accesos externos. Segn el manual de Gua de aprendizaje de Python (Guido van Rossum):
Las clases de Python no ponen una barrera absoluta entre la definicin y el usuario, sino que ms bien se fan de la buena educacin del usuario para no invadir la definicin.
10/04/2013 Csar Husillos Rodrguez Vctor Terrn Salas 16
Encapsulacin (II)
10/04/2013
17
EJERCICIOS: 6
Csar Husillos Rodrguez Vctor Terrn Salas
10/04/2013
18
Herencia
Es la propiedad de crear nuevos datos a partir de los ya existentes (progenitores). Heredamos sus atributos y mtodos. Podemos sobrescribirlos para adaptarlos a la clase heredada (clase hija).
La herencia es el mecanismo de reutilizacin de cdigo por excelencia en Programacin Orientada a Objetos. Sirve para ampliar, particularizar o mejorar determinadas clases en otras nuevas. Las clases padre/madre siguen vigentes, por lo que no es necesario retocar el cdigo que ya funcionaba.
10/04/2013 Csar Husillos Rodrguez Vctor Terrn Salas 19
10/04/2013
21
2. Utilizamos la inicializacin de la clase madre para los atributos heredados y nueva inicializacin para los nuevos.
Implica un diseo ms elaborado, pero una programacin orientada a objetos ms reutilizable y organizada.
10/04/2013 Csar Husillos Rodrguez Vctor Terrn Salas 22
10/04/2013
23
super(clase_hija, self).__init__([parametros])
10/04/2013
24
EJERCICIOS: 7 Y 8.
Csar Husillos Rodrguez Vctor Terrn Salas
10/04/2013
25
Herencia mltiple
Podemos heredar de ms de una clase. Sintaxis:
class Clase_hija (claseMadre1, claseMadre2,): codigo_Clase_hija
La clase hija tendr todos los atributos definidos en sus clases madres. En cuanto a los mtodos de la clase hija, qu sucede si dos de las madres comparten un mtodo con el mismo nombre?
10/04/2013 Csar Husillos Rodrguez Vctor Terrn Salas 26
10/04/2013
27
EJERCICIOS: 9 Y 10.
Csar Husillos Rodrguez Vctor Terrn Salas
10/04/2013
28
issubclass (sub, sup) isinstance (obj1, obj2) getattr (obj, attr [,default])
Devuelve True si obj1 es una instancia de obj2. Obj2 puede ser una lista o tupla de clases. Devuelve el valor del atributo attr del objeto obj. Si no tiene ese atributo devuelve default.
Sobrescribe con val el atributo attr del objeto obj. Si no existe, lo crea y asigna val.
Elimina el atributo attr del objeto obj. Muestra los atributos y mtodos del objeto obj. Si vale None, devuelve variables locales y globales del espacio de nombres local.
Devuelve un diccionario de atributos y valores del objeto obj. Si es None, devuelve un diccionario con las variables locales del espacio de nombres.
10/04/2013
29
Mtodos especiales
Se emplean para extender la funcionalidad de las clases en Python. Algunos tienen funcionalidad por defecto (__init__, constructor y __del__, destructor) Posibilitan:
La emulacin de tipos estndar. La sobrecarga|sobrescritura de operadores.
10/04/2013 Csar Husillos Rodrguez Vctor Terrn Salas 30
10/04/2013
31
10/04/2013
32
10/04/2013
33
EJERCICIOS: 11 Y 12
Csar Husillos Rodrguez Vctor Terrn Salas
10/04/2013
34
Para finalizar
Listas con clase (las listas que hemos estado manejando desde el da 1 del curso son clases)
10/04/2013
35
Para finalizar
Diccionarios con clase (Tambin existe la clase diccionario. Sorprendido/a?)
10/04/2013
36
FIN
Csar Husillos Rodrguez Vctor Terrn Salas
10/04/2013
37