SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
Algoritmos y Programación




                            Clase 4:
Programación Orientada
      a Objetos


                                       www.unaj.edu.ar
Algoritmos y Programación




          Temario
         • Conceptos de la Programacion Orientada a Objetos
              – Definicion de Objetos de software
              – Estado y comportamiento
              – Mensajes
         • Programacion Orientada a Objetos en Python
              –   Definicion de clases
              –   Definicion de atributos
              –   Definicion e Invocacion de metodos
              –   Constructores
         • Encapsulamiento y ocultamiento de información

                                                           www.unaj.edu.ar
Algoritmos y Programación




    Conceptos de la Programación
        Orientada a Objetos




                              www.unaj.edu.ar
Algoritmos y Programación



                  Programación Orientada a Objetos




                       La orientación a objetos es similar a la
                                     manera en
                          que la gente percibe su entorno




                                                                  www.unaj.edu.ar
Algoritmos y Programación



                  ¿Que son los Objetos?
           Uno puede mirar a su alrededor y ver muchos objetos del mundo real: un
           perro, un escritorio, un televisor, una bicicleta etc..
         Cada uno de los objetos comparten dos características: Estado y
            Comportamiento.

     Ejemplos:

Una bicicleta tiene estado: cadena, número de cambios, cambio actual
                    comportamiento: acelerar, realizar un cambio, frenar, etc.
                             .



                   Un perro tiene estado: nombre, color, raza.
                                  comportamiento: ladrar, correr, jugar, etc.


                                                                         www.unaj.edu.ar
Algoritmos y Programación



          Describiendo a los Objetos

         •    Los objetos de software son modelos de objetos
              del mundo real y ellos también tienen estados y
              comportamientos.

         •    Un objeto de software mantiene sus estados en
              variables e implementa su comportamiento en
              métodos.




                                                       www.unaj.edu.ar
Algoritmos y Programación



            Representado Objetos
        •    Podríamos representar objetos                del   mundo        real
             utilizando objetos de software.

        •    Por ejemplo podríamos representar a un perro como
             un objeto de software dentro de un programa.


                                 Nuestra Representación



            Objeto Real: Perro                            Objeto Software: Perro



                                                                        www.unaj.edu.ar
Algoritmos y Programación



          Objetos Abstractos

      Podríamos representar objetos abstractos, (objetos que no
      tienen una representación física en nuestro mundo real)
      como un objeto de software.
      Un ejemplo podría ser la representación de una cuenta
      bancaria.

                      Cuenta     Caja de   Plazo
                     Corriente   Ahorro     Fijo




                                                        www.unaj.edu.ar
Algoritmos y Programación



          Identificando Objetos



                 Los sustantivos son un buen punto de partida
                   para determinar los objetos de un sistema




                                                                www.unaj.edu.ar
Algoritmos y Programación


          Identificando Objetos

       Supongamos que María quiere ir a su departamento que
       está ubicado en el tercer piso del edificio.

 ¿qué objetos podemos identificar?
                       •    María
                       •    Ascensor
                       •    Departamento
                       •    Edificio
                       •    Portón de entrada
                       •    Ventanas




                                                       www.unaj.edu.ar
Algoritmos y Programación


          Identificando Objetos
         •    Es importante identificar los objetos y quedarnos
              solamente con aquellos que son de nuestro
              interés, teniendo siempre presente que es lo que
              nosotros queremos modelar / representar.

         •    Identificar los objetos es un arte y no una
              ciencia.

         •    El resultado dependera del contexto y punto de
              vista de quien modela.

                                                         www.unaj.edu.ar
Algoritmos y Programación


         Objetos a Modelar
        Programación Orientada a Objetos

         Selección de los objetos que queremos modelar

                            •   María
                            •   Ascensor
                            •   Departamento
                            •   Edificio
                            •   Portón de entrada
                            •   Ventanas




                                                    www.unaj.edu.ar
Algoritmos y Programación


         Interactuando con los Objetos
        Programación Orientada a Objetos

         ¿Que hace entonces María para llegar hasta su departamento?


1 Se para delante de la puerta del ascensor y lo llama.



                                     Mensaje




                            Emisor                Receptor



                                                              www.unaj.edu.ar
Algoritmos y Programación


          Interactuando con los Objetos

   2 El ascensor llega, abre la puerta, entra María. El ascensor
     espera que María le indique a que piso quiere ir.




    3 María le indica a que piso quiere ir, entonces el ascensor
      cierra la puerta y la lleva hasta el piso seleccionado.


                                                           www.unaj.edu.ar
