PresentaciónIntroducción a la Orientación a Objetos     Ing. Mauricio Paletta, Msc         INGENIERÍA EN INFORMÁTICA      ...
La Crisis del Software• Fenómeno ocurrido en la década de los  80’s como consecuencia del auge de la  automatización hacie...
La Crisis del Software• “Complejidad del Software”.                        Programación II
La Crisis del SoftwareBrooks: “… es una propiedad esencial, noaccidental”“… es una característicainherente, por lo tantode...
La Crisis del Software• No terminar los proyectos a tiempo.• Consumir más presupuesto del planificado.• Baja productividad...
La Crisis del Software• Usuarios se preguntan: ¿Por qué el desarrollo de software es tan costoso? ¿Por qué toma tanto tiem...
La Complejidad del Software                Programación II
La Complejidad del Software4 factores que influyen en la complejidad:Complejidad del dominio del problema: • Problemas qu...
La Complejidad del SoftwareDificultad de administrar el proceso de desarrollo: • Dar la ilusión de simplicidad. • Manejo ...
La Complejidad del SoftwareFlexibilidad exigida al software: • Eficiencia versus eficacia. • Optimización de recursos ver...
La Complejidad del SoftwareMantenimiento del software: • Correctivo – corregir errores en   programas (20 %). • Adaptativ...
Llegada al CaosA medida que aumentó la complejidad delsoftware requerido, se redujo las habilidadespara manejar la complej...
Llegada al CaosSolución de la Ingeniería de Software: • Tratar el software como una ingeniería. • Uso de metodologías estr...
Llegada al CaosUn médico, un ingeniero civil y un profesional de lacomputación estaban discutiendo sobre cuál era laprofes...
Características ideales Software (McCall)   • Mantenibilidad                              • Portabilidad   • Flexibilidad ...
Características ideales Software (McCall)  Revisión del producto:    • Mantenibilidad: fácil corregir errores.    • Flexi...
Características ideales Software (McCall)  Transición del producto:    • Portabilidad: fácil de transportar entre      am...
Características ideales Software (McCall)  Características operacionales:    • Corrección: grado de satisfacción de      ...
Características ideales Software (McCall)  Otros aspectos:    • Comprensibilidad: grado de poderse leer y      comprender...
3 Puntos para traer orden al CaosDescomposición: • Descomponer el software en partes   pequeñas para ser refinadas de for...
3 Puntos para traer orden al CaosConceptos relacionados• Modularidad.• Programación estructurada.                      Pro...
3 Puntos para traer orden al CaosAbstracción: • Ignorar los detalles no significativos de   cada elemento y trabajar con ...
3 Puntos para traer orden al CaosConceptos relacionados• Tipo abstracto de datos.• Conceptualización del dominio.         ...
3 Puntos para traer orden al CaosJerarquía: • Organizar los elementos en niveles de   categoría. • Relaciones estructural...
3 Puntos para traer orden al CaosConceptos relacionados• Clasificación /  generalización /  tipo de.• Composición /  agreg...
Orientación a ObjetosFórmula conceptual:Orientación a Objetos = Descomposición +                        Abstracción +     ...
Orientación a ObjetosDescomposición       ¿Cómo hacer que el                    conjunto de elementos                   re...
Orientación a Objetos• Surge como una respuesta hacia la crisis  del software.• Es una nueva forma de pensar usando  conce...
Orientación a Objetos• “Ejecutar un programa o sistema, es algo  tan sencillo como crear objetos y disparar  mensajes” (A....
Orientación a Objetos     Descomposición                 Orientación        funcional                    a ObjetosMódulos ...
Orientación a Objetos             Programación II
Orientación a ObjetosBeneficios:• Desarrollos más rápidos – basado en la  reusabilidad de elementos.• Calidad más alta – b...
Orientación a Objetos• Costos más bajos (programación, diseño  y administración).• Soporte a sistemas de gran escala.• Mej...
Evolución Histórica1957   Ten Dyke & Kunz usaron técnicas rudimentarias de orientación a       objetos en el diseño del mi...
Evolución Histórica1975   Fertilización recíproca entre la OOP y la investigación y el       desarrollo en IA: LISP, FLAVO...
Evolución Histórica1986   Sistemas de Actores – Ahga, dirigidos normalmente a aplicaciones       en tiempo real y concurre...
Evolución Histórica1990   Interés hacia la definición de estándares. El principal protagonista       es el grupo OMG (UML,...
Evolución Histórica       Fase I                 Fase II                  Fase III                  Fase IV  década de los...
Evolución Histórica            Programación II
Evolución Histórica         Algoritmos y Programación III                Programación II
Próxima SlideShare
Cargando en…5
×

Orientacion objetos

486 visualizaciones

Publicado el

Orientacion objetos - UNEG - Profesor Mauricio Paletta

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
486
En SlideShare
0
De insertados
0
Número de insertados
2
Acciones
Compartido
0
Descargas
6
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Orientacion objetos

  1. 1. PresentaciónIntroducción a la Orientación a Objetos Ing. Mauricio Paletta, Msc INGENIERÍA EN INFORMÁTICA Programación II UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA Programación II
  2. 2. La Crisis del Software• Fenómeno ocurrido en la década de los 80’s como consecuencia del auge de la automatización haciendo uso de computadoras.• La mayoría del software se construye a la medida, en vez de ensamblar componentes existentes.• Los programadores no disponen / usan “componentes” de software reutilizables  empezar desde cero. Programación II
  3. 3. La Crisis del Software• “Complejidad del Software”. Programación II
  4. 4. La Crisis del SoftwareBrooks: “… es una propiedad esencial, noaccidental”“… es una característicainherente, por lo tantodebemos tratar deadministrar lacomplejidad” Programación II
  5. 5. La Crisis del Software• No terminar los proyectos a tiempo.• Consumir más presupuesto del planificado.• Baja productividad.• Hacer productos de baja calidad.• Gran cantidad de personal especializado dedicado a labores de mantenimiento.• Usuarios insatisfechos con los sistemas y con los departamentos o grupos de desarrollo. Programación II
  6. 6. La Crisis del Software• Usuarios se preguntan: ¿Por qué el desarrollo de software es tan costoso? ¿Por qué toma tanto tiempo? ¿Hay alguna perspectiva de mejora? Programación II
  7. 7. La Complejidad del Software Programación II
  8. 8. La Complejidad del Software4 factores que influyen en la complejidad:Complejidad del dominio del problema: • Problemas que involucran elementos de gran complejidad. • Existencia de requerimientos contradictorios. • Distancia entre el usuario y el desarrollador (diferentes perspectivas del problema). Programación II
  9. 9. La Complejidad del SoftwareDificultad de administrar el proceso de desarrollo: • Dar la ilusión de simplicidad. • Manejo de un grupo de trabajo (problemas de comunicación, coordinación e integración). Programación II
  10. 10. La Complejidad del SoftwareFlexibilidad exigida al software: • Eficiencia versus eficacia. • Optimización de recursos versus calidad en la respuesta. • Bueno / bonito / barato. Programación II
  11. 11. La Complejidad del SoftwareMantenimiento del software: • Correctivo – corregir errores en programas (20 %). • Adaptativo – cambios en los requerimientos (25 %). • Perfectivo – tratar de mantener el software operativo (55 %). Programación II
  12. 12. Llegada al CaosA medida que aumentó la complejidad delsoftware requerido, se redujo las habilidadespara manejar la complejidad. CAOS Programación II
  13. 13. Llegada al CaosSolución de la Ingeniería de Software: • Tratar el software como una ingeniería. • Uso de metodologías estructuradas. • Mayor participación del usuario. • Pruebas planificadas y documentadas. • Uso de herramientas automatizadas. Programación II
  14. 14. Llegada al CaosUn médico, un ingeniero civil y un profesional de lacomputación estaban discutiendo sobre cuál era laprofesión más antigua del mundo:El médico: En la Biblia dice que Dios creó a Eva de lacostilla de Adán, por lo tanto la mía es la profesión másantigua.El ingeniero civil: Pero en el génesis dice que Dios impusoel orden y sacó a la tierra del CAOS en que se encontrabaen siete días; esta fue la primera y más espectacularaplicación de ingeniería civil.El profesional de la computación: Pero, ¿quién creenustedes que creó el CAOS? Programación II
  15. 15. Características ideales Software (McCall) • Mantenibilidad • Portabilidad • Flexibilidad • Reusabilidad • Verificabilidad • Interoperabilidad Revisión Transición del del Producto Producto Características Operacionales • Corrección • Integridad • Fiabilidad • Usabilidad • Eficiencia Programación II
  16. 16. Características ideales Software (McCall) Revisión del producto: • Mantenibilidad: fácil corregir errores. • Flexibilidad: fácil de modificar. • Verificabilidad: fácil de probar. Programación II
  17. 17. Características ideales Software (McCall) Transición del producto: • Portabilidad: fácil de transportar entre ambientes. • Reusabilidad: grado en que el todo o alguna de las partes se pueda usar en otros desarrollos. • Interoperabilidad: fácil de acoplar. Programación II
  18. 18. Características ideales Software (McCall) Características operacionales: • Corrección: grado de satisfacción de requerimientos. • Fiabilidad: grado de funcionamiento esperado. • Eficiencia: minimización de recursos. • Integridad: grado de seguridad. • Usabilidad: facilidad de aprendizaje y operación. Programación II
  19. 19. Características ideales Software (McCall) Otros aspectos: • Comprensibilidad: grado de poderse leer y comprender. • Robustez: capacidad de funcionar en condiciones anormales. • Extensibilidad: facilidad de crecer/ mejorar. • Modularidad: grado de independencia funcional de cada uno de los componentes. Programación II
  20. 20. 3 Puntos para traer orden al CaosDescomposición: • Descomponer el software en partes pequeñas para ser refinadas de forma independiente. • La complejidad del problema se restringe a la complejidad de cada una de las partes. • Es necesario hacer una división inteligente. Programación II
  21. 21. 3 Puntos para traer orden al CaosConceptos relacionados• Modularidad.• Programación estructurada. Programación II
  22. 22. 3 Puntos para traer orden al CaosAbstracción: • Ignorar los detalles no significativos de cada elemento y trabajar con modelos ideales de éstos. • Brinda enorme poder para manejar la complejidad. • Ayuda a vencer las limitaciones de nuestra memoria intermedia para el manejo de la información. Programación II
  23. 23. 3 Puntos para traer orden al CaosConceptos relacionados• Tipo abstracto de datos.• Conceptualización del dominio. Programación II
  24. 24. 3 Puntos para traer orden al CaosJerarquía: • Organizar los elementos en niveles de categoría. • Relaciones estructurales y semánticas. • Incrementa el contenido semántico de las piezas de información. • Ayuda a la comprensión del funcionamiento del sistema. Programación II
  25. 25. 3 Puntos para traer orden al CaosConceptos relacionados• Clasificación / generalización / tipo de.• Composición / agregación / parte de. Programación II
  26. 26. Orientación a ObjetosFórmula conceptual:Orientación a Objetos = Descomposición + Abstracción + Jerarquía Programación II
  27. 27. Orientación a ObjetosDescomposición ¿Cómo hacer que el conjunto de elementos resuelvan el problema?Abstracción ¿Cómo identificar los elementos basado en los conceptos del problema?Jerarquía ¿Cómo relacionar los elementos para reducir la complejidad de cada uno de ellos? Programación II
  28. 28. Orientación a Objetos• Surge como una respuesta hacia la crisis del software.• Es una nueva forma de pensar usando conceptos del mundo real.• Significa que el software se organiza como un conjunto de objetos discretos cada uno de los cuales incorpora su estructura de datos y su comportamiento. Programación II
  29. 29. Orientación a Objetos• “Ejecutar un programa o sistema, es algo tan sencillo como crear objetos y disparar mensajes” (A. Goldberg)• Término introducido en el léxico con la llegada del lenguaje de programación Smalltalk.• Conceptos a manejar: clase, objeto, método, mensaje, subclase, superclase, instancia, herencia, encapsulamiento, polimorfismo, interfaz. Programación II
  30. 30. Orientación a Objetos Descomposición Orientación funcional a ObjetosMódulos construidos Módulos construidosalrededor de las alrededor de las clasesoperacionesDatos globales o Clases débilmentedistribuidos entre los acopladas y sin datosmódulos globalesEntrada / Proceso / Salida Encapsulamiento / MensajesOrganigramas de flujos de Diagramas jerárquicos dedatos clases Programación II
  31. 31. Orientación a Objetos Programación II
  32. 32. Orientación a ObjetosBeneficios:• Desarrollos más rápidos – basado en la reusabilidad de elementos.• Calidad más alta – basado en el uso de objetos eficientes y eficaces ya existentes.• Mantenimiento más fácil – basado en el uso de objetos libres de errores. Programación II
  33. 33. Orientación a Objetos• Costos más bajos (programación, diseño y administración).• Soporte a sistemas de gran escala.• Mejores estructuras de información.• Aumento de la adaptabilidad. Programación II
  34. 34. Evolución Histórica1957 Ten Dyke & Kunz usaron técnicas rudimentarias de orientación a objetos en el diseño del misil Minuteman.1967 Desarrollo del lenguaje de simulación de sucesos discretos – Simula, en Noruega, por K. Nygaard. Introdujo los conceptos básicos de OO. La idea fue definir un lenguaje para construir modelos de sistemas físicos complejos que pueden contener miles de componentes. Los módulos están basados en los objetos físicos presentes en el entorno del problema.1970 Desarrollo del lenguaje de programación Smalltalk en el Centro de Investigaciones de Palo Alto (PARC), basado en el trabajo doctoral de Alan Kay. Visión de un PC pequeño, universal, capaz de tratar cualquier clase de problema de gestión de información.1970 Desarrollo de la máquina Flex – Dynabook en PARC, basado en Smalltalk. Programación II
  35. 35. Evolución Histórica1975 Fertilización recíproca entre la OOP y la investigación y el desarrollo en IA: LISP, FLAVORS, LOOPS y CLOS, KEE y ART (ideas sobre la representación del conocimiento fundamentadas en redes y marcos semánticos – importante para el concepto de herencia).1976 Desarrollo del lenguaje Alphard por Wulf y compañía.1977 Desarrollo del lenguaje CLU por Liskov y compañía.1980 Explosión de interés por las interfaces de usuario: WIMP – Windows, Icons, Mice and Pointers (Apple); GUI – Graphical User Interface; Presentation Manager, Microsoft Windows; Sistemas estandarizados abiertos basados en UNIX. Programación II
  36. 36. Evolución Histórica1986 Sistemas de Actores – Ahga, dirigidos normalmente a aplicaciones en tiempo real y concurrentes.1986 Desarrollo del lenguaje de programación C++, por Bjarne Stroustup (AT&T).1988 Desarrollo del lenguaje de programación Eiffel, por Bertrand Meyer.1989 Sistemas de pizarra (Englemore y Morgan) para la representación y manejo del conocimiento.1989 Desarrollo de herramientas CASE e IPSE.1990 Interés hacia el análisis y diseño orientado a objetos: Biggerstaff y Richter, Prieto-Díaz y Freeman, Sommerville, Booch, Rumbaugh (OMT), Jakobson (OOSE) Programación II
  37. 37. Evolución Histórica1990 Interés hacia la definición de estándares. El principal protagonista es el grupo OMG (UML, OMA, CORBA, MDA, etc.)1990 Base de datos orientada a objetos1996 Desarrollo del lenguaje de programación Java, por Sun Microsystems2000 Desarrollo del lenguaje de programación C#. Búsqueda de conceptos de niveles de abstracción más altos que un objeto: Agente, Cubo, etc. Base de toda plataforma de software: operativa, desarrollo, gráfica, etc. Programación II
  38. 38. Evolución Histórica Fase I Fase II Fase III Fase IV década de los 70 década de los 80 década de los 90 del 2000 hasta hoy(época de invención) (época de confusión) (época de madurez) (época actual)Simulación de Interfaces WIMP Énfasis en el análisis Búsqueda de nivelessucesos discretos y el diseño más altos de abstracción (Agentes, cubos, etc.)Simula Xerox y Apple Sistemas abiertos C#Kay: máquina FLEX Extensiones LISP Aplicaciones Paradigma de todas las plataformas de desarrolloPARC: Dynabook Entornos de Bases de datos UML versión … inteligencia artificial orientadas a objetosSmalltalk Nuevos lenguajes: Estándares Software => Objetos Eiffel, C++, … Programación II
  39. 39. Evolución Histórica Programación II
  40. 40. Evolución Histórica Algoritmos y Programación III Programación II

×