Orientación a Objetos

31
Programación Orientada a Objetos Ing. Carlos Verano A. http://cveranoa.blogspot.com

Transcript of Orientación a Objetos

Page 1: Orientación a Objetos

Programación

Orientada a Objetos Ing. Carlos Verano A. http://cveranoa.blogspot.com

Page 2: Orientación a Objetos

Página 2

Introducción

Page 3: Orientación a Objetos

Página 3

Introducción

La crisis del Software (1968)

El hecho de que el software que se construye, no solamente, no satisface

los requerimientos ni las necesidades solicitadas por el cliente, sino que

además, excede los presupuestos y los horarios de tiempos.

La industria del software es incapaz de satisfacer la demanda en

constante crecimiento, por la complejidad del software producido, además

de la dificultad de escribir programas libres de defectos, fácilmente

comprensibles y verificables, con la complejidad que supone la tarea de

programar, y los cambios a los que se tiene que verse sometido un

programa para ser continuamente adaptado a las necesidades de los

usuarios

Page 4: Orientación a Objetos

Página 4

Introducción

En la conferencia organizada por la OTAN en 1968 sobre desarrollo de

software, se acuño el término “crisis del software”, y se etiquetaron una

serie de sucesos que se venían observando en los proyectos de

desarrollo de software:

– Los proyectos no terminaban en plazo.

– Los proyectos no se ajustaban al presupuesto inicial.

– Baja calidad del software generado.

– Software que no cumplía las especificaciones.

– Código inmantenible que dificultaba la gestión y evolución del proyecto.

Page 5: Orientación a Objetos

Página 5

Descripción

¿Qué es la Programación Orientada a Objetos (OOP)?

Es un paradigma que usa objetos y sus interacciones, para diseñar

software de calidad, basado en abstracción, encapsulamiento,

modularidad y jerarquía.

Su uso se popularizó a principios de la década de los 90 y su acogida se

debe a sus grandes capacidades y ventajas frente a las antiguas formas

de desarrollo de software. En la actualidad, existen muchos lenguajes de

programación que soportan la orientación a objetos.

Page 6: Orientación a Objetos

Página 6

Autores

El paradigma de la orientación a objetos se remonta a 1967,

donde los noruegos Ole-Johan Dahl (1931-2002) y Kristen

Nygaard (1926-2002) desarrollaron los conceptos básicos

de la programación orientada a objetos, en un lenguaje

llamado SIMULA 67.

– Ambos recibieron conjuntamente el premio ACM Turing y la

medalla IEEE John von Neumann por sus ideas para que

pudiese emerger la orientación a objetos.

– En la actualidad existe el premio Dahl-Nygaard de la asociación

AITO (Association Internationale pour les Technologies Objets)

Page 7: Orientación a Objetos

Página 7

Ventajas

Fomenta la reutilización y extensión del código. (Reutilizar parte del

código, ampliar la funcionalidad de forma sencilla)

Facilita el mantenimiento y expansión del software.

Permite crear sistemas más complejos. (Estabilidad y calidad)

Agiliza el desarrollo de software. (Modularidad y encapsulación,

descompone en objetos con unas responsabilidades claramente

especificadas)

Facilita la creación de programas visuales. (Prototipos)

Entendimiento del software en el mundo real. (Modelamiento)

Page 8: Orientación a Objetos

Página 8

Beneficios

Incrementar enormemente el proceso de producción de software.

Aumenta drásticamente la productividad.

Permite abordar proyectos de mucha mayor envergadura y complejidad.

Re-usabilidad de código.

Facilita el trabajo en equipo.

Los sistemas son fáciles de mantener y se adaptan a las cambiantes

necesidades de negocio.

No depende del lenguaje de programación, si no de como este

estructurada la aplicación.

Page 9: Orientación a Objetos

Página 9

Elementos

Objeto

Clase

Mensaje

Encapsulamiento

Herencia Polimorfismo

Abstracción

Page 10: Orientación a Objetos

Página 10

Objeto

¿Qué es un objeto?

Basta con mirar a nuestro alrededor para ver que estamos rodeados de

objetos. Es todo aquello a lo que podemos reconocerle una identidad,

propiedades o atributos y poseen un comportamiento propio.

Identidad

Auto

Atributos

Marca

Modelo

Color

Velocidad

Comportamiento

Encender

Avanzar

Parar

Page 11: Orientación a Objetos

Página 11

Objeto

Cada objeto tiene una identidad única,

incluso si tiene las mismas características

que otros y se encuentra en el mismo

estado.

Page 12: Orientación a Objetos

Página 12

Objeto

El estado y el comportamiento están relacionados:

el comportamiento en un instante dado, depende del

estado actual, y el estado puede ser modificado por

el comportamiento.

Page 13: Orientación a Objetos

Página 13

Clasificación de Objetos

Objeto

Objetos agentes, son objetos que pueden interactuar con otros objetos por

iniciativa propia o por consecuencia de una solicitud externa, reúnen las

características de los objetos actores y objetos servidores.

Objetos actores, son activos y son

siempre origen de una interacción. Objetos servidores, son

pasivos y su función se limita

a responder peticiones de

otros objetos, siempre son los

que reciben el mensaje.

Page 14: Orientación a Objetos

Página 14

Ejemplos de Objeto

Objeto

Son:

Concretos, adstrato, real, tangible, físico: Persona, Animal, Cosa.

Roles, función, papel: Médico, Ingeniero, Maestro, ...

Relacional, colectivo, grupo: Matrimonio, Familia, Sociedad, ...

Eventos: Abrir, Cerrar, Mover, ...