Algoritmos y Programación


          Mensajes y Responsabilidades
           En esta secuencia podemos observar la interacción
           existente entre los dos objetos que hemos
           identificado:
                   María se comunicó con el ascensor:
                1 A través de un mensaje lo llamó
                2 El ascensor tiene la responsabilidad de ir al lugar
                   donde María lo llamó
                3 María sube al ascensor y a través de un nuevo mensaje
                   le dice que la lleve a un determinado piso
                4 El ascensor tiene la responsabilidad de llevarla al piso
                   indicado



                                                                             www.unaj.edu.ar
Algoritmos y Programación



          Estado y Comportamiento
         Con este ejemplo pudimos ver como representar situaciones de la
         vida real a través de objetos.



            ¿Cuál es el estado y el comportamiento del ascensor?


                            Estado                              Comportamiento
                            Piso actual                         Subir
                            Estado puerta (abierta / cerrada)   Bajar
                            Cantidad de ocupantes               Abrir la puerta
                            Máxima cantidad de ocupantes        Cerrar la puerta
                            Piso Máximo                         Responder a un llamado
                            Piso Mínimo



                                                                                  www.unaj.edu.ar
Algoritmos y Programación



          Estado y Comportamiento
         ¿Cuál es el estados y el comportamiento de María?

                 Estado            Comportamiento
                 Nombre            sabe decir como se llama
                 Apellido          sabe decir cuantos años tiene
                 Edad              sabe decir en que piso vive
                 Domicilio         sabe su numero de Documento
                 Documento




                                                                   www.unaj.edu.ar
Algoritmos y Programación


          Mensajes
           Los objetos tienen estado y comportamiento, pero ¿Cómo se
           comunican entre ellos?



      ¿cuáles son los mensajes que María utiliza para comunicarse
                          con el ascensor?
                            1 - Llamar
                            2 – Abrir la puerta
                            3 – Cerrar la puerta
                            4 – Subir (pisos)
                            5 – Abrir puerta

                emisor      6 – Cerrar puerta       receptor


                                                                  www.unaj.edu.ar
Algoritmos y Programación


          Métodos vs. funciones

         Existen 2 distinciones importantes:
          1 En un mensaje, siempre hay designado un receptor para aquel mensaje;
         es algún objeto, al cual se le envía un mensaje. Cuando se llama a una
         función, NO hay receptor.
          2 La interpretación del mensaje (el método usado para responder al
         mensaje) es determinado por el receptor y podría variar para diferentes
         receptores.

                                                                       ?


                                                               Receptor
   Receptor                         emisor

                                                                       www.unaj.edu.ar
Algoritmos y Programación


          Clases e instancias
           María al igual que otras personas que deciden tomar un ascensor,
           tienen características comunes: saben pedir un ascensor,
           presionar a que piso desean ir, descender, etc.., esto es porque
           pertenecen a una Categoría o Clase que podriamos llamar
           ”pasajero”.

       Una clase es un molde a partir de la cual se crean
          instancias con las mismas características y
                       comportamiento.

                                  María y otras personas que hacen uso del ascensor
                                         son instancias de la clase pasajero




                                                                           www.unaj.edu.ar
Algoritmos y Programación




          Programación Orientada a
             Objetos con Python




                                     www.unaj.edu.ar
Algoritmos y Programación


            POO en Python
           •   Python está completamente preparado para
               soportar la programacion orientado a objetos.

           •   En Python cuando se utiliza la programacion
               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.




                                                                             www.unaj.edu.ar
Algoritmos y Programación


         Clases en Python
        Programación Orientada a Objetos
           • 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 .

           • 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.


                                                                www.unaj.edu.ar
Algoritmos y Programación


         Clase Ascensor en Python
        Programación Orientada a Objetos
           • Definamos la clase Ascensor del ejemplo anterior.

                                                  Nombre de la clase




                                                    Cuerpo de la
                                                    clase Ascensor




                                                  Codigo no
                                                  perteneciente
                                                  a la clase Ascensor


                                                            www.unaj.edu.ar
Algoritmos y Programación


         Instancias en Python
        Programación Orientada a Objetos
           • Para crear un objeto o instanciarlo a partir de una
             clase se utiliza la notacion de funciones,o sea se
             escribe el nombre de la clase seguido por dos
             paréntesis, uno de apertura y otro de cierra.



                                           Creacion de tres
                                           instancias de la
                                           clase Ascensor




                                                              www.unaj.edu.ar
