python: programación orientada a objetos · pdf filede programación como java y...
TRANSCRIPT
![Page 1: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/1.jpg)
![Page 2: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/2.jpg)
Python: Programación Orientada a Objetosa Objetos
JESSE PADILLA AGUDELO
Ingeniero Electrónico
![Page 3: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/3.jpg)
Licencia de la Presentación
3Python Manizales - Jesse Padilla Agudelo
![Page 4: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/4.jpg)
Objetivos
• Dar un repaso general a la ProgramaciónOrientada a Objetos, comprendiendo demanera general conceptos tales comoObjetos, Clases, Métodos, Herencia,Objetos, Clases, Métodos, Herencia,
polimorfismo, etc.
• Conocer e implementar cada uno de losconceptos claves de la POO usando Pythoncomo lenguaje de programación.
4Python Manizales - Jesse Padilla Agudelo
![Page 5: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/5.jpg)
Introducción
• Hoy en día la POO es un paradigma deprogramación fundamental para el desarrollo decualquier tipo de aplicación, por eso hoy en día sela mayoría de los lenguajes de alto nivel (ComoJava, C#, C++ entre otros) soportan esteparadigma y buscan explotarlo al máximo, PythonJava, C#, C++ entre otros) soportan esteparadigma y buscan explotarlo al máximo, Pythonno es la excepción de hecho en Python trabajarcon POO es muy fácil y agradable. Razón por lacual durante esta presentación analizaremos deforma detallada las virtudes de Python a la horade desarrollar software bajo este paradigma.
5Python Manizales - Jesse Padilla Agudelo
![Page 6: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/6.jpg)
Índice
1. Conceptos de Programación Orientada a Objetos
2. Python: Clases y Objetos
3. Python: Herencia
4. Python: Herencia Múltiple4. Python: Herencia Múltiple
5. Python: Polimorfismo
6. Python: Encapsulación
7. Python: Clases de Nuevo Estilo
8. Python: Métodos Especiales
6Python Manizales - Jesse Padilla Agudelo
![Page 7: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/7.jpg)
POO – Programación Orientada a Objetos
• La programación orientada a objetos es unparadigma de programación que buscarepresentar entidades u objetos agrupandorepresentar entidades u objetos agrupandodatos y métodos que puedan describir suscaracterísticas y comportamiento.
7Python Manizales - Jesse Padilla Agudelo
![Page 8: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/8.jpg)
POO– Programación Orientada a Objetos
• La POO paradigma de programación en el quelos conceptos del mundo real relevantes paranuestro problema se modelan a través denuestro problema se modelan a través declases y objetos, y en el que nuestro programaconsiste en una serie de interacciones entreestos objetos.
8Python Manizales - Jesse Padilla Agudelo
![Page 9: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/9.jpg)
Ventajas de la POO
• Fomenta la reutilización y extensión del código.
• Permite crear sistemas más complejos.
• Relacionar el sistema al mundo real.
• Facilita la creación de programas visuales.• Facilita la creación de programas visuales.
• Construcción de prototipos
• Agiliza el desarrollo de software
• Facilita el trabajo en equipo
• Facilita el mantenimiento del software
9Python Manizales - Jesse Padilla Agudelo
![Page 10: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/10.jpg)
Modelo Orientado a Objetos
• Para entender la POO vamos a revisar unos conceptos básicos:
1. Objeto
2. Clase 2. Clase
3. Mensaje
4. Método
5. Interfaz
6. Herencia
10Python Manizales - Jesse Padilla Agudelo
![Page 11: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/11.jpg)
POO: El Objeto
• Un objeto es una unidad que engloba en sí mismo características y comportamiento necesarias para procesar información. Cada objeto contiene datos y funciones. Y un objeto contiene datos y funciones. Y un programa se construye como un conjunto de objetos, o como un único objeto.
11Python Manizales - Jesse Padilla Agudelo
![Page 12: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/12.jpg)
POO: El Objeto
• Ejemplo
– Carro BMW
• Características – 4 Ruedas Micheline– 4 Ruedas Micheline
– Motor BMW
– Caja de cambios de 7 Velocidades
– Color Azul
– 2 Espejos
12Python Manizales - Jesse Padilla Agudelo
![Page 13: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/13.jpg)
POO: La Clase
• La clase es un modelo o prototipo que definelas variables y métodos comunes a todos losobjetos de cierta clase. También se puededecir que una clase es una plantilla genéricadecir que una clase es una plantilla genéricapara un conjunto de objetos de similarescaracterísticas.
13Python Manizales - Jesse Padilla Agudelo
![Page 14: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/14.jpg)
POO: La Clase
• Ejemplo:
– Clase Vehículo– Numero de Ruedas
– Tipo de Motor
– Capacidad del Tanque de Gasolina
– Numero de Velocidades de la Caja de Cambios
– Color
14Python Manizales - Jesse Padilla Agudelo
![Page 15: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/15.jpg)
POO: Mensaje
• El mensaje es el modo en que se comunicanlos objetos entre si.
• Ejemplo:
– Cuando llamemos a una función de un objeto,– Cuando llamemos a una función de un objeto,diremos que estamos enviando un mensaje a eseobjeto.
15Python Manizales - Jesse Padilla Agudelo
![Page 16: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/16.jpg)
POO: Método
• Un Método es en POO se encarga de procesarlos mensajes que lleguen a un objeto, unmétodo no es otra cosa que una función oprocedimiento perteneciente a un objeto.procedimiento perteneciente a un objeto.
16Python Manizales - Jesse Padilla Agudelo
![Page 17: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/17.jpg)
POO: Interfaz
• Las clases y por lo tanto también los objetos,tienen partes públicas y partes privadas.Algunas veces llamaremos a la parte públicade un objeto su interfaz. Se trata de la únicade un objeto su interfaz. Se trata de la únicaparte del objeto que es visible para el resto delos objetos, de modo que es lo único de lo quese dispone para comunicarse con ellos.
17Python Manizales - Jesse Padilla Agudelo
![Page 18: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/18.jpg)
POO: Herencia
• La herencia es uno de los conceptos máscruciales en la POO. La herencia básicamenteconsiste en que una clase puede heredar susvariables y métodos a varias subclases. Estovariables y métodos a varias subclases. Estosignifica que una subclase, aparte de losatributos y métodos propios, tieneincorporados los atributos y métodosheredados de la superclase.
18Python Manizales - Jesse Padilla Agudelo
![Page 19: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/19.jpg)
Python: Clases y Objetos
• Python está completamente orientado aobjetos: puede definir sus propias clases,heredar de las que usted defina o de lasincorporadas en el lenguaje, e instanciar lasclases que haya definido.clases que haya definido.
• En Python las clases se definen mediante lapalabra reservada class seguida del nombrede la clase, dos puntos (:) y a continuación,indentado, el cuerpo de la clase.
19Python Manizales - Jesse Padilla Agudelo
![Page 20: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/20.jpg)
Python: Clases y Objetos
• Ejemplo:class Ejemplo: #1
pass #2
• En este ejemplo el nombre de la clase es Ejemplo• En este ejemplo el nombre de la clase es Ejemploy no hereda de otra clase. Por convención lasclases empiezan en Mayúscula.
• Esta clase no define atributos pero no puedeestar vacía para eso usamos la función pass,equivalente en otros lenguajes a usar {}
20Python Manizales - Jesse Padilla Agudelo
![Page 21: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/21.jpg)
POO en Python: el método __init__
Las clases de Python no tienen constructores odestructores explícitos. Las clases de Python tienen algosimilar a un constructor: el método __init__.
21Python Manizales - Jesse Padilla Agudelo
![Page 22: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/22.jpg)
POO en Python: el método __init__
• __init__ se llama inmediatamente tras crear una instanciade la clase.
• Sería tentador pero incorrecto denominar a esto elconstructor de la clase. Es tentador porque parece igual aun constructor (por convención, __init__ es el primermétodo definido para la clase), actúa como uno (es elmétodo definido para la clase), actúa como uno (es elprimer pedazo de código que se ejecuta en una instancia dela clase recién creada), e incluso suena como uno.
• Incorrecto, porque el objeto ya ha sido construido paracuando se llama a __init__, y ya tiene una referencia válidaa la nueva instancia de la clase. Pero __init__ es lo másparecido a un constructor que va a encontrar en Python, ycumple el mismo papel.
22Python Manizales - Jesse Padilla Agudelo
![Page 23: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/23.jpg)
POO en Python: el método __init__
• El primer atributo o variable de cada método de clase,incluido __init__, es siempre una referencia a lainstancia actual de la clase.
• Por convención, este argumento siempre se denominaself. En el método __init__, self se refiere al objetoself. En el método __init__, self se refiere al objetorecién creado; en otros métodos de la clase, se refierea la instancia cuyo método ha sido llamado.
• Los métodos __init__ pueden tomar cualquiercantidad de argumentos, e igual que las funciones,éstos pueden definirse con valores por defecto,haciéndoles opcionales para quien invoca.
23Python Manizales - Jesse Padilla Agudelo
![Page 24: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/24.jpg)
POO en Python: el método __init__
• Por convención, el primer argumento decualquier clase de Python (la referencia a lainstancia) se denomina self.
• Cumple el papel de la palabra reservada this enC++ o Java, pero self no es una palabra reservadaC++ o Java, pero self no es una palabra reservadaen Python, sino una mera convención.
• Aunque necesita especificar self de formaexplícita cuando define el método, no se
especifica al invocar el método; Python lo añadiráde forma automática.
24Python Manizales - Jesse Padilla Agudelo
![Page 25: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/25.jpg)
POO en Python: Instanciación de las Clases
• Crear un objeto o instanciar una clase enPython es muy sencillo. Para instanciar unaclase, simplemente se invoca a la clase comosi fuera una función, pasando los argumentossi fuera una función, pasando los argumentosque defina el método __init__. El valor deretorno será el objeto recién creado.
25Python Manizales - Jesse Padilla Agudelo
![Page 26: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/26.jpg)
POO en Python: Instanciación de las Clases
26Python Manizales - Jesse Padilla Agudelo
![Page 27: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/27.jpg)
POO en Python: Borrar Objetos
• Crear instancias nuevas es sencillo, destruirlaslo es más. En general, no hay necesidad deliberar de forma explícita las instancias,porque se eliminan automáticamente cuandoporque se eliminan automáticamente cuandolas variables a las que se asignan salen deámbito. Son raras las pérdidas de memoria enPython.
27Python Manizales - Jesse Padilla Agudelo
![Page 28: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/28.jpg)
POO con Python: Atributos de datos
• Python admite atributos de datos (llamados variables deinstancia en Java, y variables miembro en C++).
• Para hacer referencia a este atributo desde código que estéfuera de la clase, debe calificarlo con el nombre de lainstancia, instancia.data, de la misma manera quecalificaría una función con el nombre de su módulo.calificaría una función con el nombre de su módulo.
• Para hacer referencia a atributos de datos desde dentro dela clase, use self como calificador. Por convención, todos losatributos de datos se inicializan en el método __init__. Sinembargo, esto no es un requisito, ya que los atributos, aligual que las variables locales, comienzan a existir cuandose les asigna su primer valor.
28Python Manizales - Jesse Padilla Agudelo
![Page 29: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/29.jpg)
POO en Python: Atributos de datos
29Python Manizales - Jesse Padilla Agudelo
![Page 30: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/30.jpg)
POO en Python: Sobre Carga de Métodos
• C++ y Java admiten la sobrecarga de funciones por listade argumentos, es decir una clase puede tener variosmétodos con el mismo nombre, pero con argumentosen distinta cantidad, o de distinto tipo. Python noadmite sobrecarga de funciones. Los métodos sedefinen sólo por su nombre y hay un único método pordefinen sólo por su nombre y hay un único método porclase con un nombre dado.
• De manera que si una clase sucesora tiene un método__init__, siempre sustituye al método __init__ de suclase padre, incluso si éste lo define con una lista deargumentos diferentes. Y se aplica lo mismo acualquier otro método
30Python Manizales - Jesse Padilla Agudelo
![Page 31: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/31.jpg)
POO en Python: Sobre Carga de Operadores
• La sobrecarga de operadores permite redefinirciertos operadores, como "+" y "-", parausarlos con las clases que hemos definido. Sellama sobrecarga de operadores porquellama sobrecarga de operadores porqueestamos reutilizando el mismo operador conun número de usos diferentes, y el compiladordecide cómo usar ese operador dependiendosobre qué opera.
31Python Manizales - Jesse Padilla Agudelo
![Page 32: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/32.jpg)
POO en Python: Sobre Carga de Operadores
• __add__( self, other) -> Oper. Suma
• __sub__( self, other) -> Oper. Resta
• __mul__( self, other) -> Oper. Multiplicacion
• __rmul__( self, other) -> Oper. Multi. Por Escalar
• __floordiv__( self, other) -> Oper. division Redondeo• __floordiv__( self, other) -> Oper. division Redondeo
• __mod__( self, other) -> Oper. modulo
• __divmod__( self, other) -> Oper. division
• __pow__( self, other[, modulo]) -> Oper. Potencia
• __and__( self, other) -> Oper. and
• __xor__( self, other) -> Oper. xor
• __or__( self, other) -> Oper. or
32Python Manizales - Jesse Padilla Agudelo
![Page 33: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/33.jpg)
POO en Python: Sobre Carga de Operadores
33Python Manizales - Jesse Padilla Agudelo
![Page 34: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/34.jpg)
Python: Herencia
• Una de las principales propiedades de las claseses la herencia. Esta propiedad nos permite crearnuevas clases a partir de clases existentes,conservando las propiedades de la clase original yañadiendo otras nuevas.añadiendo otras nuevas.
• La nueva clase obtenida se conoce como clasederivada, y las clases a partir de las cuales sederiva, clases base. Además, cada clase derivadapuede usarse como clase base para obtener unanueva clase derivada.
34Python Manizales - Jesse Padilla Agudelo
![Page 35: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/35.jpg)
Python: Herencia
• Definición de una clase heredada en Python.
class Instrumento:
pass
class Guitarra(Instrumento):class Guitarra(Instrumento):
pass
class Bajo(Instrumento):
pass
35Python Manizales - Jesse Padilla Agudelo
![Page 36: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/36.jpg)
Herencia: El Método __init__
• Cuando creamos una clase derivada a partirde una clase padre y tenemos que la clasederivada proporciona o requiere su propiométodo __init__ , este método de la clasemétodo __init__ , este método de la clasederivada debe llamar explícitamente elmétodo __init__ de la clase base.
36Python Manizales - Jesse Padilla Agudelo
![Page 37: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/37.jpg)
Herencia: El Método __init__
37Python Manizales - Jesse Padilla Agudelo
![Page 38: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/38.jpg)
Python: Herencia Múltiple
class acuatico:
pass
class terrestre:class terrestre:
pass
class anfibio(acuatico, terrestre):
pass
38Python Manizales - Jesse Padilla Agudelo
![Page 39: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/39.jpg)
Polimorfismo
• En programación orientada a objetos sedenomina polimorfismo a la capacidad quetienen los objetos de una clase de responderal mismo mensaje o evento en función de losal mismo mensaje o evento en función de losparámetros utilizados durante su invocación.Un objeto polimórfico es una entidad quepuede contener valores de diferentes tiposdurante la ejecución del programa. (wikipedia)
39Python Manizales - Jesse Padilla Agudelo
![Page 40: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/40.jpg)
Python: Polimorfismo
• El polimorfismo es el proceso de la utilizaciónde un operador o función de diferentesformas para diferentes datos de entrada. Entérminos prácticos, el polimorfismo significatérminos prácticos, el polimorfismo significaque si la clase B hereda de la clase A, no tieneque heredar todo acerca de la clase A, quepuede hacer algunas de las cosas que haceuna clase diferente
40Python Manizales - Jesse Padilla Agudelo
![Page 41: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/41.jpg)
Python: Polimorfismo
• A diferencia de Java y C++ el Polimorfismo enPython no es de gran importancia, dada sunaturaleza de lenguaje dinámico.
• En Python no existe la sobrecarga de métodos,• En Python no existe la sobrecarga de métodos,el ultimo método que se declare reemplazaraa los anteriores, aunque se puede conseguireste comportamiento usando métodos de #argumentos variable (*otros, **otros)
41Python Manizales - Jesse Padilla Agudelo
![Page 42: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/42.jpg)
Encapsulación
• Para proteger a las variables demodificaciones no deseadas se introduce elconcepto de encapsulación. Los miembros deuna clase se pueden dividir en públicos yuna clase se pueden dividir en públicos yprivados. Los miembros públicos son aquellosa los que se puede acceder libremente desdefuera de la clase. Los miembros privados, porel contrario, solamente pueden ser accedidospor los métodos de la propia clase.
42Python Manizales - Jesse Padilla Agudelo
![Page 43: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/43.jpg)
Encapsulación
• La Encapsulación se consigue en otros lenguajesde programación como Java y C++ utilizandomodificadores de acceso que definen sicualquiera puede acceder a esa método oatributo.atributo.
• En estos lenguajes tenemos los modificaciones:
• public -> hace visible los métodos y atributosfuera de la clase.
• private -> hace que los métodos y atributos solosean accesibles por métodos dentro de la clase.
43Python Manizales - Jesse Padilla Agudelo
![Page 44: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/44.jpg)
Python: Encapsulación
• En Python no existen los modificadores deacceso.
• El acceso a una atributo o a los métodos vienedeterminado por su nombre: si el nombredeterminado por su nombre: si el nombrecomienza con dos guiones bajos (y no terminatambién con dos guiones bajos) se trata deuna atributo o método privada, si no es asiestos son públicos.
44Python Manizales - Jesse Padilla Agudelo
![Page 45: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/45.jpg)
Python: Encapsulación
45Python Manizales - Jesse Padilla Agudelo
![Page 46: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/46.jpg)
Python: Clases de Nuevo Estilo
• La ramas 2.x de Python tiene dos tipos de clases,las de estilo viejo y las de estilo nuevoconviviendo. Las de estilo viejo siguenexactamente el mismo modelo que cualquierprogramador de cualquier versión anteriorprogramador de cualquier versión anteriordebería conocer. Todas las características que seexplicarán a continuación se aplican sólo a lasclases de estilo nuevo. Eventualmente se dejaránde soportar las clases de estilo viejo, en Python3.0
46Python Manizales - Jesse Padilla Agudelo
![Page 47: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/47.jpg)
Python: Clases de Nuevo Estilo
• ¿Cómo se define una clase de estilo nuevo? Se haceheredando de una clase existente. La mayoría de lostipos internos de Python, como enteros, listas,diccionarios, e incluso archivos son ahora clases deestilo nuevo. Hay además una clase de estilo nuevollamada 'object' que se convierte en la clase base parallamada 'object' que se convierte en la clase base paratodos los tipos internos, de modo que si no queremosheredar de un nuevo tipo interno se puede heredar deeste:class MiClase(object):
def __init__(self):
pass
47Python Manizales - Jesse Padilla Agudelo
![Page 48: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/48.jpg)
Preguntas
48Python Manizales - Jesse Padilla Agudelo
![Page 49: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/49.jpg)
Referencias
• Python para todos, Raúl González Duque
• Inmersión en Python, MARK PILGRIM –FRANCISCO CALLEGO – RICARDO CÁRDENAS.
• Aprenda a Pensar Como un Programador con• Aprenda a Pensar Como un Programador con
Python, ALLEN DOWNEY - JEREY ELKNER –CHIRIS MEYER
49Python Manizales - Jesse Padilla Agudelo
![Page 50: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/50.jpg)
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/numeric-
types.htmltypes.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
50Python Manizales - Jesse Padilla Agudelo
![Page 51: Python: Programación Orientada a Objetos · PDF filede programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo](https://reader036.vdocuments.site/reader036/viewer/2022062504/5a79f4477f8b9ab83f8ce2da/html5/thumbnails/51.jpg)
51Python Manizales - Jesse Padilla Agudelo