0% encontró este documento útil (0 votos)
14 vistas

Python OOP

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas

Python OOP

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 29

@ebadilla10

@ebadilla10
Programación Orientada a Objetos

La programación orientada a objetos es un paradigma de programación donde los problemas se modelan en forma de clases y objetos.
El foco principal está en los datos (objeto) más que en el procedimiento o las funciones utilizadas para manipular esos datos.

Un objeto es una representación abstracta de cosas y conceptos que encontramos en el mundo real, como empleados, organizaciones,
automóviles, productos electrónicos, etc. Y una clase es un modelo para crear objetos.

Por lo tanto, las clases son pequeños fragmentos de código reutilizable a partir de los cuales se pueden crear múltiples objetos. Esto
hace que los programas escritos con programación orientada a objetos sean fáciles de ejecutar, modificar y depurar. La programación
orientada a objetos es muy útil para crear software grande y complejo.

La característica principal de este modelo basado en objetos es la encapsulación, es decir, todo lo que el objeto necesita se encapsula
dentro de ese objeto. Esto incluye datos de objetos (variables y matrices) y los métodos y funciones que operan sobre ellos.

Otros conceptos importantes de programación orientada a objetos incluyen herencia, abstracción, polimorfismo, etc.
@ebadilla10
¿Qué es una clase?

Una clase es un modelo para objetos. Es como el diseño técnico de una casa o de un coche. En tales diseños, se especifica las
características de la casa. Usando esas características como guía, se podrá construir tantas casas como se quiera.

Las clases y los objetos funcionan de manera similar. Si se desea crear un programa que procese información sobre sus empleados, se
deberá comenzar creando una clase de Empleado.

Esta clase contendrá:


- datos de los empleados en forma de variables (nombre, salario, puesto de trabajo, etc.)
- métodos para procesar esos datos (cálculo de bonificación, evaluación del desempeño, etc.).

Variables: nombre y salario.


Método: calcular_bonus() para calcular la bonificación del empleado.
@ebadilla10
¿Qué es un objeto?

Una vez que se creado una clase, se puede crear objetos a partir de la clase. Un objeto es como una casa real o un automóvil real que se
construye a partir del plano.

Se pueden crear tantos objetos como se quiera de una clase. Por ejemplo, si tiene una clase llamada Empleado, se puede crear objetos
empleado1, empleado2, ..., empleadoN.

Cada uno de estos objetos es una instancia individual de la clase Empleado. Por lo tanto, tiene sus propios datos individuales que
están separados de otros objetos de la clase.

Cada objeto Empleado tendrá su propia copia de nombre, salario y el


método calcular_bonus(). Así es como se puede modelar conceptos del
mundo real utilizando clases y objetos.
@ebadilla10
¿Qué son los atributos?

Estos son los datos o información asociada al objeto. En la clase Empleado que se ha descrito anteriormente, el nombre y el salario son
los atributos de la clase ya que brindan la información requerida sobre los objetos.
@ebadilla10
¿Qué son los métodos?

Estos son los procedimientos y la lógica que se utilizan para manipular los datos o atributos del objeto. También se pueden utilizar
métodos para crear nueva información sobre ese objeto.

En la clase Empleado, se ha incluido un método llamado calcular_bonus() para calcular el bono recibido por un empleado. Supóngase
que la bonificación se calcula sumando el 1% del beneficio total de la empresa al 5% del salario de los empleados.

Bonificación = (1% del beneficio de la empresa) + (5% del salario del empleado)

Luego, la fórmula matemática necesaria para calcular esta cantidad se escribirá dentro del método calcular_bonus().
@ebadilla10
Principios de la Programación Orientada a Objetos

Es necesario implementar ciertas características clave si queremos modelar un objeto correctamente. Estas características clave son los
cuatro principios fundamentales de la programación orientada a objetos, que son la encapsulación, la herencia, la abstracción y el
polimorfismo.

1. Encapsulación
En POO, el objeto contiene todos los datos y métodos que necesita.
Por ejemplo, se pueden almacenar variables como nombre y salario dentro de una clase de Empleado junto con un método
para calcular el monto del bono.
@ebadilla10
Principios de la Programación Orientada a Objetos

2. Herencia
Se puede derivar una clase de otra en programación orientada a objetos (similar a una relación
padre-hijo). La clase padre se llama clase base o superclase, mientras que la clase hija se llama
clase derivada o subclase.

Así como los niños heredan rasgos de sus padres, las clases hijas heredan los atributos y
métodos de su clase padre. Esta característica se conoce como herencia en programación
orientada a objetos.

Además, las clases hijas también pueden poseer atributos y métodos que la clase padre no
posee. Por ejemplo, supóngase que se deriva una clase Programador de la clase Empleado.

Se ha creado un nuevo método, write_code(), para la clase Programador. Sin embargo, todos
los demás métodos y atributos se heredan de la clase Empleado.

Entonces, al derivar la clase Programador, solo es necesario crear el método write_code()


dentro de ella. Esta clase accede automáticamente a todos los demás atributos y métodos
definidos en la clase Empleado, eliminando así la necesidad de codificarlos nuevamente.
@ebadilla10
Principios de la Programación Orientada a Objetos

3. Abstracción
Se ha visto que un objeto contiene todo tipo de datos y lógica en su interior. Sin embargo, se debería escribir el software de
manera que los usuarios puedan utilizar los objetos sin ningún conocimiento del funcionamiento interno del objeto.

