tutoriales de programación | grupocodesi.com

Programación orientada a objetos en Python

POO u OPP en Python

constantes curso de programación

La programación orientada a objetos en python (POO, u OOP según sus siglas en inglés) es un paradigma de programación que viene a innovar la forma de obtener resultados. Los objetos manipulan los datos de entrada para la obtención de datos de salida específicos, donde cada objeto ofrece una funcionalidad especial.

Muchos de los objetos prediseñados de los lenguajes de programación actuales permiten la agrupación en bibliotecas o librerías, sin embargo, muchos de estos lenguajes permiten al usuario la creación de sus propias bibliotecas.

Está basada en varias técnicas, como las siguientes:

La POO tiene sus raíces en la década del 60 con el lenguaje de programación Simula que en 1967, el cual fue el primer lenguaje que posee las características principales de un lenguaje orientado a objetos.

Smalltalk (de 1972 a 1980) es posiblemente el ejemplo canónico, y con el que gran parte de la teoría de la POO se ha desarrollado. Más su uso se popularizó a principios de la década de 1990.

En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objetos.

Los objetivos de la POO son:

Nota

Más información consulte el curso de Python curso de python - Programación orientada a objetos.

Utilidad de una constante a nivel código

POO en Python

El mecanismo de clases de Python agrega clases al lenguaje con un mínimo de nuevas sintaxis y semánticas.

En Python las clases es una mezcla de los mecanismos de clase encontrados en C++ y Modula-3.

Como es cierto para los módulos, las clases en Python no ponen una barrera absoluta entre la definición y el usuario, sino que más bien se apoya en la cortesía del usuario de no “forzar la definición”.

Sin embargo, se mantiene el poder completo de las características más importantes de las clases: el mecanismo de la herencia de clases permite múltiples clases base, una clase derivada puede sobrescribir cualquier método de su(s) clase(s) base, y un método puede llamar al método de la clase base con el mismo nombre.

“Los objetos pueden tener una cantidad arbitraria de datos.”

En terminología de C++, todos los miembros de las clases (incluyendo los miembros de datos), son públicos, y todas las funciones miembro son virtuales.

Como en Modula-3, no hay atajos para hacer referencia a los miembros del objeto desde sus métodos: la función método se declara con un primer argumento explícito que representa al objeto, el cual se provee implícitamente por la llamada.

Como en Smalltalk, las clases mismas son objetos. Esto provee una semántica para importar y renombrar.

A diferencia de C++ y Modula-3, los tipos de datos integrados pueden usarse como clases base para que el usuario los extienda.

También, como en C++ pero a diferencia de Modula-3, la mayoría de los operadores integrados con sintaxis especial (operadores aritméticos, de subíndice, etc.) pueden ser redefinidos por instancias de la clase.

(Sin haber una terminología universalmente aceptada sobre clases, haré uso ocasional de términos de Smalltalk y C++. Usaría términos de Modula-3, ya que su semántica orientada a objetos es más cercana a Python que C++, pero no espero que muchos lectores hayan escuchado hablar de él).

Algunas particularidades de POO en Python son las siguientes:

A continuación se procede a definir algunos conceptos necesarios para entender la POO:

ficheros para almacenar una constante

Objetos

Los objetos son abstracción de Python para data. Toda la data en un programa Python es representado por objectos o por relaciones entre objectos. (En cierto sentido, y en el código modelo de Von Neumann de una “computadora almacenada del programa” también es un código representado por los objetos.)

Si deseas aprender y dominar más este lenguaje de programación orientada a objetos en python te podemos recomendar un excelente curso de python que muchas personas lo recomiendan en internet y redes sociales.

Cada objeto tiene una identidad, un tipo y un valor. Una identidad de objecto nunca cambia una vez es creada; usted puede pensar eso como la dirección de objeto en memoria. El operador in compara la identidad de dos objetos; la función id() devuelve un número entero representando la identidad (actualmente implementado como su dirección).

El tipo de un objeto también es inmutable. El tipo de un objeto determina las operaciones que admite el objeto (por ejemplo, “¿tiene una longitud?”) Y también define los valores posibles para los objetos de ese tipo. La función “ type()” devuelve el tipo de un objeto (que es un objeto en sí mismo). El valor *de algunos objetos puede cambiar. Se dice que los objetos cuyo valor puede cambiar son *mutables; los objetos cuyo valor no se puede cambiar una vez que se crean se llaman immutable. (El valor de un objeto contenedor inmutable que contiene una referencia a un objeto mutable puede cambiar cuando se cambia el valor de este último; sin embargo, el contenedor todavía se considera inmutable, porque la colección de objetos que contiene no se puede cambiar. Por lo tanto, la inmutabilidad no es estrictamente lo mismo que tener un valor incambiable, es más sutil.) La mutabilidad de un objeto está determinada por su tipo; por ejemplo, los números, las cadenas y las tuplas son inmutables, mientras que los diccionarios y las listas son mutables.

Los objetos son la clave para entender la POO. Si mira a nuestro alrededor encontrará un sin fin de objetos de la vida real: perro, escritorio, televisor, bicicleta, etc...

En Python puede definir una clase con la palabra reservada class, de la siguiente forma:
class Persona:
pass

