SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
Introducción
Conceptos básicos
URL
Introducción a la Programación Orientada a
Objetos
Antonio Calvo
Departamento de Informática y Análisis Numérico
Universidad de Córdoba
septiembre 2013
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
1 Introducción
2 Conceptos básicos
3 URL
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Programación Orientada a Objetos
1 Introducción
2 Conceptos básicos
3 URL
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Objetivos
Dar un repaso general a la Programación Orientada a Objetos,
comprendiendo de manera general conceptos tales como Objetos,
Clases, Métodos, Herencia, polimorfismo, etc.
Conocer e implementar cada uno de los conceptos claves de la POO
usando Python como lenguaje de programación.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Paradigma de la POO
Hoy en dı́a la POO es un paradigma de programación fundamental
para el desarrollo de cualquier tipo de aplicación.
La mayorı́a de los lenguajes de alto nivel (Como Java, C#, C++
entre otros) soportan este paradigma y buscan explotarlo al
máximo, Python no es la excepción de hecho en Python trabajar
con POO es muy fácil y agradable.
Razón por la cual durante esta presentación analizaremos de forma
detallada las virtudes de Python a la hora de desarrollar software
bajo este paradigma.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
POO ? Programación Orientada a Objetos
La programación orientada a objetos es un paradigma de
programación que busca representar entidades u objetos agrupando
datos y métodos que puedan describir sus caracterı́sticas y
comportamiento.
La POO paradigma de programación en el que los conceptos del
mundo real relevantes para nuestro problema se modelan a
través de clases y objetos, y en el que nuestro programa consiste
en una serie de interacciones entre estos objetos.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Ventajas de la POO
Fomenta la reutilización y extensión del código.
Permite crear sistemas más complejos.
Permite relacionar el sistema al mundo real.
Facilita la creación de programas visuales.
Facilita la construcción de prototipos.
Agiliza el desarrollo de software.
Facilita el trabajo en equipo.
Facilita el mantenimiento del software.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Programación Orientada a Objetos
1 Introducción
2 Conceptos básicos
3 URL
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Conceptos básicos
1 Objeto
2 Clase
3 Mensaje
4 Método
5 Interfaz
6 Herencia
7 Encapsulación
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Objeto
Un objeto es una entidad que engloba en sı́ mismo caracterı́sticas
y comportamiento necesarias para procesar información. Cada
objeto contiene datos y funciones. Y un programa se construye
como un conjunto de objetos, o como un único objeto.
Ejemplo
coche BMW
Caracterı́sticas o propiedades del objeto
4 Ruedas Micheline
Motor BMW
Caja de cambios de 7 Velocidades
Color Azul
2 Espejos
Métodos o funciones
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Clase
La clase es un modelo o prototipo que define las propiedades y
métodos comunes a todos los objetos de cierta clase. También se
puede decir que una clase es una plantilla genérica para un
conjunto de objetos de similares caracterı́sticas.
Ejemplo
clase Vehı́culo
Definición de la clase
número de ruedas
tipo de Motor
capacidad del Tanque de Gasolina
número de Velocidades de la Caja de Cambios
color
Métodos o funciones
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Mensaje
El mensaje es el modo en que se comunican los objetos entre si.
El usuario también puede comunicarse con un objeto a través de los
mensajes.
Ejemplo
Cuando llamemos a una función de un objeto, diremos que
estamos enviando un mensaje a ese objeto.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Método
Un método es en POO se encarga de procesar los mensajes que
lleguen a un objeto, un método no es otra cosa que una función
(devuelve un valor) o procedimiento (procesa información pero no
devuelve valores) perteneciente a un objeto.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
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ública 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.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Herencia
La herencia es uno de los conceptos más cruciales en la POO. La
herencia básicamente consiste en que una clase puede heredar (dejar
en herencia) sus variables y métodos a varias subclases.
Esto significa que una subclase, aparte de los atributos y métodos
propios, tiene incorporados los atributos y métodos heredados de la
superclase.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Clases y Objetos
Python está completamente orientado a objetos: puede definir sus
propias clases, heredar de las que usted defina o de las incorporadas
en el lenguaje, e instanciar las clases que haya definido.
En Python las clases se definen mediante la palabra reservada class
seguida del nombre de la clase, dos puntos (:) y a continuación,
indentado, el cuerpo de la clase.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Clases y Objetos
En este ejemplo el nombre de la clase es Persona y no hereda (es
subclase) de otra clase. Por convención las clases empiezan en
Mayúscula.
Esta clase no define atributos pero no puede estar vacı́a para eso
usamos la función pass, equivalente en otros lenguajes a usar { }
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
El método init
Las clases de Python no tienen constructores o destructores
explı́citos. Las clases de Python tienen algo similar a un constructor:
el método init .
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
El método init
init se llama inmediatamente tras crear una instancia de la clase.
Serı́a tentador pero incorrecto denominar a esto el constructor de la
clase. Es tentador porque parece igual a un constructor (por
convención, init es el primer método definido para la clase),
actúa como uno (es el primer pedazo de código que se ejecuta en
una instancia de la clase recién creada), e incluso suena como uno.
Incorrecto, porque el objeto ya ha sido construido para cuando se
llama a init , y ya tiene una referencia válida a la nueva instancia
de la clase. Pero init es lo más parecido a un constructor que va
a encontrar en Python, y cumple el mismo papel.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
El primer argumento o variable de cada método de clase,
incluido init , es siempre una referencia a la instancia actual
de la clase.
Por convención, este argumento siempre se denomina self. En el
método init , self se refiere al objeto recién creado; en otros
métodos de la clase, se refiere a la instancia cuyo método ha sido
llamado.
Los métodos de las clases pueden tomar cualquier cantidad de
argumentos, e igual que las funciones, éstos pueden definirse con
valores por defecto, haciéndoles opcionales para quien invoca.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Por convención, el primer argumento de cualquier método de
Python (la referencia a la instancia) se denomina self.
Cumple el papel de la palabra reservada this en C++ o Java, pero
self no es una palabra reservada en Python, sino una mera
convención.
Aunque necesita especificar self de forma explı́cita cuando define el
método, no se especifica al invocar el método; Python lo añadirá de
forma automática.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Crear un objeto o instanciar una clase en Python es muy sencillo.
Para instanciar una clase, simplemente se invoca a la clase como si
fuera una función, pasando los argumentos que defina el método
init .
El valor de retorno será el objeto recién creado.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Atributos de datos o Propiedades de una clase
Python admite atributos de datos (llamados variables de instancia
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 la instancia,
instancia.data, de la misma manera que calificarı́a una función con
el nombre de su módulo.
Para hacer referencia a atributos de datos desde dentro de la clase,
use self como calificador.
Por convención, todos los atributos de datos se inicializan en el
método init . Sin embargo, esto no es un requisito, ya que los
atributos, al igual que las variables locales, comienzan a existir
cuando se les asigna su primer valor.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Propiedades
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
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
añadiendo otras nuevas.
La nueva clase obtenida se conoce como clase derivada
(subclases), y las clases a partir de las cuales se deriva, clases base
(superclase o clase padre). Además, cada clase derivada puede
usarse como clase base para obtener una nueva clase derivada.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Herencia
Cuando creamos una clase derivada a partir de una clase padre y
tenemos que la clase derivada proporciona o requiere su propio
método init , este método de la clase derivada debe llamar
explı́citamente el método init de la clase base.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Herencia
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Herencia
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Encapsulación
Para proteger a las variables de modificaciones no deseadas se
introduce el concepto de encapsulación.
Los miembros (propiedades y métodos) de una clase se pueden
dividir en públicos y privados.
Los miembros públicos 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 métodos de la propia clase.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Encapsulación
La Encapsulación se consigue en otros lenguajes de programación
como Java y C++ utilizando modificadores de acceso que definen si
cualquiera puede acceder a esa método o atributo.
En estos lenguajes tenemos los modificaciones:
public − > hace visible los métodos y atributos fuera de la
clase.
private − > hace que los métodos y atributos solo sean
accesibles por métodos dentro de la clase.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
En Python no existen los modificadores de acceso.
El acceso a una atributo o a los métodos viene determinado por su
nombre: si el nombre comienza con dos guiones bajos (y no termina
también con dos guiones bajos) se trata de una atributo o método
privado, si no es ası́ estos son públicos.
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Encapsulación
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
Programación Orientada a Objetos
1 Introducción
2 Conceptos básicos
3 URL
Antonio Calvo Introducción a la Programación Orientada a Objetos
Introducción
Conceptos básicos
URL
http://docs.python.org.ar/tutorial/3/classes.html
http://www.slideshare.net/jpadillaa/
programacion-orientada-a-objetos-en-python
http://www.iaa.es/python/Iniciacion_Python-Clases.pdf
Antonio Calvo Introducción a la Programación Orientada a Objetos

Más contenido relacionado

Similar a poopython.pdf

Similar a poopython.pdf (20)

Intro oo
Intro ooIntro oo
Intro oo
 
Intro oo
Intro ooIntro oo
Intro oo
 
Que es
Que esQue es
Que es
 
Clase3 Programación Orientada a Objetos
Clase3 Programación Orientada a ObjetosClase3 Programación Orientada a Objetos
Clase3 Programación Orientada a Objetos
 
Clase No.01.pptx
Clase No.01.pptxClase No.01.pptx
Clase No.01.pptx
 
Clase i
Clase iClase i
Clase i
 
Hgtyj
HgtyjHgtyj
Hgtyj
 
Introducción a la Programación Orientada a Objetos (POO).ppt
Introducción a la Programación Orientada a Objetos (POO).pptIntroducción a la Programación Orientada a Objetos (POO).ppt
Introducción a la Programación Orientada a Objetos (POO).ppt
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
Tabla sqa
Tabla sqaTabla sqa
Tabla sqa
 
Tabla sqa
Tabla sqaTabla sqa
Tabla sqa
 
Unidad III epoo
Unidad III epooUnidad III epoo
Unidad III epoo
 
Programacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfProgramacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdf
 
PROGRAMACIÓN ORIENTADA A OBJETOS I (PHP)
PROGRAMACIÓN ORIENTADA A OBJETOS I (PHP)PROGRAMACIÓN ORIENTADA A OBJETOS I (PHP)
PROGRAMACIÓN ORIENTADA A OBJETOS I (PHP)
 
Memes
MemesMemes
Memes
 
Fundamentos de Lenguaje de programacion
Fundamentos de Lenguaje de programacionFundamentos de Lenguaje de programacion
Fundamentos de Lenguaje de programacion
 
Fondo1 (2)
Fondo1 (2)Fondo1 (2)
Fondo1 (2)
 
Tecnología Orientada A Objetos
Tecnología Orientada A ObjetosTecnología Orientada A Objetos
Tecnología Orientada A Objetos
 
Python
PythonPython
Python
 
PYTHON ORIENTADO A OBJETOS
PYTHON ORIENTADO A OBJETOSPYTHON ORIENTADO A OBJETOS
PYTHON ORIENTADO A OBJETOS
 

Último

LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfbcondort
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingKevinCabrera96
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaAlexanderimanolLencr
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
clases de porcinos generales de porcinos
clases de porcinos generales de porcinosclases de porcinos generales de porcinos
clases de porcinos generales de porcinosDayanaCarolinaAP
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.pptoscarvielma45
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptxBRAYANJOSEPTSANJINEZ
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralsantirangelcor
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023RonaldoPaucarMontes
 
desarrollodeproyectoss inge. industrial
desarrollodeproyectoss  inge. industrialdesarrollodeproyectoss  inge. industrial
desarrollodeproyectoss inge. industrialGibranDiaz7
 
Mapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMONICADELROCIOMUNZON1
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptxCONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptxBrayanJavierCalle2
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfs7yl3dr4g0n01
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASPersonalJesusGranPod
 
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOCAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOLUISDAVIDVIZARRETARA
 
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLTERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLdanilojaviersantiago
 

Último (20)

LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards Deming
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
clases de porcinos generales de porcinos
clases de porcinos generales de porcinosclases de porcinos generales de porcinos
clases de porcinos generales de porcinos
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integral
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
 
desarrollodeproyectoss inge. industrial
desarrollodeproyectoss  inge. industrialdesarrollodeproyectoss  inge. industrial
desarrollodeproyectoss inge. industrial
 
Mapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptx
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptxCONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
 
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOCAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
 
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLTERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
 

poopython.pdf

  • 1. Introducción Conceptos básicos URL Introducción a la Programación Orientada a Objetos Antonio Calvo Departamento de Informática y Análisis Numérico Universidad de Córdoba septiembre 2013 Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 2. Introducción Conceptos básicos URL 1 Introducción 2 Conceptos básicos 3 URL Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 3. Introducción Conceptos básicos URL Programación Orientada a Objetos 1 Introducción 2 Conceptos básicos 3 URL Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 4. Introducción Conceptos básicos URL Objetivos Dar un repaso general a la Programación Orientada a Objetos, comprendiendo de manera general conceptos tales como Objetos, Clases, Métodos, Herencia, polimorfismo, etc. Conocer e implementar cada uno de los conceptos claves de la POO usando Python como lenguaje de programación. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 5. Introducción Conceptos básicos URL Paradigma de la POO Hoy en dı́a la POO es un paradigma de programación fundamental para el desarrollo de cualquier tipo de aplicación. La mayorı́a de los lenguajes de alto nivel (Como Java, C#, C++ entre otros) soportan este paradigma y buscan explotarlo al máximo, Python no es la excepción de hecho en Python trabajar con POO es muy fácil y agradable. Razón por la cual durante esta presentación analizaremos de forma detallada las virtudes de Python a la hora de desarrollar software bajo este paradigma. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 6. Introducción Conceptos básicos URL POO ? Programación Orientada a Objetos La programación orientada a objetos es un paradigma de programación que busca representar entidades u objetos agrupando datos y métodos que puedan describir sus caracterı́sticas y comportamiento. La POO paradigma de programación en el que los conceptos del mundo real relevantes para nuestro problema se modelan a través de clases y objetos, y en el que nuestro programa consiste en una serie de interacciones entre estos objetos. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 7. Introducción Conceptos básicos URL Ventajas de la POO Fomenta la reutilización y extensión del código. Permite crear sistemas más complejos. Permite relacionar el sistema al mundo real. Facilita la creación de programas visuales. Facilita la construcción de prototipos. Agiliza el desarrollo de software. Facilita el trabajo en equipo. Facilita el mantenimiento del software. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 8. Introducción Conceptos básicos URL Programación Orientada a Objetos 1 Introducción 2 Conceptos básicos 3 URL Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 9. Introducción Conceptos básicos URL Conceptos básicos 1 Objeto 2 Clase 3 Mensaje 4 Método 5 Interfaz 6 Herencia 7 Encapsulación Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 10. Introducción Conceptos básicos URL Objeto Un objeto es una entidad que engloba en sı́ mismo caracterı́sticas y comportamiento necesarias para procesar información. Cada objeto contiene datos y funciones. Y un programa se construye como un conjunto de objetos, o como un único objeto. Ejemplo coche BMW Caracterı́sticas o propiedades del objeto 4 Ruedas Micheline Motor BMW Caja de cambios de 7 Velocidades Color Azul 2 Espejos Métodos o funciones Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 11. Introducción Conceptos básicos URL Clase La clase es un modelo o prototipo que define las propiedades y métodos comunes a todos los objetos de cierta clase. También se puede decir que una clase es una plantilla genérica para un conjunto de objetos de similares caracterı́sticas. Ejemplo clase Vehı́culo Definición de la clase número de ruedas tipo de Motor capacidad del Tanque de Gasolina número de Velocidades de la Caja de Cambios color Métodos o funciones Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 12. Introducción Conceptos básicos URL Mensaje El mensaje es el modo en que se comunican los objetos entre si. El usuario también puede comunicarse con un objeto a través de los mensajes. Ejemplo Cuando llamemos a una función de un objeto, diremos que estamos enviando un mensaje a ese objeto. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 13. Introducción Conceptos básicos URL Método Un método es en POO se encarga de procesar los mensajes que lleguen a un objeto, un método no es otra cosa que una función (devuelve un valor) o procedimiento (procesa información pero no devuelve valores) perteneciente a un objeto. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 14. Introducción Conceptos básicos URL 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ública 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. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 15. Introducción Conceptos básicos URL Herencia La herencia es uno de los conceptos más cruciales en la POO. La herencia básicamente consiste en que una clase puede heredar (dejar en herencia) sus variables y métodos a varias subclases. Esto significa que una subclase, aparte de los atributos y métodos propios, tiene incorporados los atributos y métodos heredados de la superclase. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 16. Introducción Conceptos básicos URL Clases y Objetos Python está completamente orientado a objetos: puede definir sus propias clases, heredar de las que usted defina o de las incorporadas en el lenguaje, e instanciar las clases que haya definido. En Python las clases se definen mediante la palabra reservada class seguida del nombre de la clase, dos puntos (:) y a continuación, indentado, el cuerpo de la clase. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 17. Introducción Conceptos básicos URL Clases y Objetos En este ejemplo el nombre de la clase es Persona y no hereda (es subclase) de otra clase. Por convención las clases empiezan en Mayúscula. Esta clase no define atributos pero no puede estar vacı́a para eso usamos la función pass, equivalente en otros lenguajes a usar { } Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 18. Introducción Conceptos básicos URL El método init Las clases de Python no tienen constructores o destructores explı́citos. Las clases de Python tienen algo similar a un constructor: el método init . Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 19. Introducción Conceptos básicos URL El método init init se llama inmediatamente tras crear una instancia de la clase. Serı́a tentador pero incorrecto denominar a esto el constructor de la clase. Es tentador porque parece igual a un constructor (por convención, init es el primer método definido para la clase), actúa como uno (es el primer pedazo de código que se ejecuta en una instancia de la clase recién creada), e incluso suena como uno. Incorrecto, porque el objeto ya ha sido construido para cuando se llama a init , y ya tiene una referencia válida a la nueva instancia de la clase. Pero init es lo más parecido a un constructor que va a encontrar en Python, y cumple el mismo papel. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 20. Introducción Conceptos básicos URL El primer argumento o variable de cada método de clase, incluido init , es siempre una referencia a la instancia actual de la clase. Por convención, este argumento siempre se denomina self. En el método init , self se refiere al objeto recién creado; en otros métodos de la clase, se refiere a la instancia cuyo método ha sido llamado. Los métodos de las clases pueden tomar cualquier cantidad de argumentos, e igual que las funciones, éstos pueden definirse con valores por defecto, haciéndoles opcionales para quien invoca. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 21. Introducción Conceptos básicos URL Por convención, el primer argumento de cualquier método de Python (la referencia a la instancia) se denomina self. Cumple el papel de la palabra reservada this en C++ o Java, pero self no es una palabra reservada en Python, sino una mera convención. Aunque necesita especificar self de forma explı́cita cuando define el método, no se especifica al invocar el método; Python lo añadirá de forma automática. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 22. Introducción Conceptos básicos URL Crear un objeto o instanciar una clase en Python es muy sencillo. Para instanciar una clase, simplemente se invoca a la clase como si fuera una función, pasando los argumentos que defina el método init . El valor de retorno será el objeto recién creado. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 23. Introducción Conceptos básicos URL Atributos de datos o Propiedades de una clase Python admite atributos de datos (llamados variables de instancia 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 la instancia, instancia.data, de la misma manera que calificarı́a una función con el nombre de su módulo. Para hacer referencia a atributos de datos desde dentro de la clase, use self como calificador. Por convención, todos los atributos de datos se inicializan en el método init . Sin embargo, esto no es un requisito, ya que los atributos, al igual que las variables locales, comienzan a existir cuando se les asigna su primer valor. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 24. Introducción Conceptos básicos URL Propiedades Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 25. Introducción Conceptos básicos URL 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 añadiendo otras nuevas. La nueva clase obtenida se conoce como clase derivada (subclases), y las clases a partir de las cuales se deriva, clases base (superclase o clase padre). Además, cada clase derivada puede usarse como clase base para obtener una nueva clase derivada. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 26. Introducción Conceptos básicos URL Herencia Cuando creamos una clase derivada a partir de una clase padre y tenemos que la clase derivada proporciona o requiere su propio método init , este método de la clase derivada debe llamar explı́citamente el método init de la clase base. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 27. Introducción Conceptos básicos URL Herencia Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 28. Introducción Conceptos básicos URL Herencia Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 29. Introducción Conceptos básicos URL Encapsulación Para proteger a las variables de modificaciones no deseadas se introduce el concepto de encapsulación. Los miembros (propiedades y métodos) de una clase se pueden dividir en públicos y privados. Los miembros públicos 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 métodos de la propia clase. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 30. Introducción Conceptos básicos URL Encapsulación La Encapsulación se consigue en otros lenguajes de programación como Java y C++ utilizando modificadores de acceso que definen si cualquiera puede acceder a esa método o atributo. En estos lenguajes tenemos los modificaciones: public − > hace visible los métodos y atributos fuera de la clase. private − > hace que los métodos y atributos solo sean accesibles por métodos dentro de la clase. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 31. Introducción Conceptos básicos URL En Python no existen los modificadores de acceso. El acceso a una atributo o a los métodos viene determinado por su nombre: si el nombre comienza con dos guiones bajos (y no termina también con dos guiones bajos) se trata de una atributo o método privado, si no es ası́ estos son públicos. Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 32. Introducción Conceptos básicos URL Encapsulación Antonio Calvo Introducción a la Programación Orientada a Objetos
  • 33. Introducción Conceptos básicos URL Programación Orientada a Objetos 1 Introducción 2 Conceptos básicos 3 URL Antonio Calvo Introducción a la Programación Orientada a Objetos