Concepto de Programación Orientada a Objetos en Python

Publicado: 2020-12-01

Orientado a objetos es un paradigma de programación que sigue el concepto de clases y objetos en lugar de funciones y lógica. También se conoce como la forma elegante de codificación que organiza el código de una manera que aumenta la legibilidad y el mantenimiento del código. El concepto OOP es un tema importante en la programación y ayuda a construir módulos reutilizables para una variedad de tareas en Data Science.

Esto suele ser un requisito previo al crear modelos de aprendizaje profundo utilizando varias bibliotecas, como Pytorch, donde el modelo base se reutiliza para agregar capas personalizadas. Exploremos lo que enseña este concepto y cómo aplicarlo en casos de uso práctico.

Tabla de contenido

¿Qué es el concepto OOP?

Considere un teléfono inteligente que puede ser de cualquier marca, pero hay una variedad de cosas comunes entre todos ellos. Todos tienen pantallas, parlantes, botones y, a nivel de software, casi todos funcionan con Android. Ahora considere un caso en el que todas las empresas están creando su software desde cero, incluso el kernel que controla la mayoría de los componentes de hardware.

Esto se convertiría en un proceso tedioso y costoso, por lo tanto, aumentando el precio de los dispositivos. ¿Qué pasa si hay un modelo abstracto o generalizado que cualquier fabricante puede cambiar con el tiempo de acuerdo con sus requisitos? Este concepto intenta capturar este método basado en clases donde el código está estructurado en clases con diferentes métodos de acceso.

¿Qué son las clases y los objetos?

Las clases son los planos de lo que se tiene que implementar. Si consideramos nuestro ejemplo anterior, podemos tener funcionalidades para llamar a una persona, recibir llamadas, mensajes, reproducir música o hacer algunas otras cosas.

Todas estas cosas son comunes para todos los teléfonos inteligentes, su funcionamiento interno también es similar y pueden considerarse como una clase de funciones de teléfonos inteligentes o una clase. Los objetos se pueden definir como todas las marcas de teléfonos inteligentes que utilizarán esta implementación común en sus productos con modificaciones.

Puede haber varias instancias de esta clase base y cada instancia puede contener un estado diferente de valores sin interferir con otros objetos. En Python, una clase se puede declarar utilizando la palabra clave reservada class. Además, el constructor __init__ se usa para inicializar las variables de clase.

empresa de clase:

def __init__ (uno mismo):

self.name = 'upGrad'

def display_name (auto):

print(f”El nombre de la empresa es: {self.name}”)

cm = Empresa()

cm.display_name()

Lea también: Salario de desarrollador de Python en India

Diferentes pilares de OOP

Ahora que estamos familiarizados con los componentes básicos de este paradigma, veamos algunas de las funciones/características más importantes de este concepto:

Encapsulación

Esto establece que los métodos (o funciones) de la clase y los datos asociados con ella están encapsulados o protegidos contra el acceso accidental o externo. Esto significa que los atributos definidos en ámbito privado o protegido no son accesibles fuera de la clase.

Existe una preocupación por Python de que no existe un concepto de variables privadas en este lenguaje, por lo que los atributos son accesibles fuera de la clase.

Hay una manera de reconocer los atributos privados mediante el uso de un doble guión bajo al comienzo de la declaración y si intenta acceder a esto fuera de la clase a través del objeto de la misma, se le solicitará AttributeError porque Python aplica la manipulación de nombres cada vez que detecta una variable privada. Esto no da ninguna seguridad a sus atributos porque aún son accesibles.

Herencia

Como sugiere la palabra, está tomando una parte de una clase existente llamada clase principal a una nueva clase llamada clase secundaria con pocos o ningún cambio. Podemos conectar esto con nuestro ejemplo de esta manera, todas las marcas de teléfonos inteligentes heredan una clase de teléfono genérico que les ayudará a realizar funciones básicas, además pueden agregar sus códigos adicionales para mejorar la experiencia del usuario según sus necesidades. En Python, la herencia de una clase se realiza mediante:

clase A:

algo de contenido

clase B(A):

contenido de la clase derivada

Hay otro concepto relacionado con la herencia llamado anulación de funciones. Supongamos que la función de cámara del teléfono inteligente genérico no es tan buena y el fabricante tiene una mejor solución para esto. Pueden anular directamente esta función definiéndola nuevamente en la clase secundaria y aplicar los cambios allí.

Abstracción

Define el modelo o una interfaz para las implementaciones de las subclases. Significa que algunos métodos están definidos en la clase base que no está completamente implementada y solo se define una vista abstracta. Puede ayudar a rastrear las diversas características del módulo y los submódulos que se crearán.

