Python orientado a objetos - Introducción

Los lenguajes de programación están surgiendo constantemente, al igual que las diferentes metodologías. La programación orientada a objetos es una de esas metodologías que se ha vuelto bastante popular en los últimos años.

Este capítulo habla de las características del lenguaje de programación Python que lo convierte en un lenguaje de programación orientado a objetos.

Esquema de clasificación de programación de lenguaje

Python se puede caracterizar bajo metodologías de programación orientadas a objetos. La siguiente imagen muestra las características de varios lenguajes de programación. Observe las características de Python que lo hacen orientado a objetos.

Clases de idioma Categorías Idiomas
Paradigma de programación Procesal C, C ++, C #, Objective-C, java, Go
Scripting CoffeeScript, JavaScript, Python, Perl, Php, Ruby
Funcional Clojure, Eralang, Haskell, Scala
Clase de compilación Estático C, C ++, C #, Objective-C, java, Go, Haskell, Scala
Dinámica CoffeeScript, JavaScript, Python, Perl, Php, Ruby, Clojure, Erlang
Clase de tipo Fuerte C #, java, Go, Python, Ruby, Clojure, Erlang, Haskell, Scala
Débiles C, C ++, C #, Objective-C, CoffeeScript, JavaScript, Perl, Php
Clase de memoria Administrado Otros
No gestionado C, C ++, C #, Objective-C

¿Qué es la programación orientada a objetos?

Object Orientedmedios dirigidos hacia objetos. En otras palabras, significa funcionalmente dirigido a modelar objetos. Esta es una de las muchas técnicas utilizadas para modelar sistemas complejos al describir una colección de objetos que interactúan a través de sus datos y comportamiento.

Python, una programación orientada a objetos (OOP), es una forma de programación que se enfoca en usar objetos y clases para diseñar y construir aplicaciones. Los pilares principales de la programación orientada a objetos (OOP) son Inheritance, Polymorphism, Abstraction, anuncio Encapsulation.

El análisis orientado a objetos (OOA) es el proceso de examinar un problema, sistema o tarea e identificar los objetos y las interacciones entre ellos.

¿Por qué elegir la programación orientada a objetos?

Python fue diseñado con un enfoque orientado a objetos. OOP ofrece las siguientes ventajas:

  • Proporciona una estructura de programa clara, que facilita el mapeo de problemas del mundo real y sus soluciones.

  • Facilita el mantenimiento y la modificación del código existente.

  • Mejora la modularidad del programa porque cada objeto existe de forma independiente y se pueden agregar nuevas funciones fácilmente sin alterar las existentes.

  • Presenta un buen marco para bibliotecas de código donde el programador puede adaptar y modificar fácilmente los componentes suministrados.

  • Imparte reutilización de código

Programación por procedimientos frente a programación orientada a objetos

La programación basada en procedimientos se deriva de la programación estructural basada en los conceptos de functions/procedure/routines. Es fácil acceder y cambiar los datos en la programación orientada a procedimientos. Por otro lado, la programación orientada a objetos (OOP) permite la descomposición de un problema en una serie de unidades llamadasobjectsy luego construir los datos y funciones alrededor de estos objetos. Hace más hincapié en los datos que en el procedimiento o las funciones. También en OOP, los datos están ocultos y no se puede acceder a ellos mediante un procedimiento externo.

La tabla de la siguiente imagen muestra las principales diferencias entre el enfoque POP y OOP.

Diferencia entre Programación Orientada a Procedimientos (POP) vs. Programación Orientada a Objetos (POO).

Programación orientada a procedimientos Programación orientada a objetos
Residencia en En Pop, todo el enfoque está en los datos y las funciones Vaya, se basa en un escenario del mundo real. Todo el programa se divide en partes pequeñas llamadas objeto
Reutilización Reutilización limitada de código Reutilización de código
Acercarse Enfoque de arriba hacia abajo Diseño centrado en objetos
Especificadores de acceso No cualquiera Público, privado y protegido
Movimiento de datos Los datos pueden moverse libremente de funciones a funcionar en el sistema En Oops, los datos pueden moverse y comunicarse entre sí a través de funciones miembro
Acceso a los datos En pop, la mayoría de las funciones utilizan datos globales para compartir a los que se puede acceder libremente de una función a otra en el sistema. En Vaya, los datos no pueden moverse libremente de un método a otro, se pueden mantener en público o privado para que podamos controlar el acceso a los datos
Ocultar datos En pop, una forma tan específica de ocultar datos, un poco menos segura Proporciona ocultación de datos, mucho más seguro.
Sobrecarga Imposible Funciones y sobrecarga del operador
Ejemplos de idiomas C, VB, Fortran, Pascal C ++, Python, Java, C #
Abstracción Utiliza la abstracción a nivel de procedimiento Utiliza abstracción a nivel de clase y objeto

Principios de la programación orientada a objetos

La programación orientada a objetos (OOP) se basa en el concepto de objects en lugar de acciones, y dataen lugar de lógica. Para que un lenguaje de programación esté orientado a objetos, debe tener un mecanismo que permita trabajar con clases y objetos, así como la implementación y el uso de los principios y conceptos fundamentales orientados a objetos, a saber, herencia, abstracción, encapsulación y polimorfismo.