Exponibles: Ventana, Menú, Imagen, Carácter, ...

Se identifican:

Cosas tangibles.

Roles.

Eventos.

Interacciones.

Cualquier cosa

de la que

puedas emitir

un concepto.

Page 15: Orientación a Objetos

Página 15

¿Qué es el mensaje?

Un mensaje es una comunicación dirigida a un objeto, que le ordena que

ejecute uno de sus metodos con ciertos parametros asociados al evento

que lo generó.

Mensaje

Page 16: Orientación a Objetos

Página 16

Tipos de mensaje

Simple.

Mensaje

Síncrono.

Objeto

A

Objeto

B

Objeto

A

Objeto

B

Page 17: Orientación a Objetos

Página 17

Cronometrado.

Objeto

A

Objeto

B

Tipos de mensaje

Esperado.

Mensaje

Objeto

A

Objeto

B

Page 18: Orientación a Objetos

Página 18

Tipos de mensaje

Asíncrono.

Mensaje

La acción de “pasar un mensaje”

es equivalente a llamar a un

método para modificar el estado

del objeto o para ejercer un

comportamiento.

Objeto

A

Objeto

B

Page 19: Orientación a Objetos

Página 19

¿Qué es una clase?

Una clase es una plantilla o molde que sirve para la creación o

instanciación de objetos con propiedades y comportamientos comunes,

sin ser el objeto real.

Clases

Page 20: Orientación a Objetos

Página 20

Niveles de accesibilidad y visibilidad de características y

comportamientos de una clase.

Clases

(-) Privado, sólo se

pueden acceder

desde operaciones

de la clase.

(#) Protegido, sólo se

pueden acceder desde

operaciones de la clase

o de clases derivadas

de la original.

(+) Público, se

pueden acceder

desde cualquier

clase.

Page 21: Orientación a Objetos

Página 21

Herencia

¿Qué es herencia?

Es el mecanismo que permite definir nuevas clases

partiendo de otras ya existentes.

Los nuevos objetos heredan automaticamente todas

las caracteristicas y comportamientos, pero además

pueden introducir otras propias que las diferencian.

La herencia se basa en la división de clases básicas

en subclases.

Page 22: Orientación a Objetos

Página 22

Herencia Simple

Herencia

Page 23: Orientación a Objetos

Página 23

Herencia Multiple

Herencia

Page 24: Orientación a Objetos

Página 24

Polimorfismo

¿Qué es polimorfismo?

Es aquella cualidad que poseen los objetos para responder de distinto

modo ante el mismo mensaje.

Page 25: Orientación a Objetos

Página 25

Encapsulamiento

¿Qué es encapsulamiento?

El encapsulamiento reúne a todos los

elementos que pueden considerarse

pertenecientes a una misma entidad,

permitiendo que los usuarios sólo tengan

que comprender su interfaz, olvidándose

de cómo está implementada, reduciendo

de esta forma la complejidad de utilización.

Page 26: Orientación a Objetos

Página 26

Abstracción

¿Qué es abstracción?

Es la capacidad de separar los elementos para

poder verlos de forma singular, así como

representar las características esenciales de un

objeto, sin preocuparse de las no esenciales.

Page 27: Orientación a Objetos

Página 27

Abstracción

La generalización es una

perspectiva ascendente (bottom-

up), consiste en unir los elementos

comunes de varias clases en una

más general llamada superclase.

La especialización es una

perspectiva descendente (top-

down), permite capturar las

particularidades de un conjunto de

objetos no discriminados por las

clases ya identificadas en una

subclase.

Esp

ecia

lizació

n

Gen

era

lizació

n

Page 28: Orientación a Objetos

Página 28

Problemas Comunes

Cuidado, hay que ser muy cuidadosos en la creación de los objetos, ya

que de ello dependerá el éxito de nuestro proyecto. Un error en estas

primeras definiciones podría resultar catastrófico. Precisamente el secreto

de esta técnica está en la correcta definición inicial de los objetos.

Actualización, los estándares en este tipo de técnicas están en continua

evolución lo que exige una actualización permanente.

Experiencia, los analistas, diseñadores y desarrolladores del proyecto

deben conocer las reglas del juego y poseer suficiente experiencia en

programación.

Incompatibilidad, la imposibilidad de utilización de objetos de distintos

desarrolladores.

Page 29: Orientación a Objetos

Página 29

Conclusiones

Para resolver los problemas, hay que observar en el mundo del problema

como los objetos interactúan entre sí, por consiguiente modelar consiste

en identificar ¿qué tipos de objetos existen?, ¿cómo son?, ¿cómo se

comportan? y ¿cómo se relacionan?, y así poder interpretar la solución

del problema.

La orientación a objetos debe usarse en grandes proyectos de software

donde se tiene y requiere una clara identificación de los objetos, para

realizar interfaces de usuario y los estructurados ó procedurales en

programas pequeños donde queremos muy alta eficiencia.

Page 30: Orientación a Objetos

Página 30

Conclusiones

La orientación a objetos tiene la necesidad de una vista organizada y

manejable del desarrollo del software en todas las fases del modelo del

ciclo de vida del software.

Esta demanda ha sido satisfecha por el Lenguaje de Modelado

Unificado (UML) y por herramientas CASE.

Page 31: Orientación a Objetos

Página 31

Contacto

Ing. Carlos Verano A.

CEO INTEXTUM

Email: [email protected]

Ps. Santiago 2228 Of.301

Jesús María, Lima-Perú

Teléfono: 511 – 6353024

http://www.intextum.com

¡Gracias!