Pensar Al Estilo OO

27
BLOQUE 1 PENSAR AL ESTILO ORIENTADO A OBJETOS Desarrollo de Aplicaciones para Dispositivos Móviles

description

Pensar Al Estilo OO

Transcript of Pensar Al Estilo OO

BLOQUE 1 PENSAR AL ESTILO ORIENTADO A OBJETOS

Desarrollo de Aplicaciones para Dispositivos Móviles

Introducción

¿Por qué es tan popular la Programación OO?

Un nuevo paradigma

Principios del Paradigma Orientado a Objetos

. Clases y Objetos

. Mensajes y Métodos

. Encapsulación

. Herencia

Software reutilizable

Reutilización de Componentes

Resumen

Aportaciones de la POO

Bases de la POO

Contenidos

¿Por qué es tan popular la Orientación a Objetos (OO) ?

• Existe la esperanza de que esta técnica sea la clave para incrementar la productividad y mejorar la fiabilidad de los sistemas software ( solución a la crisis del software )

• Existe la esperanza de que la transición de los lenguajes existentes a los orientados a objetos sea fácil

• La forma de percibir y pensar sobre los problemas se acerca a los mecanismos cognitivos humanos y es muy parecida a la forma en que se abordan en otros dominios

Introducción

Ejemplos de Paradigmas de programación

Imperativa (C,Pascal,...) Lógica (Prolog)

