Autor Tema: Clase De Python 4 [Parte 2] por Rock Lee  (Leído 1346 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Conectado Rock Lee

  • Administrador
  • *
  • Mensajes: 1122
    Ingreso: Enero de 2014
  • Sexo: Masculino
  • ar
  • Digitalizando tu Mundo
    • Ver Perfil
    • La nueva era del conocimiento
Clase De Python 4 [Parte 2] por Rock Lee
« on: 14 Agosto de 2014, 11:41 am »
Buenas chicos/as ya han pasado unos días desde que publique la primera parte por eso vamos por la 2da parte y esta vez trataremos el tema de Programación Orientada a Objetos con Python!


POO en Python

Python está completamente preparado para soportar la programación orientado a objetos, cuando se utiliza la programación orientada a objetos se puede:

 Definir nuevas clases.
 Utilizar mecanismos para definir relaciones de herencia entre clases.
 Instanciar las clases ya definidas en el sistema o las que haya definido el desarrollador.


Clases en Python

Una clase de Python empieza con la palabra reservada class, seguida de su nombre y finalizando con : . Por convención los nombres de clases deben comenzar en mayúscula y todo lo que va dentro de una clase se escribe con sangría [igual que la funciones, if, bucle for, etc.]. La primer sentencia que no esté con sangría, no pertenece a la clase, bien siguiendo la linea del  ejemplo anterior aplicaremos una Clase Ascensor.

Código: (Python) [Seleccionar]
class Ascensor:        #Nombre de la Clase#
    def _init_(self):
        self._pisoActual=0

    def subir(self):
        self._pisoActual=self._pisoActual+1        #Cuerpo de la Clase Ascensor#

    def bajar(self):
        self._pisoActual=self._pisoActual-1

    def getPisoActual(self):
        return self._pisoActual

def volver(piso):
    return piso-1        #Código no perteneciente a la Clase Ascensor#
print volver(21)


Instancias en Python

Para crear un objeto o instanciarlo a partir de una clase se utiliza la notación de funciones,o sea se
escribe el nombre de la clase seguido por dos paréntesis, uno de apertura y otro de cierra:

Código: (Python) [Seleccionar]
ascensor1=Ascensor()

ascensor2=Ascensor()    #Creación de tres instancias de la clase Ascensor#

ascensor3=Ascensor()

Self

La palabra reservada self sirve para referirse al objeto actual, es utilizada dentro del propio objeto para señalarse a si mismo. En todos los métodos de una clase el primer parámetro es siempre self. Esta referencia a si mismo es necesaria para poder acceder a los
atributos y métodos del objeto diferenciando, por ejemplo, una variable local, de una de instancia; las cuales comparten el mismo nombre.

Código: (Python) [Seleccionar]
class Ascensor:

    def _init_(self):
        _pisoActual=0
        self._pisoActual=_pisoActual        #Sirve para eliminar la ambigüedad. Nos permite especificar a que __pisoActual estoy haciendo referencia, la variable de instancia o la variable local#


Atributos en Python

Los atributos o variables de instancia son los contenedores del estado de un objeto. Estos se utilizan para almacenar los datos que deben manejarse en un objeto. Para asignar o accesar la información que se almacena en ellos se utiliza la notación de punto.

Código: (Python) [Seleccionar]
class Ascensor:
    def _init_(self):
        self._pisoActual=0

    def subir(self):        #Referencia a la instancia actual es decir el self de la siguiente linea ademas a continuacion se encuentra notación de punto#
        self._pisoActual=self._pisoActual+1        #Atributo que almacena el piso actual en el cual se encuentre el ascensor#

    def bajar(self):
        self._pisoActual=self._pisoActual-1

    def getPisoActual(self):
        return self._pisoActual

Declaración de Métodos
Los métodos en Python son muy similares a las funciones, las similitudes más significativas son:

– La definicion de los metodos: def nombreMetodo(parametros): 
– El cuerpo debe estar indentado.
– Pueden o no retornar un resultado.

Pero se diferencian de las funciones en que:
– Los métodos se encuentran dentro de una definición de clase.
– El primer parámetro siempre debe ser self. Aunque no se use.

Invocación de Métodos
La forma en que los métodos son invocados difiere de la forma de invocar a las funciones. La notación de punto se utiliza para invocar los métodos y al invocar un método el parámetro self se omite ya que esta implícito en el objeto.



Constructores
Los constructores son métodos especiales mediante los cuales los programadores pueden inicializar una instancia, los mismos se ejecutan justo después de instanciar un objeto. También los constructores en Python se definen codificando un método especial llamado __init__.
En el __init__ se inicializa las variables de instancia del objeto, dejandolas disponibles para comenzar a operar con ellas a través de los métodos. Un ejemplo de la utilización de un constructor para inicializar una variable de instancia en los objetos ascensor...



Métodos Especiales
Existen métodos con significados especiales aparte del __init__ y que cuyos nombres siempre comienzan y terminan con dos guiones bajos. A continuación se listan dos especialmente útiles:

__str__(self): Método para crear una cadena de texto que represente al objeto. Se utiliza cuando usamos print para mostrar al objeto o cuando usamos la función str(obj) para crear una cadena a partir del objeto

__cmp__(self, otro): Método llamado cuando se utilizan los operadores de comparación para comprobar si el objeto es menor, mayor o igual al objeto pasado como parámetro. Devuelve un número negativo si el objeto es menor, cero si son iguales, y un número positivo si el objeto es mayor. Si este método no está definido y se intenta comparar el objeto mediante los operadores <, <=, > o >= se lanzará una excepción. Si se utilizan los operadores == o != para comprobar si dos objetos son iguales, se comprueba si son el mismo objeto (si tienen el mismo id).


Encapsulamiento y Ocultamiento de información

Encapsulamiento
Es un mecanismo que consiste en construir una “cápsula” que funciona como una barrera, alrededor de la información y de las operaciones de los objetos. Establece la siguiente regla: “todas estas cosas deben permanecer juntas”. La programación estructurada no provee mecanismos para encapsular.



Ocultamiento de información
Es la capacidad de ocultar los detalles internos del comportamiento de un objeto y exponer sólo los que son
necesarios para el resto del sistema. Del objeto, se conoce solo la interface pública, compuesta por los métodos y datos que podrán ser requeridos por otros objetos del sistema, el resto forma parte de la representación privada de los objetos.
En Python el ocultamiento de un atributo o método viene determinado por su nombre: si el nombre comienza con dos guiones bajos (y no termina también con dos guiones bajos) se trata de un atributo o método privado, en caso contrario es público.



RESUMEN:
Todo es un objeto: un  programa orientado a objetos, esta organizado como una comunidad de objetos interactuando. La computación se lleva a cabo por objetos que interactúan entre si enviándose mensajes.

Todos los objetos son instancias de una clase. El método invocado por un objeto en respuesta a un mensaje es determinado por la clase del objeto receptor.Una clase es un molde con una estructura y comportamiento asociado, que tendrán todos los objetos que con ella se creen. Todos los objetos que con ella se crean, tendrán los mismos datos (con diferentes valores o no) y podrán ejecutar los mismos métodos.

El encapsulamiento y el ocultamiento de información se complementan, para aislar las diferentes partes de un sistema, permitiendo que el código sea modificado y extendido sin producir efectos colaterales.



Espero todo este viento en popa ;D por eso llegamos hasta aquí por ahora :-X ahora les dejo un poco de tarea ja ja ja solamente son unas preguntas: ¿Haz entendido hasta acá perfectamente todo? ¿Te gustaría siguiera con estas clases? ¿Que Clases te gustaría se vieran?

Recordar: Ante cualquier duda o sugerencia sera muy bien recibida simplemente deja un comentario ;) ademas es material que tengo y por tal motivo voy observando que cosas pueden entrar o cuales no es necesario incluir. También puede que se encuentre algún error o cosas no tan claras por eso pido disculpas!


...Un Saludo Para Todos!...

<<< Continuación >>> Clase De Python 5.
« Última Modificación: 06 Junio de 2016, 05:29 pm por Ninokap »