Por ejemplo, algunos teléfonos inteligentes admiten NFC (conectividad de campo cercano) y esta funcionalidad se puede definir en la clase base y su implementación se puede codificar en la clase secundaria del teléfono resultante. De esta forma, la clase base abstracta puede proporcionar la vista general del módulo y las implementaciones posteriores. Aquí hay un ejemplo:

Teléfono de la clase:

cámara def (auto):

pasar

def NFC(auto):

pasar

clase Xyz (teléfono):

def NFC(auto):

volver verdadero

Más información sobre: ​​las principales herramientas de Python

Polimorfismo

Si vamos por el significado de la raíz, significa múltiples formas de la misma cosa. El polimorfismo define las funciones en función del número o tipos de argumentos pasados. Por ejemplo, la función de longitud en Python puede tomar cualquier tipo de iterable u objeto y devuelve la longitud entera.

Esto también se puede citar como sobrecarga de funciones, pero aquí hay una trampa en el lenguaje Python. No podemos definir funciones del mismo nombre con diferentes argumentos y, si se hace, considera solo la última entrada.

Casos prácticos de uso de programación orientada a objetos

Hemos visto de qué se trata este concepto y qué características ofrece. Echa un vistazo a algunos ejemplos donde puedes aplicar este concepto:

Plantillas Jinja: si tiene algo de experiencia con el marco Flask de Python que maneja las rutas y el lado del servidor, esta plantilla ayuda a manejar estos datos en el front-end. Generalmente, se crea un archivo HTML base que luego es heredado por todas las páginas para tener el mismo diseño en todo el sitio web.

Aplicaciones Kivy: esta es una biblioteca que le permite crear aplicaciones python basadas en GUI multiplataforma (Android e IOS) y aquí la mayor parte de la programación se basa en el concepto OOP.

ORM: Object-relational Mappers ofrece una forma de definir las bases de datos relacionales en el código de la aplicación usando cualquier lenguaje. Por ejemplo, en Django, puedes definir diferentes tipos de modelos usando clases para diferentes tipos de usuarios.

Conclusión

En este artículo, discutimos qué es el concepto OOP, sus componentes básicos (clases y objetos), diferentes pilares y destacamos algunos ejemplos en los que se adopta este paradigma. Hay numerosos lugares donde se considera este método de programación debido a una mejor gestión del código, colaboración y provisión de funcionalidades abstractas a otros programas que dependen de este.

Si tiene curiosidad por aprender sobre python, ciencia de datos, consulte el Diploma PG en ciencia de datos de IIIT-B y upGrad, creado para profesionales que trabajan y ofrece más de 10 estudios de casos y proyectos, talleres prácticos, tutoría con expertos de la industria, 1 a 1 con mentores de la industria, más de 400 horas de aprendizaje y asistencia laboral con las mejores empresas.

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

La programación orientada a objetos, abreviada como OOP, es una técnica de programación informática que organiza los diseños de software según los datos, en lugar de organizarlos según las funciones y la lógica. OOP se enfoca en los objetos, es decir, campos de datos con propiedades y comportamiento distintos que los desarrolladores desean controlar en lugar de la lógica necesaria para administrarlos. Este método de programación es ideal para aplicaciones grandes y complicadas que se actualizan o mantienen constantemente. OOP cubre iniciativas de fabricación, diseño y aplicaciones móviles. Otras ventajas de este lenguaje son la reutilización del código, la escalabilidad y la eficiencia.

¿Cuáles son los diferentes idiomas en OOP?

Los lenguajes de programación orientados a objetos constituyen varios de los lenguajes de codificación más utilizados en la industria informática actual. Los lenguajes OOP se encuentran en todas partes. Estos lenguajes hacen uso de objetos que contienen datos y código. La encapsulación, la abstracción, el polimorfismo y la herencia son ideas de programación orientada a objetos. Los lenguajes de programación orientados a objetos populares incluyen Java, Python, C++, Lisp y Perl. Ayudan con la programación utilizando el paradigma de clases y objetos. Otros lenguajes que admiten principios orientados a objetos son Perl, Objective-C, Dart, Lisp, JavaScript y PHP.

¿Por qué se prefieren los OOP?

Hay muchas razones por las que se prefieren los OOP. Los desarrolladores pueden reutilizar código orientado a objetos. También puede usar la herencia para duplicar información y funcionalidad que se haya creado previamente. Esto ahorra tiempo, simplifica el código, ahorra espacio y facilita la codificación en nuestros dedos. Dado que la mayor parte del código está en una ubicación y se llama y reutiliza, es considerablemente más fácil de mantener. Si bien la mayoría de los lenguajes ofrecen cierto nivel de seguridad, los lenguajes orientados a objetos son más convenientes ya que la encapsulación incluye seguridad. Los lenguajes de programación orientados a objetos dividen un programa en objetos y clases. Esto es ventajoso ya que proporciona a su aplicación un marco más modular.