Funcional (OBJ,Axis, FP,...) Orientado a Objetos (C++,Eiffel, java, C#,...) ???

Paradigma. Conjunto de teorías, estándares y métodos que juntos representan una forma de

organizar el conocimiento [Kuhn 70]

• En otros ámbitos se habla de Ontología o Metamodelo.

Un nuevo paradigma

La OO surge como un nuevo paradigma de programación a

mediados de los 80.

Principios del paradigma orientado a objetos / 1

• Todo son objetos

• Un programa es una colección de objetos.

• Los objetos interactúan realizando peticiones de servicios

a otros objetos mediante mensajes.

• El cómputo avanza mediante la interacción de los objetos

• Todo objeto es un ejemplar de una clase. Una clase agrupa

objetos “similares”.

Principios del paradigma OO

• Para el analista OO

• Un elemento/ente/artefacto de clasificación humana • Esta clasificación está basada en un comportamiento y/o

propiedades comunes.

• Para el programador OO

• Una construcción sintáctica, denominada clase, que describe comportamiento y atributos comunes.

• Una estructura de datos que incluye datos y funciones.

¿Tarjeta? ¿Cuenta?

¿Qué es una CLASE ?

Principios del paradigma OO

• Un objeto es una instancia de una clase

• Todo objeto tiene:

• Identidad: Los objetos pueden distinguirse unos de otros.

• Comportamiento: Los objetos pueden realizar ciertas tareas.

• Estado: Los objetos almacenan información.

¿Qué es un OBJETO ?

Principios del paradigma OO

• Los objetos piden servicios o acciones a otros objetos mediante

mensajes (destinatario + acción + argumentos)

• El algoritmo o conjunto de operaciones que ejecuta un objeto

como respuesta a una petición (mensaje) se llama método

• El comportamiento está asociado con las clases, no con instancias

• El método invocado por un objeto en respuesta a un mensaje

queda determinado por la clase del receptor

• Todos los objetos de una clase usan el mismo método en respuesta a mensajes similares

Mensajes y Métodos

Principios del paradigma OO

Mensaje versus Llamada a Procedimiento

Los mensajes se diferencian de las llamadas a procedimiento en dos aspectos:

• El mensaje posee un receptor designado; el receptor es algún objeto al cual se envía un mensaje

• La interpretación del mensaje (el método usado para responder al mensaje) depende del receptor y puede variar con diferentes receptores (concepto de polimorfismo)

Principios del paradigma OO

Ocultación de la información (Encapsulación)

• Los objetos de un sistema de información vistos como clientes de los servicios que les proveen ciertos objetos, sólo necesitan conocer el conjunto de mensajes que dichos objetos aceptan.

• El cliente que envía la petición no necesita conocer cómo se atiende dicha petición (las acciones que se llevan a cabo)

Principios del paradigma OO

Representación gráfica de un objeto

I

n

t

e

r

f

a

z

M

é

t

o

d

o

s

D

a

t

o

s

Objeto

Principios del paradigma OO

Metodo1 ()

Método2 ()

Dato1

Dato2

Objeto

• Vemos con un ejemplo ilustrativo los conceptos anteriores.

• Ejemplo:

Un banco dispone de un conjunto de cuentas bancarias. Cada cuenta bancaria tiene un titular, que indica quién es el propietario de la misma, y un saldo que indica el importe disponible en pesetas. Sobre cada cuenta bancaria se pueden realizar dos operaciones básicas: ingresar o sacar de la cuenta una cierta cantidad de dinero (abonos y cargos).

Principios del paradigma OO

• Siguiendo el paradigma OO: -- Clases: - Banco - Cuenta Bancaria

-- Objetos: - Un objeto que representa al banco - Un objeto por cada cuenta bancaria que exista

• Un objeto encapsula los datos (estructura) y los métodos (comportamiento).

• Esta encapsulación hace que el objeto tenga unos límites claramente definidos (sólo es visible su INTERFAZ, el interior del objeto no lo es).

Abono( )

Cargo ( )

saldo

Abono( )

Cargo( )

saldo

CuentaBancaria

Combinando Datos y Métodos

Principios del paradigma OO

CuentaBancaria

• Los métodos son públicos por lo general. Constituyen la interfaz del objeto y son accesibles a otros objetos que pueden invocarlos.

• Los datos son privados por lo general. Sólo son accesibles desde el interior del propio objeto.

Abono( )

Cargo( )

saldo

CuentaBancaria

Abono( )

Cargo( )

saldo

Control de la Visibilidad de Acceso

Principios del paradigma OO

Objeto CuentaBancaria

• Proporciona CONTROL • La utilización del objeto es solamente

a través de sus métodos públicos

• Permite CAMBIOS • La utilización del objeto no se ve

afectada si se producen cambios

en el tipo de datos de la parte privada.

Abono ( )

Cargo ( )

euros 1.202,16

Abono ( )

Cargo ( )

saldo 200.000

Principios del paradigma OO

¿ Por qué la Encapsulación?

Objeto CuentaBancaria

Objeto CuentaBancaria

• Los datos de un objeto describen la información de cada objeto individual. Se denominan atributos. • Por ejemplo, cada cuenta bancaria tiene su propio saldo. Si dos cuentas

tienen el mismo saldo es sólo una coincidencia.

Abono ( )

Cargo ( )

saldo 200.000

titular “Pepe"

Abono ( )

Cargo ( )

saldo 200.000

titular “Maria"

Principios del paradigma OO

Datos / atributos

Abono ( )

Cargo ( )

saldo 10.000

titular “Eva"

Objeto CuentaBancaria Objeto CuentaBancaria Objeto CuentaBancaria

Herencia

El principio por el cual se dice que el conocimiento de una clase más general es aplicable también a la clase más específica se llama herencia

• Las clases se pueden organizar en una estructura de árbol, llamada jerarquía de herencia

• La información (datos y comportamiento) asociados con un nivel de una jerarquía de clases es aplicable automáticamente a los niveles inferiores de la jerarquía

Principios del paradigma OO

Ejemplo tarjeta de crédito como un

subtipo de tarjeta de cuenta bancaria

Mi conocimiento acerca de la tarjeta del Corte Inglés lo he organizado en términos de jerarquía de clases. Sé que mi tarjeta es una tarjeta del Corte Inglés, y Tarjeta del Corte Inglés es una forma especializada de Tarjeta de Crédito, y Tarjeta de Crédito de Tarjeta asociada a una Cuenta Bancaria.

A cada nivel de información tengo cierta información almacenada. Esta información es aplicable a todos los niveles más bajos (especializados)

Como la clase Tarjeta del Corte Inglés es una forma más especializada de la categoría

Tarjeta de Crédito, cualquier conocimiento que yo tenga de las Tarjetas de Crédito es válido para las Tarjetas del Corte Inglés

Principios del paradigma OO

Jerarquías de Herencia

Principios del paradigma OO

Tarjeta

Monedero Cargo Crédito

Mercadona Corte Inglés

……….

Jerarquías de Herencia

El énfasis de la OO en la construcción de componentes independientes permite un proceso de desarrollo incremental, en el cual unidades de software individuales (clases) se diseñan, programan y prueban antes de combinarse en un sistema grande

Al reducir la interdependencia entre los componentes software, la orientación a objetos permite el

desarrollo de sistemas de software reutilizable

Software Reutilizable

Ventajas de la Reutilización

• Un componente que se reutiliza no tiene que ser reescrito

• El coste incremental de reutilizar un componente es menor que el coste de volver a desarrollarlo

• Un conjunto estándar de componentes es más fácil de mantener

• Un componente reutilizado habrá sido probado y utilizado minuciosamente, y seguramente estará libre de errores o tendrá muchos menos que uno desarrollado por nosotros

Reutilización de componentes

Mecanismos para Reutilizar

Existen dos mecanismos esenciales para la reutilización:

• Composición - La relación tiene-un o parte-de

• Herencia - La relación es-un

Reutilización de componentes

Composición Herencia

Usando la relación tiene-un, un componente es simplemente parte del estado de otro componente o de otra manera, un componente está compuesto-de. • Un coche tiene-un motor

• Una casa tiene-una puerta

• Una receta tiene-una lista de ingredientes

En la herencia un componente es-una variación de otro, y hereda todas las características del primero sin necesidad de volver a codificarlo.

Reutilización de componentes

Vehículo

Coche

Turismo Todoterreno

Motocicleta Camión

Grúa Mercancías

>> Debemos caracterizar los alumnos de la ETSII. ¿Qué clase o clases sería interesante declarar? ¿Qué atributos / métodos podrían tener?

Ejercicio

Además de un acercamiento al lenguaje natural, la POO aporta dos grandes ventajas en el ámbito de la programación:

- Facilita la reutilización de código

- Mejora la modularidad y el control de errores, lo que se nota, sobre todo, en aplicaciones grandes.

Resumen: Aportaciones de la POO

La POO se basa en tres conceptos:

• Encapsulamiento. Unir bajo una misma entidad lógica datos y código que lo manipula, aislándolos del resto. En POO esto se consigue con las clases.

• Polimorfismo. La POO aporta la posibilidad de polimorfismo cuando un método produce efectos diferentes en función de la clase a la que se aplique. Es importante no confundir el polimorfismo con la sobrecarga de funciones o la sobrecarga de operadores.

Resumen: Bases de la POO

• Herencia. La herencia aprovecha las clases ya definidas para definir otras más específicas, que heredan los miembros de las clases más generales.

A la clase más general se la denomina clase base o superclase, y a la más específica clase hija o subclase.

Resumen: Bases de la POO

La jerarquía resultante de relaciones de herencia suele tener forma de árbol, si bien no siempre es así