Por ejemplo, los trabajadores de oficina que necesitan ingresar datos de los empleados y calcular sus bonificaciones no deberían
necesitar saber cómo se ingresan y calculan los datos. Todo lo que necesitan saber es cómo ingresar los datos y qué comando
usar para calcular el bono.

Esto simplifica la implementación del programa, ya que los objetos son piezas de código independientes que pueden ser
utilizadas por personas sin ningún conocimiento de codificación. Todo lo que necesitan hacer es proporcionar datos de los
empleados y emitir algunos comandos.

Este acto de ocultar los datos y la lógica del objeto a los usuarios se conoce como abstracción en programación orientada a
objetos. Utilizando este principio, solo se hacen accesibles a los usuarios los datos relevantes.
@ebadilla10
Principios de la Programación Orientada a Objetos

4. Polimorfismo
Un único método de una clase puede adoptar múltiples formas. Esto se conoce como polimorfismo.

Por ejemplo, supóngase que existen diferentes formas de calcular la bonificación según el estatus del empleado. Se puede crear
múltiples métodos calcular_bonus() para reflejar esto en el código. Cada versión de este método contendrá una fórmula
diferente para calcular el bono.

Luego se puede llamar al método apropiado según la situación específica. Esto suele lograrse creando diferentes versiones de la
función en diferentes clases derivadas. Entonces, cuando se usa un objeto de una clase derivada específica, ejecutará el método
exclusivo de esa clase.
@ebadilla10

Beneficios de la programación orientada a objetos: Los principios y componentes de la programación orientada a objetos ofrecen
múltiples ventajas y beneficios, algunos de ellos son:

1. Código reutilizable
2. Códigos autónomos
3. Bibliotecas útiles
4. Modelado del mundo real
5. Fácilmente actualizable y escalable
6. Seguridad
7. Flexibilidad

Limitaciones de la programación orientada a objetos: A pesar de tener múltiples ventajas, la programación orientada a objetos
también tiene limitaciones, algunas de ellas son:

1. Curva de aprendizaje pronunciada


2. Exceso de énfasis en los datos
3. No apto para todos los problemas
@ebadilla10
OOP: Clases y Objetos

Una clase se considera como un blueprint (a design plan or other technical drawing) de objetos. Se puede pensar en la clase como un
boceto (prototipo) de una casa. Contiene todos los detalles sobre los pisos, puertas, ventanas, etc. En base a estas descripciones
construimos la casa. La casa es el objeto. Dado que se pueden hacer muchas casas a partir de la misma descripción, podemos crear
muchos objetos de una clase.
@ebadilla10
OOP: Clases y Objetos
@ebadilla10
OOP: Clases y Objetos
@ebadilla10
OOP: Encapsulación

Se refiere a la ocultación de los detalles internos de un objeto y la exposición de una interfaz controlada para interactuar con él. Se
logra mediante el uso de métodos y atributos en una clase para controlar el acceso a los datos internos del objeto. Los detalles internos
de la implementación de un objeto se mantienen privados, y el acceso a ellos se realiza a través de métodos públicos, lo que promueve
la seguridad y la integridad de los datos.

1. Métodos Mágicos:
Son métodos con nombres que comienzan y terminan con doble guion bajo __. Son utilizados para realizar operaciones
específicas en objetos en circunstancias particulares. Al definir métodos mágicos en una clase, se puede personalizar el
comportamiento de los objetos en situaciones como la creación, la representación de string, la igualdad, etc.

2. Modificadores de Acceso:
Python no tiene modificadores de acceso tradicionales como "public", "private" o "protected" como otros lenguajes de
programación, pero utiliza una convención para indicar la visibilidad de atributos y métodos. Por convención, los atributos o
métodos que comienzan con un solo guión bajo _ se consideran "protegidos" y deben ser tratados como no públicos. Esto
significa que no se deben acceder directamente desde fuera de la clase, pero aún es posible hacerlo. Los atributos o métodos que
comienzan con dos guiones bajos __ se consideran "privados", lo que significa que Python aplica una técnica llamada "name
mangling" para hacer que sea más difícil acceder a ellos desde fuera de la clase.
@ebadilla10
OOP: Encapsulación, Métodos Mágicos
@ebadilla10
OOP: Encapsulación, Modificadores de Acceso
@ebadilla10
OOP: Herencia

La nueva clase que se crea se conoce como subclase (clase secundaria o derivada) y la clase existente de la que se deriva la clase
secundaria se conoce como superclase (clase principal o base).
@ebadilla10
OOP: Herencia
@ebadilla10
OOP: Herencia
@ebadilla10
OOP: Herencia, Sobreescritura de Métodos
@ebadilla10
OOP: Herencia, Método super()
@ebadilla10
OOP: Herencia, Herencia Múltiple
@ebadilla10
OOP: Herencia, Herencia Multinivel
@ebadilla10
OOP: Herencia, Orden de Resolución de Métodos (MRO)
@ebadilla10
OOP: Sobrecarga de operadores
@ebadilla10
OOP: Sobrecarga de operadores de comparación
@ebadilla10
OOP: Polimorfismo

Significa más de una forma. Es decir, una misma entidad (método, operador u objeto) puede realizar diferentes operaciones en
diferentes escenarios. Permite la misma interfaz para diferentes objetos, por lo que se puede escribir código eficiente.
@ebadilla10
OOP: Polimorfismo, Sobreescritura de Métodos

También podría gustarte