Algoritmos y Programación


         Self
        Programación Orientada a Objetos
           •   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 parametro 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.




                                                             Sirve para eliminar la
                                                             ambigüedad. Nos
                                                             permite especificar a
                                                             que __pisoActual estoy
                                                             haciendo referencia, la
                                                             variable de instancia o
                                                             la variable local
                                                                                www.unaj.edu.ar
Algoritmos y Programación


         Atributos en Python
        Programación Orientada a Objetos
           •   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 informacion que se almacena en
               ellos se utiliza la notacion de punto.

                                                           Referencia a la
                                                           Instancia actual




                                                        Atributo que almacena
                                                        el piso actual en el cual se
                                                        encuentre el sscensor
                            Notación de Punto
                                                                         www.unaj.edu.ar
Algoritmos y Programación


         Declaración de Métodos
        Programación Orientada a Objetos
           • Los metodos 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 definicion de
                 clase.
               – El primer parametro siempre debe ser self. Aunque no se
                 use.
                                                                   www.unaj.edu.ar
Algoritmos y Programación
          Invocación de Métodos
              •    La forma en que los métodos son invocados difiere de la forma de invocar a
                   las funciones.
              •    La notacion de punto se utiliza para invocar los métodos.
              •    Al invocar un método el parametro self se omite ya que esta implicito en el
                   objeto.




Referencia a la
Instancia actual
                                        Nombre del metodo
                                        invocado
             Notación de Punto




                                                                                     www.unaj.edu.ar
Algoritmos y Programación


         Constructores
        Programación Orientada a Objetos
          •   Los constructores son métodos especiales mediante los cuales
              los programadores pueden inicializar una instancia.

          •   Los constructores se ejecutan justo después de instanciar un
              objeto.

          •   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.



                                                                          www.unaj.edu.ar
Algoritmos y Programación


         Constructores
        Programación Orientada a Objetos
            •   Ejemplo de la utilización de un constructor para inicializar
                una variable de instancia en los objetos ascensor .


                                                  Constructor de la clase Ascensor



                                                 Inicializa el atributo __pisoActual
                                                 asi puede ser utilizada
                                                 por el resto de los métodos.




                                                         Objetos ascensor
                                                         inicializados en
                                                         tres piso distintos

                                                                               www.unaj.edu.ar
Algoritmos y Programación


         Métodos Especiales
        Programación Orientada a Objetos
             •   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.




                                                                      www.unaj.edu.ar
Algoritmos y Programación


         Métodos Especiales
        Programación Orientada a Objetos

                 – __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).




                                                                     www.unaj.edu.ar
Algoritmos y Programación




           Encapsulamiento
                  y
     Ocultamiento de información




                               www.unaj.edu.ar
Algoritmos y Programació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.



                                           ENCAPSULAMIENTO: DATOS + MÉTODO
        estado
                       sueldo
                                  getSueldo()     Si cambia la forma de liquidar sueldos, se debería
                                                 modificar el método getSueldo(), pero los usuarios
                                                           no son afectados por el cambio.
                         setSueldo(s)            comportamiento




                                                                                          www.unaj.edu.ar
Algoritmos y Programación


            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.




                                                                       www.unaj.edu.ar
Algoritmos y Programación


        Programaciónde información en Python
         Ocultamiento Orientada a Objetos


                                   Miembros Privados




                                     Miembros Publicos




                               Acceso Valido


                               Acceso Invalido
                                                    www.unaj.edu.ar
Algoritmos y Programación


              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.


                                                                                www.unaj.edu.ar

Contenu connexe

Similaire à Clase4

Introduccion poo2
Introduccion poo2Introduccion poo2
Introduccion poo2
ayreonmx
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
alexmoncada21
 

Similaire à Clase4 (20)

Unidad 1_Programacion Orientada a Objetos
Unidad 1_Programacion Orientada a ObjetosUnidad 1_Programacion Orientada a Objetos
Unidad 1_Programacion Orientada a Objetos
 
s1.1 Conceptos Basicos IA.pptx
s1.1 Conceptos Basicos IA.pptxs1.1 Conceptos Basicos IA.pptx
s1.1 Conceptos Basicos IA.pptx
 
Presentacion Instructoria Progra3 Utec
Presentacion Instructoria Progra3 UtecPresentacion Instructoria Progra3 Utec
Presentacion Instructoria Progra3 Utec
 
Poo
PooPoo
Poo
 
Introduccion poo2
Introduccion poo2Introduccion poo2
Introduccion poo2
 
