Algoritmos y Programación                            Clase 4:Programación Orientada      a Objetos                        ...
Algoritmos y Programación          Temario         • Conceptos de la Programacion Orientada a Objetos              – Defin...
Algoritmos y Programación    Conceptos de la Programación        Orientada a Objetos                              www.unaj...
Algoritmos y Programación                  Programación Orientada a Objetos                       La orientación a objetos...
Algoritmos y Programación                  ¿Que son los Objetos?           Uno puede mirar a su alrededor y ver muchos obj...
Algoritmos y Programación          Describiendo a los Objetos         •    Los objetos de software son modelos de objetos ...
Algoritmos y Programación            Representado Objetos        •    Podríamos representar objetos                del   m...
Algoritmos y Programación          Objetos Abstractos      Podríamos representar objetos abstractos, (objetos que no      ...
Algoritmos y Programación          Identificando Objetos                 Los sustantivos son un buen punto de partida     ...
Algoritmos y Programación          Identificando Objetos       Supongamos que María quiere ir a su departamento que       ...
Algoritmos y Programación          Identificando Objetos         •    Es importante identificar los objetos y quedarnos   ...
Algoritmos y Programación         Objetos a Modelar        Programación Orientada a Objetos         Selección de los objet...
Algoritmos y Programación         Interactuando con los Objetos        Programación Orientada a Objetos         ¿Que hace ...
Algoritmos y Programación          Interactuando con los Objetos   2 El ascensor llega, abre la puerta, entra María. El as...
Algoritmos y Programación          Mensajes y Responsabilidades           En esta secuencia podemos observar la interacció...
Algoritmos y Programación          Estado y Comportamiento         Con este ejemplo pudimos ver como representar situacion...
Algoritmos y Programación          Estado y Comportamiento         ¿Cuál es el estados y el comportamiento de María?      ...
Algoritmos y Programación          Mensajes           Los objetos tienen estado y comportamiento, pero ¿Cómo se           ...
Algoritmos y Programación          Métodos vs. funciones         Existen 2 distinciones importantes:          1 En un mens...
Algoritmos y Programación          Clases e instancias           María al igual que otras personas que deciden tomar un as...
Algoritmos y Programación          Programación Orientada a             Objetos con Python                                ...
Algoritmos y Programación            POO en Python           •   Python está completamente preparado para               so...
Algoritmos y Programación         Clases en Python        Programación Orientada a Objetos           • Una clase de Python...
Algoritmos y Programación         Clase Ascensor en Python        Programación Orientada a Objetos           • Definamos l...
Algoritmos y Programación         Instancias en Python        Programación Orientada a Objetos           • Para crear un o...
Algoritmos y Programación         Self        Programación Orientada a Objetos           •   La palabra reservada self sir...
Algoritmos y Programación         Atributos en Python        Programación Orientada a Objetos           •   Los atributos ...
Algoritmos y Programación         Declaración de Métodos        Programación Orientada a Objetos           • Los metodos e...
Algoritmos y Programación          Invocación de Métodos              •    La forma en que los métodos son invocados difie...
Algoritmos y Programación         Constructores        Programación Orientada a Objetos          •   Los constructores son...
Algoritmos y Programación         Constructores        Programación Orientada a Objetos            •   Ejemplo de la utili...
Algoritmos y Programación         Métodos Especiales        Programación Orientada a Objetos             •   Existen métod...
Algoritmos y Programación         Métodos Especiales        Programación Orientada a Objetos                 – __cmp__(sel...
Algoritmos y Programación           Encapsulamiento                  y     Ocultamiento de información                    ...
Algoritmos y Programación           Encapsulamiento                Es un mecanismo que consiste en construir una “cápsula...
Algoritmos y Programación            Ocultamiento de información            Es la capacidad de ocultar los detalles inter...
Algoritmos y Programación        Programaciónde información en Python         Ocultamiento Orientada a Objetos            ...
Algoritmos y Programación              Resumen•     Todo es un objeto: un programa orientado a objetos, esta organizado co...
Upcoming SlideShare
Loading in …5
×

Clase4

993 views

Published on

Orientado a Objetos

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
993
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
39
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Clase4

  1. 1. Algoritmos y Programación Clase 4:Programación Orientada a Objetos www.unaj.edu.ar
  2. 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. 3. Algoritmos y Programación Conceptos de la Programación Orientada a Objetos www.unaj.edu.ar
  4. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 21. Algoritmos y Programación Programación Orientada a Objetos con Python www.unaj.edu.ar
  22. 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. 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. 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. 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. 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. 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. 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. 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 laInstancia actual Nombre del metodo invocado Notación de Punto www.unaj.edu.ar
  30. 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. 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. 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. 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. 34. Algoritmos y Programación Encapsulamiento y Ocultamiento de información www.unaj.edu.ar
  35. 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. 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. 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. 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

×