PROGRAMACIÓN ORIENTADO
A OBJETOS
T E O R Í A
Josué Castañeda Landa
INTINERARIO
DE LA PRESENTACIÓN
Pregunta a los alumnos - Introducción
Enfoque
Ventajas
Conceptos
PREGUNTAS A LOS
PREGUNTAS A LOS
ALUMNOS
ALUMNOS
INTRODUCCIÓN
PREGUNTAS INTRODUCTORIAS
¿PARA QUE SIRVE LA
PROGRAMACIÓN-POO?
¿ES IMPORTANTE EL LENGUAJE
EN EL CUAL SE PROGRAMA?
¿POO EN EL ÁMBITO LABORAL?
¿EN ÁREA QUE PUEDO APLICAR
LA PROGRAMACIÓN?
INTRODUCCIÓN
INTRODUCCIÓN
INTRODUCCIÓN
POO
ENFOQUE
¿CUAL ES SU ENFOQUE?
ENFOQUE
PROGRAMACIÓN ORIENTADA A OBJETOS
La programación orientada a objetos (POO) es un paradigma de programación que se centra
en el diseño y desarrollo de software a través de la modelización de objetos, sus propiedades y
sus interacciones. El enfoque principal de la programación orientada a objetos es organizar el
código en unidades autónomas llamadas "objetos", que encapsulan datos y funcionalidades
relacionadas.
En resumen.-La programación orientada a objetos es un enfoque que se basa en la creación
y manipulación de objetos para construir software más organizado, modular y mantenible. La
POO permite modelar el mundo real de manera efectiva y proporciona herramientas para
abordar problemas complejos de manera estructurada.
POO
VENTAJAS
¿CUAL ES SU VENTAJA?
VENTAJAS
PROGRAMACIÓN ORIENTADA A OBJETOS
Código
Reutilización de Código
Orden
Modularidad
Mantenibilidad
Flexibilidad y Extensibilidad
Modelado / Forma De Trabajo
Abstracción
Facilidad para Modelar Problemas del Mundo Real
Mejor Colaboración entre Equipos de Desarrollo
LENGUAJES POO
CONCEPTOS
CONCEPTOS
CONCEPTOS
CONCEPTOS
Clases y Objetos:
Clase: Una clase es una plantilla o plano que define la estructura
y el comportamiento de los objetos. Define atributos
(propiedades) y métodos (funciones) que los objetos de esa clase
tendrán.
Objeto: Un objeto es una instancia concreta de una clase.
Representa una entidad específica con sus propias propiedades
y puede ejecutar los métodos definidos en la clase.
CONCEPTOS
Métodos y Propiedades:
Métodos: Son funciones definidas en una clase que
especifican el comportamiento de los objetos. Los métodos
pueden modificar los datos internos y realizar tareas
específicas.
Propiedades: Son los atributos que tienen los objetos.
Representan datos específicos que caracterizan al objeto.
CONCEPTOS
Constructores y Destructores:
Constructor: Es un método especial que se llama al crear una
instancia de una clase. Se utiliza para inicializar los valores
iniciales del objeto.
Destructor: Es un método especial que se llama cuando un
objeto se elimina de la memoria. Se utiliza para liberar recursos
y realizar limpieza.
CONCEPTOS
Herencia: La herencia permite que una clase (subclase) herede
propiedades y métodos de otra clase (superclase). Facilita la
reutilización de código y la creación de jerarquías de clases.
Polimorfismo: El polimorfismo permite que diferentes objetos
respondan a la misma interfaz (métodos) de maneras
específicas para su clase. Esto facilita la flexibilidad y la creación
de sistemas genéricos.
HERENCIA
HERENCIA
CONCEPTOS El método __init__ sí se hereda en Python, pero cuando defines
un constructor (__init__) en la clase hija, este sobrescribe el
constructor de la clase base. Si no defines un constructor en la
clase hija, entonces el constructor de la clase base se usa
automáticamente.
Casos:
Si la clase hija no define __init__, la clase hija hereda el
constructor de la clase base.
1.
Si la clase hija define su propio __init__, este sobrescribe el de
la clase base, y si quieres seguir utilizando la lógica del
constructor de la clase base, tienes que llamarlo
explícitamente usando super().
2.
Veamos ambos casos con ejemplos.
HERENCIA
HERENCIA
SIMPLE
SIMPLE
HERENCIA
HERENCIA
MULTIPLE
MULTIPLE
CONCEPTOS
En Python, se permite la herencia múltiple, lo que significa que una clase
puede heredar de múltiples clases base. Sin embargo, cuando hay
métodos con el mismo nombre en diferentes clases base, Python sigue un
orden específico para determinar cuál método se llama. Este orden se
denomina MRO (Method Resolution Order).
Orden de resolución de métodos (MRO)
Python usa el algoritmo C3 Linearization para definir el orden en que
busca métodos en una jerarquía de herencia múltiple. La prioridad sigue
un camino de izquierda a derecha (según cómo defines las clases base) y
recorre hacia arriba (en profundidad) en la jerarquía de herencia. El orden
en que las clases son recorridas se puede observar usando el método
mro() o la función help().
POLIMORFISMO
POLIMORFISMO
INTERFACES-
INTERFACES-
CLASES
CLASES
ABSTRACTAS
ABSTRACTAS
CONCEPTOS-ABSTRACCIÓN
Informales: Los interfaces informales pueden ser definidos con
una simple clase que no implementa los métodos.
Formales: Simplemente definen una forma de crear interfaces (a
través de metaclases) en los que se definen unos métodos (pero
no se implementan) y donde se fuerza a las clases que usan ese
interfaz a implementar los métodos
IMPORTANTE
IMPORTANTE
IMPORTANTE
CONCEPTOS
La herencia permite que las propiedades y comportamientos de la clase base se
transmitan a las subclases, mientras que la abstracción garantiza que la
implementación de ciertas funcionalidades sea obligatoria para las subclases.
Interfaces
Interfaces
Herencia
Herencia
INFORMAL
INFORMAL
FORMAL
FORMAL
CONCEPTOS
Encapsulamiento: Hace referencia al ocultamiento de los estado
internos de una clase al exterior. Dicho de otra manera, encapsular
consiste en hacer que los atributos o métodos internos a una clase
no se puedan acceder ni modificar desde fuera, sino que tan solo
el propio objeto pueda acceder a ellos.
CONCEPTOS
Aunque Python no implementa estrictamente la encapsulación
como otros lenguajes (C++, Java), utiliza convenciones para lograr
distintos niveles de acceso:
Público: Los atributos o métodos públicos son accesibles
desde cualquier parte del código, incluso fuera de la clase.2
Protegido: Los atributos o métodos protegidos están indicados
por un guion bajo (_) delante del nombre. Esto indica que no
deberían ser accedidos directamente fuera de la clase, pero
sigue siendo posible hacerlo.
CONCEPTOS
Privado: Para denotar un atributo o método como privado, se
utiliza el doble guion bajo (__) al inicio del nombre. Esto
provoca un "name mangling" (modificación del nombre), lo
que hace que el atributo no sea directamente accesible desde
fuera de la clase.
Python proporciona una forma idiomática de implementar el
encapsulamiento usando el decorador @property, lo que
permite definir métodos "getter" y "setter" para controlar el
acceso a los atributos.
Teoría Programación Orientada a Objetos.
Teoría Programación Orientada a Objetos.
Teoría Programación Orientada a Objetos.
Teoría Programación Orientada a Objetos.