POO Programación Orientada a Objetos
POO Programación Orientada a ObjetosPOO Programación Orientada a Objetos
POO Programación Orientada a Objetos
 
3_Orientación a objeto
3_Orientación a objeto3_Orientación a objeto
3_Orientación a objeto
 
Clase3 Programación Orientada a Objetos
Clase3 Programación Orientada a ObjetosClase3 Programación Orientada a Objetos
Clase3 Programación Orientada a Objetos
 
IntroduccionPOO
IntroduccionPOOIntroduccionPOO
IntroduccionPOO
 
10. programación orientada a objetos (java)
10. programación orientada a objetos (java)10. programación orientada a objetos (java)
10. programación orientada a objetos (java)
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Poo
PooPoo
Poo
 
Robotica educativa
Robotica educativaRobotica educativa
Robotica educativa
 
Pilares de la POO
Pilares de la POOPilares de la POO
Pilares de la POO
 
Manual de-java
Manual de-javaManual de-java
Manual de-java
 
Poo 03
Poo 03Poo 03
Poo 03
 
Clase5
Clase5Clase5
Clase5
 
Presentacion inicial 2011
Presentacion inicial 2011Presentacion inicial 2011
Presentacion inicial 2011
 

Plus de Jorge Gamez (18)

Python i
Python iPython i
Python i
 
Clase 6 excepciones
Clase 6   excepcionesClase 6   excepciones
Clase 6 excepciones
 
Practica repaso 4 5 2da
Practica repaso 4 5 2daPractica repaso 4 5 2da
Practica repaso 4 5 2da
 
Practica repaso 1 3-2
Practica repaso 1 3-2Practica repaso 1 3-2
Practica repaso 1 3-2
 
Practica repaso pilas y colas con archivos
Practica repaso pilas y colas   con archivosPractica repaso pilas y colas   con archivos
Practica repaso pilas y colas con archivos
 
Practica repaso pilas y colas
Practica repaso pilas y colasPractica repaso pilas y colas
Practica repaso pilas y colas
 
Practica 5
Practica  5Practica  5
Practica 5
 
Practica 4
Practica  4Practica  4
Practica 4
 
Practica 3
Practica  3Practica  3
Practica 3
 
Practica 2
Practica  2Practica  2
Practica 2
 
Practica 1
Practica  1Practica  1
Practica 1
 
Practica repaso 1 3-2
Practica repaso 1 3-2Practica repaso 1 3-2
Practica repaso 1 3-2
 
Clase3
Clase3Clase3
Clase3
 
Clase2
Clase2Clase2
Clase2
 
Clase1
Clase1Clase1
Clase1
 
Clase archivos
Clase   archivosClase   archivos
Clase archivos
 
2 da clase la ingeniería
2 da clase  la ingeniería2 da clase  la ingeniería
2 da clase la ingeniería
 
Presentación clase 3
Presentación clase 3Presentación clase 3
Presentación clase 3
 