En el ejemplo anterior, el nombre de la clase es Persona y dentro del bloque de código usa la sentencia pass. Aunque no es requerido por el intérprete, los nombres de las clases se escriben por convención capitalizadas. Las clases pueden (y siempre deberían) tener comentarios.

Diagrama de Objeto Persona

como usar una constante para programar correctamente

Estado de un objeto

El conjunto de datos y objetos relacionados con un objeto en un momento dado, se le conoce como “estado”. Un objeto puede tener múltiples estados a lo largo de su existencia conforme se relaciona con su entorno y otros objetos.

Atributos

Los atributos o propiedades de los objetos son las características que puede tener un objeto, como el color. Si el objeto es Persona, los atributos podrían ser: cedula, nombre, apellido, sexo, etc...

Los atributos describen el estado de un objeto. Pueden ser de cualquier tipo de dato.

class Persona:
"""Clase que representa una Persona"""
cedula ="V-13458796"
nombre="Leonardo"
apellido="Caballero"
sexo="M"

Usted puede probar el código anterior, si lo transcribe en el consola interactiva Python como lo siguiente:

necesitas una pagina web

Métodos

Los métodos describen el comportamiento de los objetos de una clase. Estos representan las operaciones que se pueden realizar con los objetos de la clase,

La ejecución de un método puede conducir a cambiar el estado del objeto.

Se definen de la misma forma que las funciones normales pero deben declararse dentro de la clase y su primer argumento siempre referencia a la instancia que la llama, de esta forma se afirma que los métodos son funciones, adjuntadas a objectos.

Usted puede encontrar ejemplos en las funciones de cadena de caracteres,listas, diccionarios, etc.

Si el objeto es Persona, los métodos pueden ser: hablar, caminar, comer, dormir, etc.

Ámbito de los métodos

Los métodos cuentan con un espacio de nombres propio. En caso de no encontrar un nombre en su ámbito local, buscará en el ámbito superior hasta encontrar alguna coincidencia.

Los métodos pueden acceder y crear atributos dentro del objeto al que pertenecen, anteponiendo la palabra self y el operador de atributo ”.” antes del nombre del atributo en cuestión.

Métodos especiales

Las clases en Python cuentan con múltiples métodos especiales, los cuales se encuentran entre dobles guiones bajos __<metodo>__().

Los métodos especiales más utilizados son __init__(), __str__() y __del__().

__str__()

El método __str__() es un método especial, el cual se ejecuta al momento en el cual un objeto se manda a mostrar, es decir es una cadena representativa de la clase, la cual puede incluir formatos personalizados de presentación del mismo.

__del__()

El método __del__() es un método especial, el cual se ejecuta al momento en el cual un objeto es descartado por el intérprete. El comportamiento de __del__() es muy similar a los “destructores” en otros lenguajes.

Métodos de clase

En ocasiones es necesario contar con métodos que interactúen con elementos de la clase de la cual el objeto es instanciado. Python permite definir métodos de clase para esto.

Los métodos de clase son aquellos que están ligados directamente con los atributos definidos en la clase que los contiene. Para definir un método de clase se utiliza el decorador @classmethod y por convención se utiliza cls como argumento inicial en lugar de self.

Del mismo modo, los métodos de clase utilizan el prefijo cls para referirse a los atributos de la clase.

Métodos estáticos

Los métodos estáticos hacen referencia a las instancias y métodos de una clase. Para definir un método estático se utiliza el decorador @staticmethod y no utiliza ningún argumento inicial.

Al no utilizar self, los métodos estáticos no pueden interactuar con los atributos y métodos de la instancia.

Para referirse a los elementos de la clase, se debe utilizar el nombre de la clase como prefijo.

Interfaces

La forma en que los métodos de un objeto pueden ser accedidos por otros objetos se conoce como “interfaz”. Una interfaz bien definida permite a objetos de distinta índole interactuar entre sí de forma modular. La interfaz define el modo en que los objetos intercambian información.

Implementaciones

Una implementación corresponde al mecanismo interno que se desencadena en un método cuando éste es llamado. Las implementaciones procesan las entradas proveniente de las interfaces y actúan en consecuencia ya sea:

Clases

Las clases definen las características del objeto.

Con todos los conceptos anteriores explicados, se puede decir que una clase es una plantilla genérica de un objeto. La clase proporciona variables iniciales de estado (donde se guardan los atributos) e implementaciones de comportamiento (métodos) necesarias para crear nuevos objetos, son los modelos sobre los cuáles serán construidos.

Instancias

Ya sabe que una clase es una estructura general del objeto. Por ejemplo, puede decir que la clase Persona necesita tener una cedula, un nombre, un apellido y una sexo, pero no va a decir cual es cedula, nombre, apellido y sexo, es aquí donde entran las instancias.

También hemos estado investigando y hemos notado otro interesante curso de python del cual también tienen muchas buenas criticas, recuerda que un curso presencial tiene mucho más peso en valor curricular, actualmente existen muchos cursos en linea, sin embargo y por lo menos en México no tienen valor curricular para las empresas, es por esa razón que nosotros nos hemos dado a la tarea de investigar los mejores cursos en México

Por el momento, puedes tomar nuestro curso de Excel. Si te interesa la programación, puedes tomar nuestro curso de java

Articulos Relacionados a la tecnología Java

Diseño Web Grupo Codesi