Clase4

38
www.unaj.edu.ar Algoritmos y Programación Clase 4: Programación Orientada a Objetos

description

Orientado a Objetos

Transcript of Clase4

Page 1: Clase4

www.unaj.edu.ar

Algoritmos y Programación

Clase 4:

Programación Orientada a Objetos

Page 2: Clase4

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

Page 3: Clase4

www.unaj.edu.ar

Algoritmos y Programación

Conceptos de la Programación Orientada a Objetos

Page 4: Clase4

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

Page 5: Clase4

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?

Page 6: Clase4

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

Page 7: Clase4

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

Page 8: Clase4

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

Page 9: Clase4

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

Page 10: Clase4

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

Page 11: Clase4

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.

Page 12: Clase4

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

Page 13: Clase4

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

Page 14: Clase4

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

Page 15: Clase4

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

Page 16: Clase4

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

Page 17: Clase4

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

Page 18: Clase4

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

Page 19: Clase4

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

Page 20: Clase4

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

Page 21: Clase4

www.unaj.edu.ar

Algoritmos y Programación

Programación Orientada a Objetos con Python

Page 22: Clase4

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

Page 23: Clase4

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

Page 24: Clase4

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

Page 25: Clase4

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

Page 26: Clase4

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

Page 27: Clase4

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

Page 28: Clase4

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.

Page 29: Clase4

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

Page 30: Clase4

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.

Page 31: Clase4

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.

Page 32: Clase4

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.

Page 33: Clase4

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

Page 34: Clase4

www.unaj.edu.ar

Algoritmos y Programación

Encapsulamientoy

Ocultamiento de información

Page 35: Clase4

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

Page 36: Clase4

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

Page 37: Clase4

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

Page 38: Clase4

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