Clase4

  • 1. Algoritmos y Programación Clase 4: Programación Orientada a Objetos www.unaj.edu.ar
  • 2. Algoritmos y Programación Temario • Conceptos de la Programacion Orientada a Objetos – Definicion de Objetos de software – Estado y comportamiento – Mensajes • Programacion Orientada a Objetos en Python – Definicion de clases – Definicion de atributos – Definicion e Invocacion de metodos – Constructores • Encapsulamiento y ocultamiento de información www.unaj.edu.ar
  • 3. Algoritmos y Programación Conceptos de la Programación Orientada a Objetos www.unaj.edu.ar
  • 4. Algoritmos y Programación Programación Orientada a Objetos La orientación a objetos es similar a la manera en que la gente percibe su entorno www.unaj.edu.ar
  • 5. Algoritmos y Programación ¿Que son los Objetos? Uno puede mirar a su alrededor y ver muchos objetos del mundo real: un perro, un escritorio, un televisor, una bicicleta etc.. Cada uno de los objetos comparten dos características: Estado y Comportamiento. Ejemplos: Una bicicleta tiene estado: cadena, número de cambios, cambio actual comportamiento: acelerar, realizar un cambio, frenar, etc. . Un perro tiene estado: nombre, color, raza. comportamiento: ladrar, correr, jugar, etc. www.unaj.edu.ar
  • 6. Algoritmos y Programación Describiendo a los Objetos • Los objetos de software son modelos de objetos del mundo real y ellos también tienen estados y comportamientos. • Un objeto de software mantiene sus estados en variables e implementa su comportamiento en métodos. www.unaj.edu.ar
  • 7. Algoritmos y Programación Representado Objetos • Podríamos representar objetos del mundo real utilizando objetos de software. • Por ejemplo podríamos representar a un perro como un objeto de software dentro de un programa. Nuestra Representación Objeto Real: Perro Objeto Software: Perro www.unaj.edu.ar
  • 8. Algoritmos y Programación Objetos Abstractos Podríamos representar objetos abstractos, (objetos que no tienen una representación física en nuestro mundo real) como un objeto de software. Un ejemplo podría ser la representación de una cuenta bancaria. Cuenta Caja de Plazo Corriente Ahorro Fijo www.unaj.edu.ar
  • 9. Algoritmos y Programación Identificando Objetos Los sustantivos son un buen punto de partida para determinar los objetos de un sistema www.unaj.edu.ar
  • 10. Algoritmos y Programación Identificando Objetos Supongamos que María quiere ir a su departamento que está ubicado en el tercer piso del edificio. ¿qué objetos podemos identificar? • María • Ascensor • Departamento • Edificio • Portón de entrada • Ventanas www.unaj.edu.ar
  • 11. Algoritmos y Programación Identificando Objetos • Es importante identificar los objetos y quedarnos solamente con aquellos que son de nuestro interés, teniendo siempre presente que es lo que nosotros queremos modelar / representar. • Identificar los objetos es un arte y no una ciencia. • El resultado dependera del contexto y punto de vista de quien modela. www.unaj.edu.ar
  • 12. Algoritmos y Programación Objetos a Modelar Programación Orientada a Objetos Selección de los objetos que queremos modelar • María • Ascensor • Departamento • Edificio • Portón de entrada • Ventanas www.unaj.edu.ar
  • 13. Algoritmos y Programación Interactuando con los Objetos Programación Orientada a Objetos ¿Que hace entonces María para llegar hasta su departamento? 1 Se para delante de la puerta del ascensor y lo llama. Mensaje Emisor Receptor www.unaj.edu.ar
  • 14. Algoritmos y Programación Interactuando con los Objetos 2 El ascensor llega, abre la puerta, entra María. El ascensor espera que María le indique a que piso quiere ir. 3 María le indica a que piso quiere ir, entonces el ascensor cierra la puerta y la lleva hasta el piso seleccionado. www.unaj.edu.ar
  • 15. Algoritmos y Programación Mensajes y Responsabilidades En esta secuencia podemos observar la interacción existente entre los dos objetos que hemos identificado: María se comunicó con el ascensor: 1 A través de un mensaje lo llamó 2 El ascensor tiene la responsabilidad de ir al lugar donde María lo llamó 3 María sube al ascensor y a través de un nuevo mensaje le dice que la lleve a un determinado piso 4 El ascensor tiene la responsabilidad de llevarla al piso indicado www.unaj.edu.ar
  • 16. Algoritmos y Programación Estado y Comportamiento Con este ejemplo pudimos ver como representar situaciones de la vida real a través de objetos. ¿Cuál es el estado y el comportamiento del ascensor? Estado Comportamiento Piso actual Subir Estado puerta (abierta / cerrada) Bajar Cantidad de ocupantes Abrir la puerta Máxima cantidad de ocupantes Cerrar la puerta Piso Máximo Responder a un llamado Piso Mínimo www.unaj.edu.ar
  • 17. Algoritmos y Programación Estado y Comportamiento ¿Cuál es el estados y el comportamiento de María? Estado Comportamiento Nombre sabe decir como se llama Apellido sabe decir cuantos años tiene Edad sabe decir en que piso vive Domicilio sabe su numero de Documento Documento www.unaj.edu.ar
  • 18. Algoritmos y Programación Mensajes Los objetos tienen estado y comportamiento, pero ¿Cómo se comunican entre ellos? ¿cuáles son los mensajes que María utiliza para comunicarse con el ascensor? 1 - Llamar 2 – Abrir la puerta 3 – Cerrar la puerta 4 – Subir (pisos) 5 – Abrir puerta emisor 6 – Cerrar puerta receptor www.unaj.edu.ar
  • 19. Algoritmos y Programación Métodos vs. funciones Existen 2 distinciones importantes: 1 En un mensaje, siempre hay designado un receptor para aquel mensaje; es algún objeto, al cual se le envía un mensaje. Cuando se llama a una función, NO hay receptor. 2 La interpretación del mensaje (el método usado para responder al mensaje) es determinado por el receptor y podría variar para diferentes receptores. ? Receptor Receptor emisor www.unaj.edu.ar
  • 20. Algoritmos y Programación Clases e instancias María al igual que otras personas que deciden tomar un ascensor, tienen características comunes: saben pedir un ascensor, presionar a que piso desean ir, descender, etc.., esto es porque pertenecen a una Categoría o Clase que podriamos llamar ”pasajero”. Una clase es un molde a partir de la cual se crean instancias con las mismas características y comportamiento. María y otras personas que hacen uso del ascensor son instancias de la clase pasajero www.unaj.edu.ar
  • 21. Algoritmos y Programación Programación Orientada a Objetos con Python www.unaj.edu.ar
  • 22. Algoritmos y Programación POO en Python • Python está completamente preparado para soportar la programacion orientado a objetos. • En Python cuando se utiliza la programacion 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. www.unaj.edu.ar
  • 23. Algoritmos y Programación Clases en Python Programación Orientada a Objetos • 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 . • 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. www.unaj.edu.ar
  • 24. Algoritmos y Programación Clase Ascensor en Python Programación Orientada a Objetos • Definamos la clase Ascensor del ejemplo anterior. Nombre de la clase Cuerpo de la clase Ascensor Codigo no perteneciente a la clase Ascensor www.unaj.edu.ar
  • 25. Algoritmos y Programación Instancias en Python Programación Orientada a Objetos • Para crear un objeto o instanciarlo a partir de una clase se utiliza la notacion de funciones,o sea se escribe el nombre de la clase seguido por dos paréntesis, uno de apertura y otro de cierra. Creacion de tres instancias de la clase Ascensor www.unaj.edu.ar
  • 26. Algoritmos y Programación Self Programación Orientada a Objetos • 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 parametro 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. Sirve para eliminar la ambigüedad. Nos permite especificar a que __pisoActual estoy haciendo referencia, la variable de instancia o la variable local www.unaj.edu.ar
  • 27. Algoritmos y Programación Atributos en Python Programación Orientada a Objetos • 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 informacion que se almacena en ellos se utiliza la notacion de punto. Referencia a la Instancia actual Atributo que almacena el piso actual en el cual se encuentre el sscensor Notación de Punto www.unaj.edu.ar
  • 28. Algoritmos y Programación Declaración de Métodos Programación Orientada a Objetos • Los metodos 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 definicion de clase. – El primer parametro siempre debe ser self. Aunque no se use. www.unaj.edu.ar
  • 29. Algoritmos y Programación Invocación de Métodos • La forma en que los métodos son invocados difiere de la forma de invocar a las funciones. • La notacion de punto se utiliza para invocar los métodos. • Al invocar un método el parametro self se omite ya que esta implicito en el objeto. Referencia a la Instancia actual Nombre del metodo invocado Notación de Punto www.unaj.edu.ar
  • 30. Algoritmos y Programación Constructores Programación Orientada a Objetos • Los constructores son métodos especiales mediante los cuales los programadores pueden inicializar una instancia. • Los constructores se ejecutan justo después de instanciar un objeto. • 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. www.unaj.edu.ar
  • 31. Algoritmos y Programación Constructores Programación Orientada a Objetos • Ejemplo de la utilización de un constructor para inicializar una variable de instancia en los objetos ascensor . Constructor de la clase Ascensor Inicializa el atributo __pisoActual asi puede ser utilizada por el resto de los métodos. Objetos ascensor inicializados en tres piso distintos www.unaj.edu.ar
  • 32. Algoritmos y Programación Métodos Especiales Programación Orientada a Objetos • 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. www.unaj.edu.ar
  • 33. Algoritmos y Programación Métodos Especiales Programación Orientada a Objetos – __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). www.unaj.edu.ar
  • 34. Algoritmos y Programación Encapsulamiento y Ocultamiento de información www.unaj.edu.ar
  • 35. Algoritmos y Programació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. ENCAPSULAMIENTO: DATOS + MÉTODO estado sueldo getSueldo() Si cambia la forma de liquidar sueldos, se debería modificar el método getSueldo(), pero los usuarios no son afectados por el cambio. setSueldo(s) comportamiento www.unaj.edu.ar
  • 36. Algoritmos y Programación 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. www.unaj.edu.ar
  • 37. Algoritmos y Programación Programaciónde información en Python Ocultamiento Orientada a Objetos Miembros Privados Miembros Publicos Acceso Valido Acceso Invalido www.unaj.edu.ar
  • 38. Algoritmos y Programación 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. www.unaj.edu.ar