Teoría Programación Orientada a Objetos.

  • 1.
    PROGRAMACIÓN ORIENTADO A OBJETOS TE O R Í A Josué Castañeda Landa
  • 2.
    INTINERARIO DE LA PRESENTACIÓN Preguntaa los alumnos - Introducción Enfoque Ventajas Conceptos
  • 3.
    PREGUNTAS A LOS PREGUNTASA LOS ALUMNOS ALUMNOS
  • 4.
    INTRODUCCIÓN PREGUNTAS INTRODUCTORIAS ¿PARA QUESIRVE LA PROGRAMACIÓN-POO? ¿ES IMPORTANTE EL LENGUAJE EN EL CUAL SE PROGRAMA? ¿POO EN EL ÁMBITO LABORAL? ¿EN ÁREA QUE PUEDO APLICAR LA PROGRAMACIÓN?
  • 5.
  • 6.
  • 7.
    ENFOQUE PROGRAMACIÓN ORIENTADA AOBJETOS La programación orientada a objetos (POO) es un paradigma de programación que se centra en el diseño y desarrollo de software a través de la modelización de objetos, sus propiedades y sus interacciones. El enfoque principal de la programación orientada a objetos es organizar el código en unidades autónomas llamadas "objetos", que encapsulan datos y funcionalidades relacionadas. En resumen.-La programación orientada a objetos es un enfoque que se basa en la creación y manipulación de objetos para construir software más organizado, modular y mantenible. La POO permite modelar el mundo real de manera efectiva y proporciona herramientas para abordar problemas complejos de manera estructurada.
  • 8.
  • 9.
    VENTAJAS PROGRAMACIÓN ORIENTADA AOBJETOS Código Reutilización de Código Orden Modularidad Mantenibilidad Flexibilidad y Extensibilidad Modelado / Forma De Trabajo Abstracción Facilidad para Modelar Problemas del Mundo Real Mejor Colaboración entre Equipos de Desarrollo
  • 10.
  • 12.
  • 13.
    CONCEPTOS Clases y Objetos: Clase:Una clase es una plantilla o plano que define la estructura y el comportamiento de los objetos. Define atributos (propiedades) y métodos (funciones) que los objetos de esa clase tendrán. Objeto: Un objeto es una instancia concreta de una clase. Representa una entidad específica con sus propias propiedades y puede ejecutar los métodos definidos en la clase.
  • 14.
    CONCEPTOS Métodos y Propiedades: Métodos:Son funciones definidas en una clase que especifican el comportamiento de los objetos. Los métodos pueden modificar los datos internos y realizar tareas específicas. Propiedades: Son los atributos que tienen los objetos. Representan datos específicos que caracterizan al objeto.
  • 15.
    CONCEPTOS Constructores y Destructores: Constructor:Es un método especial que se llama al crear una instancia de una clase. Se utiliza para inicializar los valores iniciales del objeto. Destructor: Es un método especial que se llama cuando un objeto se elimina de la memoria. Se utiliza para liberar recursos y realizar limpieza.
  • 18.
    CONCEPTOS Herencia: La herenciapermite que una clase (subclase) herede propiedades y métodos de otra clase (superclase). Facilita la reutilización de código y la creación de jerarquías de clases. Polimorfismo: El polimorfismo permite que diferentes objetos respondan a la misma interfaz (métodos) de maneras específicas para su clase. Esto facilita la flexibilidad y la creación de sistemas genéricos.
  • 19.
  • 21.
    CONCEPTOS El método__init__ sí se hereda en Python, pero cuando defines un constructor (__init__) en la clase hija, este sobrescribe el constructor de la clase base. Si no defines un constructor en la clase hija, entonces el constructor de la clase base se usa automáticamente. Casos: Si la clase hija no define __init__, la clase hija hereda el constructor de la clase base. 1. Si la clase hija define su propio __init__, este sobrescribe el de la clase base, y si quieres seguir utilizando la lógica del constructor de la clase base, tienes que llamarlo explícitamente usando super(). 2. Veamos ambos casos con ejemplos.
  • 22.
  • 25.
  • 26.
    CONCEPTOS En Python, sepermite la herencia múltiple, lo que significa que una clase puede heredar de múltiples clases base. Sin embargo, cuando hay métodos con el mismo nombre en diferentes clases base, Python sigue un orden específico para determinar cuál método se llama. Este orden se denomina MRO (Method Resolution Order). Orden de resolución de métodos (MRO) Python usa el algoritmo C3 Linearization para definir el orden en que busca métodos en una jerarquía de herencia múltiple. La prioridad sigue un camino de izquierda a derecha (según cómo defines las clases base) y recorre hacia arriba (en profundidad) en la jerarquía de herencia. El orden en que las clases son recorridas se puede observar usando el método mro() o la función help().
  • 28.
  • 30.
  • 31.
    CONCEPTOS-ABSTRACCIÓN Informales: Los interfacesinformales pueden ser definidos con una simple clase que no implementa los métodos. Formales: Simplemente definen una forma de crear interfaces (a través de metaclases) en los que se definen unos métodos (pero no se implementan) y donde se fuerza a las clases que usan ese interfaz a implementar los métodos
  • 32.
  • 33.
    CONCEPTOS La herencia permiteque las propiedades y comportamientos de la clase base se transmitan a las subclases, mientras que la abstracción garantiza que la implementación de ciertas funcionalidades sea obligatoria para las subclases.
  • 34.
  • 35.
  • 36.
  • 38.
    CONCEPTOS Encapsulamiento: Hace referenciaal ocultamiento de los estado internos de una clase al exterior. Dicho de otra manera, encapsular consiste en hacer que los atributos o métodos internos a una clase no se puedan acceder ni modificar desde fuera, sino que tan solo el propio objeto pueda acceder a ellos.
  • 39.
    CONCEPTOS Aunque Python noimplementa estrictamente la encapsulación como otros lenguajes (C++, Java), utiliza convenciones para lograr distintos niveles de acceso: Público: Los atributos o métodos públicos son accesibles desde cualquier parte del código, incluso fuera de la clase.2 Protegido: Los atributos o métodos protegidos están indicados por un guion bajo (_) delante del nombre. Esto indica que no deberían ser accedidos directamente fuera de la clase, pero sigue siendo posible hacerlo.
  • 40.
    CONCEPTOS Privado: Para denotarun atributo o método como privado, se utiliza el doble guion bajo (__) al inicio del nombre. Esto provoca un "name mangling" (modificación del nombre), lo que hace que el atributo no sea directamente accesible desde fuera de la clase. Python proporciona una forma idiomática de implementar el encapsulamiento usando el decorador @property, lo que permite definir métodos "getter" y "setter" para controlar el acceso a los atributos.