Está en la página 1de 32

Evolucion de la Programacion Orientada a Objetos

Dr. Luis Gerardo de la Fraga


Departamento de Computacin o Cinvestav Correo-e: fraga@cs.cinvestav.mx

7 de diciembre de 2006

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

1/32

Motivacion

Se presentar en esta charla: a Una revisin histrica del o o paradigma OO Situar OO contra otros paradigmas, en especial los lenguajes de muy alto nivel Una cr tica personal a la programacin OO o

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

2/32

Contenido

Introduccin o Antecedentes de la programacin OO o Caracter sticas del modelo OO Comparacin entre lenguajes OO o Clasicacin de los metodolog OO o as Los lenguajes de muy alto nivel Cul es el mejor paradigma? a

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

3/32

Introduccion (1/3)

La programacin OO empez hace 30 aos o o n En los 1990s se increment dramticamente la demanda para o a sistemas de software OO, por la promesa en la revolucin en o el desarrollo de software. Han aparerecido varias metodolog para el desarrollo de as software, que tienen que ver con algunas o todas las fases del ciclo de vida del software, desde los requerimientos al mantenimiento.

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

4/32

Introduccion (2/3)
Algunas caracter sticas importantes de los sistemas de software actuales son: Complejidad: la arquitectura interna de los sistemas actuales de software es compleja, incluyen frecuentemente concurrencia y paralelismo. La abstraccin en terminos de conceptos de OO o es una tcnica que ayuda a tratar con la complejidad. e Amigabilidad: Este es un requerimiento de suma importancia para los sistemas de software en general. Reusabilidad: Tomar componentes creados por otros es mejor que crearlos nuevos. La herencia es un mecanismo de OO que estimula la reusabilidad del software. Facilita el rpido a desarrollo del software.

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

5/32

Introduccion (3/3)

Las razones del rpido desarrollo en los ultimos 15 aos han sido: a n Una mejor modelacin de aplicaciones del mundo real o La posibilidad del reuso del software durante el desarrollo de un sistema de software

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

6/32

Antecedentes (1/2)

Simulacin de sistemas Clases + objetos

Sistemas operativos Monitores

Abstraccin de datos Tipos de datos abstractos + encapsulacin

Inteligencia artificial Marcos

Paradigma Orientado a Objetos

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

7/32

Antecedentes (2/2)

La caracter stica comn de estas ideas es que un objeto es una u entidad lgica o f o sica que est autocontenida. a

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

8/32

Caracter sticas
OO se dene por herencia, encapsulacin, mtodos y o e mensajes, como en Smalltalk. OO se dene encapsulacin, abstraccin de datos, mtodos, o o e mensajes, herencia y vinculacin dinmica. o a Es un modelo de simula el comportamiento ya sea de una parte del mundo real o imaginario. Objetos, clases y herencia. Los objetos son entidades autnomas que tienen un estado y responden a mensajes. Las o clases agrupan los objetos por sus atributos y operaciones. Todas tienen el comn de usar objetos como una u encapsulacin para proteger los datos con todas las o operaciones legales que actuan sobre esa informacin oculta. o

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

9/32

Comparacion entre lenguajes OO (1/4)

Ensamblador 50s Fortran 60s Lisp Algol Simula 70s Smalltalk Beta 80s Flavors Loops CLOS 90s Actor POOLT ABCL Orient84 Java CObjetivo Eiffel Pascal Objetivo Modula3 C C++ Ada CLU Modula2 Pascal

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

10/32

Comparacion entre lenguajes OO (2/4)

Lenguaje ensamblador: Intrucciones de mquina (operadores) que manipulan en a contenido de localidades de memoria (operandos) Lenguaje de alto nivel: Operadores se vuelven declaraciones y los operandos en variables y estructuras de datos. Los programas estn compuestos de de una coleccin de variables a o que representan algn dato y un conjunto de procedimientos que u manipulan esas variables.

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

11/32

Comparacion entre lenguajes OO (3/4)


Caracter sticas X Lenguajes Simula CLU Ada Smalltalk C Objetivo C++ CLOS Pascal Obj. Beta Eiel Actor Java Tipos de datos Si Si Si Si Si Si Si Si Si Si Si Si Apoyo de herencia Si No No Si Si Si Si Si Si Si Si Si Vinculacin o dinmica a Si Si No Si Si Si Si Si Si Si Si Si Biblioteca extensa No No Si Si Si Si No No No Si No Si

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

12/32

Clasificacion de los metodolog OO (1/6) as

Varios mtodos han sido propuestos para sistematizar el proceso de e vida del software. Y muchas metodolog de desarrollo de software as han sido propuestas, y stas pueden clasicarse en tres categor e as: Descomposicin funcional. o Enfsis en datos, ms que en funciones. a a Ambos puntos de vista: funcional y datos.

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

13/32

Clasificacion de los metodolog OO (2/6) as

Descomposicin funcional: o Diseo Estructural, Renamiento por Pasos. n Enfsis en datos, ms que en funciones: a a Programacin Estructurada, Modelo Entidad-Relacin o o Ambos puntos de vista: funcional y datos: Anlisis Estructural, Anlisis de Sistemas Estructurados, a a Anlisis de Sistemas Estructurados y Metodolog de Diseo. a a n

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

