Clase4
-
Upload
jorge-gamez -
Category
Documents
-
view
755 -
download
0
description
Transcript of Clase4
www.unaj.edu.ar
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
La orientación a objetos es similar a la manera en
que la gente percibe su entorno
Programación Orientada a Objetos
www.unaj.edu.ar
Algoritmos y Programación
Cada uno de los objetos comparten dos características: Estado y Comportamiento.
Uno puede mirar a su alrededor y ver muchos objetos del mundo real: un perro, un escritorio, un televisor, una bicicleta etc..
Ejemplos:
.
Un perro tiene estado: nombre, color, raza. comportamiento: ladrar, correr, jugar, etc.
Una bicicleta tiene estado: cadena, número de cambios, cambio actual comportamiento: acelerar, realizar un cambio, frenar, etc.
¿Que son los Objetos?
www.unaj.edu.ar
Algoritmos y Programación
• 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.
Describiendo a los Objetos
www.unaj.edu.ar
Algoritmos y Programación
• 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.
Objeto Software: PerroObjeto Real: Perro
Nuestra Representación
Representado Objetos
www.unaj.edu.ar
Algoritmos y Programación
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.
CuentaCorriente
Caja de Ahorro
PlazoFijo
Objetos Abstractos
www.unaj.edu.ar
Algoritmos y Programación
Los sustantivos son un buen punto de partida para determinar los objetos de un sistema
Identificando Objetos
www.unaj.edu.ar
Algoritmos y Programación
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
Identificando Objetos
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
Selección de los objetos que queremos modelar
• María• Ascensor• Departamento• Edificio• Portón de entrada• Ventanas
Programación Orientada a ObjetosObjetos a Modelar
www.unaj.edu.ar
Algoritmos y Programación
¿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
Programación Orientada a ObjetosInteractuando con los Objetos
www.unaj.edu.ar
Algoritmos y Programación
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.
Interactuando con los Objetos
www.unaj.edu.ar
Algoritmos y Programación
1
En esta secuencia podemos observar la interacción existente entre los dos objetos que hemos identificado:
2
3
4
María se comunicó con el ascensor:
A través de un mensaje lo llamó
El ascensor tiene la responsabilidad de ir al lugar donde María lo llamó
María sube al ascensor y a través de un nuevo mensaje le dice que la lleve a un determinado piso
El ascensor tiene la responsabilidad de llevarla al piso indicado
Mensajes y Responsabilidades
www.unaj.edu.ar
Algoritmos y Programación
¿Cuál es el estado y el comportamiento del ascensor?
EstadoPiso actualEstado puerta (abierta / cerrada)Cantidad de ocupantesMáxima cantidad de ocupantesPiso MáximoPiso Mínimo
ComportamientoSubirBajarAbrir la puertaCerrar la puertaResponder a un llamado
Con este ejemplo pudimos ver como representar situaciones de la vida real a través de objetos.
Estado y Comportamiento
www.unaj.edu.ar
Algoritmos y Programación
¿Cuál es el estados y el comportamiento de María?
EstadoNombreApellidoEdadDomicilioDocumento
Comportamientosabe decir como se llamasabe decir cuantos años tienesabe decir en que piso vivesabe su numero de Documento
Estado y Comportamiento
www.unaj.edu.ar
Algoritmos y Programación
Los objetos tienen estado y comportamiento, pero ¿Cómo se comunican entre ellos?
1 - Llamar
2 – Abrir la puerta
3 – Cerrar la puerta
4 – Subir (pisos)
5 – Abrir puerta
6 – Cerrar puerta
¿cuáles son los mensajes que María utiliza para comunicarse con el ascensor?
emisor receptor
Mensajes
www.unaj.edu.ar
Algoritmos y Programación
Existen 2 distinciones importantes: 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. 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.
ReceptorReceptor
emisor
1
2
?
Métodos vs. funciones
www.unaj.edu.ar
Algoritmos y Programación
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 ascensorson instancias de la clase pasajero
Clases e instancias
www.unaj.edu.ar
Algoritmos y Programación
Programación Orientada a Objetos con Python
www.unaj.edu.ar
Algoritmos y Programación
• 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.
POO en Python
www.unaj.edu.ar
Algoritmos y Programación
• 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.
Programación Orientada a ObjetosClases en Python
www.unaj.edu.ar
Algoritmos y Programación
• Definamos la clase Ascensor del ejemplo anterior.
Programación Orientada a ObjetosClase Ascensor en Python
Nombre de la clase
Cuerpo de la clase Ascensor
Codigo noperteneciente a la clase Ascensor
www.unaj.edu.ar
Algoritmos y Programación
Programación Orientada a ObjetosInstancias en Python• 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
• 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.
Programación Orientada a ObjetosSelf
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
Programación Orientada a ObjetosAtributos 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 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 seencuentre el sscensor
Notación de Punto
www.unaj.edu.ar
Algoritmos y Programación
Programación Orientada a ObjetosDeclaración de Métodos• 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
• 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
Invocación de Métodos
www.unaj.edu.ar
Algoritmos y Programación
Programación Orientada a ObjetosConstructores• 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
Programación Orientada a ObjetosConstructores• Ejemplo de la utilización de un constructor para inicializar
una variable de instancia en los objetos ascensor .
Objetos ascensor inicializados en tres piso distintos
Constructor de la clase Ascensor
Inicializa el atributo __pisoActual asi puede ser utilizada por el resto de los métodos.
www.unaj.edu.ar
Algoritmos y Programación
Programación Orientada a ObjetosMé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.
www.unaj.edu.ar
Algoritmos y Programación
Programación Orientada a ObjetosMétodos Especiales
– __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
Encapsulamientoy
Ocultamiento de información
www.unaj.edu.ar
Algoritmos y Programación
sueldo
setSueldo(s)
getSueldo()
comportamiento
estado
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ÉTODOS
Si cambia la forma de liquidar sueldos, se debería modificar el método getSueldo(), pero los usuarios
no son afectados por el cambio.
Encapsulamiento
www.unaj.edu.ar
Algoritmos y Programació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.
Ocultamiento de información
www.unaj.edu.ar
Algoritmos y Programación
Programación Orientada a ObjetosOcultamiento de información en Python
Acceso Invalido
Acceso Valido
Miembros Privados
Miembros Publicos
www.unaj.edu.ar
Algoritmos y Programación
• 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.
Resumen