Post on 21-Jul-2015
Programación
Orientada a Objetos Ing. Carlos Verano A. http://cveranoa.blogspot.com
Página 2
Introducción
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
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.
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.
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)
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)
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.
Página 9
Elementos
Objeto
Clase
Mensaje
Encapsulamiento
Herencia Polimorfismo
Abstracción
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
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.
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.
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.
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.
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
Página 16
Tipos de mensaje
Simple.
Mensaje
Síncrono.
Objeto
A
Objeto
B
Objeto
A
Objeto
B
Página 17
Cronometrado.
Objeto
A
Objeto
B
Tipos de mensaje
Esperado.
Mensaje
Objeto
A
Objeto
B
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
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
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.
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.
Página 22
Herencia Simple
Herencia
Página 23
Herencia Multiple
Herencia
Página 24
Polimorfismo
¿Qué es polimorfismo?
Es aquella cualidad que poseen los objetos para responder de distinto
modo ante el mismo mensaje.
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.
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.
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
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.
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.
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.
Página 31
Contacto
Ing. Carlos Verano A.
CEO INTEXTUM
Email: cveranoa@intextum.com
Ps. Santiago 2228 Of.301
Jesús María, Lima-Perú
Teléfono: 511 – 6353024
http://www.intextum.com
¡Gracias!