14/32

Clasificacion de los metodolog OO (3/6) as

Desarrollo estructural: Anlisis estructural, diseo estructural y programacin a n o estructurada. Aplicar primero el diseo estructural y luego la proximacin n o orientada a objetos resulta en problemas dado que no se puede mapear apropiadamente las funciones en objetos.

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

15/32

Clasificacion de los metodolog OO (4/6) as

Metodolog orientadas a objetos: as Adaptacin: mezclar una aproximacin orientada a objetos o o con una metodolog bien conocida de desarrollo estructural. a Asimilacin: usar una metodolog orientada a objetos para o a desarrollar sistemas de software, pero que siguen el modelo tradicional del ciclo de vida del software.

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

16/32

Clasificacion de los metodolog OO (5/6) as


Anlisis Estructurado Diagramas de Flujo de datos + MRE

Anlisis

Anlisis Orientado a Objetos Diagramas de clases Diseo Orientado a Objetos Diagramas de clases + objetos Programacin Orientada a Objetos Tipos de datos abstractos + Herencia

Diseo estructural Tablas de estructura

Diseo

Programacin estructurada Datos Estructuras + Funciones

Realizacin

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

17/32

Clasificacion de los metodolog OO (6/6) as

La orientacin a objetos tiene la necesidad de una vista organizada o 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 Unicado (UML) y por herramientas CASE tales como Rational Rose.

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

18/32

Los lenguajes de muy alto nivel


Son lenguajes que trabajan en scripts, son de ms alto nivel con a menos escritura
1000 Instrucciones/declaracin Scripting Visual Basic Java Tcl/Perl C 10 Ensamblador Programacin de sistemas 1 Grado de escritura C++

100

Ejemplos: Perl, PHP, Python, Tcl/Tk, Visual Basic

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

19/32

Perl

Puede verse como la unin de: el shell, awk y sed. o Tambin permite el uso de objetos. e Tiene una gran cantidad de mdulos: www.cpan.org o

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

20/32

Cual es el mejor paradigma?

Procedural Orientado a objetos Alto nivel Deben conocerse y dominarse todos los paradigmas

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

21/32

Realizaciones

Los lenguajes de alto nivel pueden usar en programas cortos, de rpido desarrollo, que se ejecutarn unas pocas veces. a a Tambin en programas para tratamientos de textos. e Los procedurales en programas pequeos donde queremos n muy alta eciencia. OO debe usarse en grandes proyectos de software donde se tiene una clara identicacin de los objetos. Para realizar o interfaces de usuario.

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

22/32

Interfaces graficas con Qt

Ventana principal

Widgets Ventana de dibujo Evento de ratn Evento de teclado Evento de reloj

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

23/32

Realizaciones

Qu tanto es grande? e XMIPP se cambi a objetos en tres aos. o n El sistema de administracin de conferencias se hizo o procedural. Se puede forzar el uso de objetos?

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

24/32

Aplicacin o Aplicacin de base o de datos Instalacin y prueo ba de un sistema de cmputo o

Comparacin o Ver. C++: 2 meses: Ver. TCL: 1 d a Aplicacin de prueba en C: o 272,000 lineas, 120 meses, Aplicacin C FIS: 90,000 o lineas, 60 meses. Versin o Tcl/Perl: 7,700 lineas, 8 meses Versin en C++: 2-3 meses o Versin Tcl: 1 semana o Versin en C: 3,000 lineas, o Ver. Tcl: 300 lineas Versin en Java: 3,400 lio neas, 3-4 semanas, Versin o en Tcl: 1,600 lineas, < 1 semana

Razn de o cdigo o

Razn de o esfuerzo 60

47

22

Biblioteca de base de datos Escaner de seguridad: Simulador e interfaz

8-12 10 2 3-4

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

25/32

Modelos del sistema SMC

Diagrama general de casos de uso

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

26/32

Diagrama de estados de un art culo

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

27/32

Diseno

Diagrama de subsistemas

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

28/32

Implementacion: Disposicion f sica de los archivos

Disposicin f o sica de los archivos

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

29/32

Conclusiones

La programacin OO tuvo un crecimiento muy grande en los 1990s o Aunque todav se debate los benecios de OO, a treinta aos de su a n invencin, OO todav seguir usndose o a a a Para usar OO deben aplicarse las tcnicas de Ingenier de Software. e a Deben dominarse los tres paradigmas: alto nivel, OO, procedural.

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

30/32

Esta presentacin puede encontrarse en: o http://delta.cs.cinvestav.mx/fraga/Charlas/ Referencias: L.F. Capretz, A brief history of the Object-Oriented Approach, Software Engineering Notes (ACM SIGSOFT), pp 1-10, vol 28, no 2, March 2003 J.K. Ousterhout, Scripting: Higher level programming for the 21st century, IEEE Computer Magazine, pp 23-30, March 1998.

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

31/32

El Departamento de Computacion, Cinvestav

Ofrecemos: 1. Maestr en Ciencias en Computacin a o 2. Doctorado en Ciencias en Computacin o http://www.cs.cinvestav.mx

Dr. Luis Gerardo de la Fraga

Cinvestav

Evolucin de la Programacin Orientada a Objetos o o

32/32

También podría gustarte