Entendamos brevemente cada uno de los pilares de la programación orientada a objetos:

Encapsulamiento

Esta propiedad oculta detalles innecesarios y facilita la gestión de la estructura del programa. La implementación y el estado de cada objeto están ocultos detrás de límites bien definidos y eso proporciona una interfaz limpia y simple para trabajar con ellos. Una forma de lograr esto es hacer que los datos sean privados.

Herencia

La herencia, también llamada generalización, nos permite capturar una relación jerárquica entre clases y objetos. Por ejemplo, una 'fruta' es una generalización de 'naranja'. La herencia es muy útil desde la perspectiva de la reutilización de código.

Abstracción

Esta propiedad nos permite ocultar los detalles y exponer solo las características esenciales de un concepto u objeto. Por ejemplo, una persona que conduce un scooter sabe que al presionar una bocina se emite un sonido, pero no tiene idea de cómo se genera realmente el sonido al presionar la bocina.

Polimorfismo

Polimorfismo significa muchas formas. Es decir, una cosa o acción está presente de diferentes formas o modos. Un buen ejemplo de polimorfismo es la sobrecarga de constructores en clases.

Python orientado a objetos

El corazón de la programación Python es object y OOP, sin embargo, no es necesario que se limite a utilizar la programación orientada a objetos organizando su código en clases. OOP se suma a toda la filosofía de diseño de Python y fomenta una forma limpia y pragmática de programación. La programación orientada a objetos también permite escribir programas más grandes y complejos.

Módulos frente a clases y objetos

Los módulos son como "diccionarios"

Cuando trabaje en módulos, tenga en cuenta los siguientes puntos:

  • Un módulo de Python es un paquete para encapsular código reutilizable.

  • Los módulos residen en una carpeta con un __init__.py archivo en él.

  • Los módulos contienen funciones y clases.

  • Los módulos se importan utilizando el import palabra clave.

Recuerde que un diccionario es un key-valuepar. Eso significa que si tienes un diccionario con una claveEmployeID y desea recuperarlo, tendrá que usar las siguientes líneas de código:

employee = {“EmployeID”: “Employee Unique Identity!”}
print (employee [‘EmployeID])

Tendrá que trabajar en módulos con el siguiente proceso:

  • Un módulo es un archivo de Python con algunas funciones o variables en él.

  • Importe el archivo que necesita.

  • Ahora, puede acceder a las funciones o variables en ese módulo con el '.' (dot) Operador.

Considere un módulo llamado employee.py con una función llamada employee. El código de la función se da a continuación:

# this goes in employee.py
def EmployeID():
   print (“Employee Unique Identity!”)

Ahora importe el módulo y luego acceda a la función EmployeID -

import employee
employee. EmployeID()

Puede insertar una variable en ella llamada Age, como se muestra -

def EmployeID():
   print (“Employee Unique Identity!”)
# just a variable
Age = “Employee age is **”

Ahora, acceda a esa variable de la siguiente manera:

import employee
employee.EmployeID()
print(employee.Age)

Ahora, comparemos esto con el diccionario:

Employee[‘EmployeID’] # get EmployeID from employee
Employee.employeID() # get employeID from the module
Employee.Age # get access to variable

Tenga en cuenta que hay un patrón común en Python:

  • Tomar un key = value contenedor de estilo

  • Saca algo con el nombre de la llave

Al comparar el módulo con un diccionario, ambos son similares, excepto con lo siguiente:

  • En el caso de dictionary, la clave es una cadena y la sintaxis es [clave].

  • En el caso de module, la clave es un identificador y la sintaxis es .key.

Las clases son como módulos

El módulo es un diccionario especializado que puede almacenar código Python para que pueda acceder a él con el '.' Operador. Una clase es una forma de tomar una agrupación de funciones y datos y colocarlos dentro de un contenedor para que pueda acceder a ellos con el operador '.'.

Si tiene que crear una clase similar al módulo de empleado, puede hacerlo usando el siguiente código:

class employee(object):
   def __init__(self):
      self. Age = “Employee Age is ##”
   def EmployeID(self):
      print (“This is just employee unique identity”)

Note- Se prefieren las clases a los módulos porque puede reutilizarlas tal como están y sin mucha interferencia. Mientras que con los módulos, solo tiene uno con todo el programa.

Los objetos son como mini-importaciones

Una clase es como un mini-module y puede importar de manera similar a como lo hace para las clases, usando el concepto llamado instantiate. Tenga en cuenta que cuando crea una instancia de una clase, obtiene unobject.

Puede crear una instancia de un objeto, similar a llamar a una clase como una función, como se muestra:

this_obj = employee() # Instantiatethis_obj.EmployeID() # get EmployeId from the class
print(this_obj.Age) # get variable Age

Puede hacer esto de cualquiera de las siguientes tres formas:

# dictionary style
Employee[‘EmployeID’]
# module style
Employee.EmployeID()
Print(employee.Age)
# Class style
this_obj = employee()
this_obj.employeID()
Print(this_obj.Age)