1. ´ ´
Evolucion de la Programacion
Orientada a Objetos
Dr. Luis Gerardo de la Fraga
Departamento de Computaci´n o
Cinvestav
Correo-e: fraga@cs.cinvestav.mx
7 de diciembre de 2006
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 1/32
2. ´
Motivacion
Se presentar´ en esta charla:
a
Una revisi´n hist´rica del
o o
paradigma OO
Situar OO contra otros
paradigmas, en especial los
lenguajes de muy alto nivel
Una cr´
ıtica personal a la
programaci´n OO
o
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 2/32
3. Contenido
Introducci´n
o
Antecedentes de la programaci´n OO
o
Caracter´
ısticas del modelo OO
Comparaci´n entre lenguajes OO
o
Clasificaci´n de los metodolog´ OO
o ıas
Los lenguajes de muy alto nivel
¿Cu´l es el mejor paradigma?
a
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 3/32
4. ´
Introduccion (1/3)
La programaci´n OO empez´ hace 30 a˜os
o o n
En los 1990s se increment´ dram´ticamente la demanda para
o a
sistemas de software OO, por la promesa en la revoluci´n 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 Evoluci´n de la Programaci´n Orientada a Objetos
o o 4/32
5. ´
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 abstracci´n en terminos de conceptos de OO
o
es una t´cnica 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 r´pido
a
desarrollo del software.
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 5/32
6. ´
Introduccion (3/3)
Las razones del r´pido desarrollo en los ultimos 15 a˜os han sido:
a ´ n
Una mejor modelaci´n 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 Evoluci´n de la Programaci´n Orientada a Objetos
o o 6/32
7. Antecedentes (1/2)
Simulación Sistemas Abstracción Inteligencia
de sistemas operativos de datos artificial
Tipos de
Monitores datos
Clases + abstractos + Marcos
objetos encapsulación
Paradigma
Orientado a Objetos
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 7/32
8. Antecedentes (2/2)
La caracter´
ıstica com´n de estas ideas es que un objeto es una
u
entidad l´gica o f´
o ısica que est´ autocontenida.
a
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 8/32
9. Caracter´
ısticas
OO se define por herencia, encapsulaci´n, m´todos y
o e
mensajes, como en Smalltalk.
OO se define encapsulaci´n, abstracci´n de datos, m´todos,
o o e
mensajes, herencia y vinculaci´n din´mica.
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
aut´nomas que tienen un estado y responden a mensajes. Las
o
clases agrupan los objetos por sus atributos y operaciones.
Todas tienen el com´n de usar objetos como una
u
encapsulaci´n para proteger los datos con todas las
o
operaciones legales que actuan sobre esa informaci´n oculta.
o
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 9/32
10. ´
Comparacion entre lenguajes OO (1/4)
Ensamblador
50s
Fortran
60s Lisp Algol
Simula Pascal
70s
Smalltalk C Ada CLU
Beta Modula−2
C++
80s
Flavors Actor
Loops POOL−T C−Objetivo Pascal Objetivo
CLOS ABCL Eiffel Modula−3
Orient84
90s
Java
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 10/32
11. ´
Comparacion entre lenguajes OO (2/4)
Lenguaje ensamblador:
Intrucciones de m´quina (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 est´n compuestos de de una colecci´n de variables
a o
que representan alg´n dato y un conjunto de procedimientos que
u
manipulan esas variables.
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 11/32
12. ´
Comparacion entre lenguajes OO (3/4)
Caracter´
ısticas Tipos Apoyo Vinculaci´n
o Biblioteca
X de de din´mica
a extensa
Lenguajes datos herencia
Simula Si Si Si No
CLU Si No Si No
Ada Si No No Si
Smalltalk Si Si Si Si
C Objetivo Si Si Si Si
C++ Si Si Si Si
CLOS Si Si Si No
Pascal Obj. Si Si Si No
Beta Si Si Si No
Eiffel Si Si Si Si
Actor Si Si Si No
Java Si Si Si Si
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 12/32
13. Clasificacion de los metodolog´ OO (1/6)
´ ıas
Varios m´todos 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 clasificarse en tres categor´
e ıas:
Descomposici´n funcional.
o
Enf´sis en datos, m´s que en funciones.
a a
Ambos puntos de vista: funcional y datos.
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 13/32
14. Clasificacion de los metodolog´ OO (2/6)
´ ıas
Descomposici´n funcional:
o
Dise˜o Estructural, Refinamiento por Pasos.
n
Enf´sis en datos, m´s que en funciones:
a a
Programaci´n Estructurada, Modelo Entidad-Relaci´n
o o
Ambos puntos de vista: funcional y datos:
An´lisis Estructural, An´lisis de Sistemas Estructurados,
a a
An´lisis de Sistemas Estructurados y Metodolog´ de Dise˜o.
a ıa n
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 14/32
15. Clasificacion de los metodolog´ OO (3/6)
´ ıas
Desarrollo estructural:
An´lisis estructural, dise˜o estructural y programaci´n
a n o
estructurada.
Aplicar primero el dise˜o estructural y luego la proximaci´n
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 Evoluci´n de la Programaci´n Orientada a Objetos
o o 15/32
16. Clasificacion de los metodolog´ OO (4/6)
´ ıas
Metodolog´ “orientadas a objetos”:
ıas
Adaptaci´n: mezclar una aproximaci´n orientada a objetos
o o
con una metodolog´ bien conocida de desarrollo estructural.
ıa
Asimilaci´n: 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 Evoluci´n de la Programaci´n Orientada a Objetos
o o 16/32
17. Clasificacion de los metodolog´ OO (5/6)
´ ıas
Análisis Análisis
Estructurado Orientado a
Análisis
Objetos
Diagramas de
Flujo de datos + Diagramas de
MRE clases
Diseño
Diseño
Orientado a
estructural Diseño
Objetos
Tablas de
Diagramas de
estructura
clases + objetos
Programación Programación
estructurada Realización Orientada a
Objetos
Datos
Estructuras + Tipos de datos
Funciones abstractos +
Herencia
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 17/32
18. Clasificacion de los metodolog´ OO (6/6)
´ ıas
La orientaci´n 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
Unificado (UML) y por herramientas CASE tales como Rational
Rose.
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 18/32
19. Los lenguajes de muy alto nivel
Son lenguajes que trabajan en scripts, son de m´s alto nivel con
a
menos escritura
1000 Scripting
Instrucciones/declaración Visual Basic
100 Java
Tcl/Perl
C++
C
10
Ensamblador
Programación de sistemas
1
Grado de escritura
Ejemplos: Perl, PHP, Python, Tcl/Tk, Visual Basic
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 19/32
20. Perl
Puede verse como la uni´n de: el shell, awk y sed.
o
Tambi´n permite el uso de objetos.
e
Tiene una gran cantidad de “m´dulos”: www.cpan.org
o
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 20/32
21. ´
¿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 Evoluci´n de la Programaci´n Orientada a Objetos
o o 21/32
22. Realizaciones
Los lenguajes de alto nivel pueden usar en programas cortos,
de r´pido desarrollo, que se ejecutar´n unas pocas veces.
a a
Tambi´n en programas para tratamientos de textos.
e
Los procedurales en programas peque˜os donde queremos
n
muy alta eficiencia.
OO debe usarse en grandes proyectos de software donde se
tiene una clara identificaci´n de los objetos. Para realizar
o
interfaces de usuario.
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 22/32
23. ´
Interfaces graficas con Qt
Ventana
principal
Widgets
Ventana de
dibujo
Evento de ratón
Evento de teclado
Evento de reloj
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 23/32
24. Realizaciones
¿Qu´ tanto es grande?
e
XMIPP se cambi´ a objetos en tres a˜os.
o n
El sistema de administraci´n de conferencias se hizo
o
procedural.
¿Se puede forzar el uso de objetos?
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 24/32
25. Aplicaci´n
o Comparaci´n
o Raz´n de
o Raz´n de
o
c´digo
o esfuerzo
Aplicaci´n de base
o Ver. C++: 2 meses: 60
de datos
Ver. TCL: 1 d´ ıa
Instalaci´n y prue-
o Aplicaci´n de prueba en C:
o 47 22
ba de un sistema de 272,000 lineas, 120 meses,
c´mputo
o Aplicaci´n C FIS: 90,000
o
lineas, 60 meses. Versi´n o
Tcl/Perl: 7,700 lineas, 8
meses
Biblioteca de base Versi´n en C++: 2-3 meses
o 8-12
de datos Versi´n Tcl: 1 semana
o
Escaner de seguri- Versi´n en C: 3,000 lineas,
o 10
dad: Ver. Tcl: 300 lineas
Simulador e interfaz Versi´n en Java: 3,400 li-
o 2 3-4
neas, 3-4 semanas, Versi´no
en Tcl: 1,600 lineas, < 1 se-
mana
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 25/32
26. Modelos del sistema SMC
Diagrama general de casos de uso
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 26/32
27. Diagrama de estados de un art´
ıculo
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 27/32
28. ˜
Diseno
Diagrama de subsistemas
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 28/32
29. Implementacion: Disposicion f´
´ ´ ısica de los
archivos
Disposici´n f´
o ısica de los archivos
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 29/32
30. Conclusiones
La programaci´n OO tuvo un crecimiento muy grande en los 1990s
o
Aunque todav´ se debate los beneficios de OO, a treinta a˜os de su
ıa n
invenci´n, OO todav´ seguir´ us´ndose
o ıa a a
Para usar OO deben aplicarse las t´cnicas de Ingenier´ de Software.
e ıa
Deben dominarse los tres paradigmas: alto nivel, OO, procedural.
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 30/32
31. Esta presentaci´n 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 Evoluci´n de la Programaci´n Orientada a Objetos
o o 31/32
32. ´
El Departamento de Computacion, Cinvestav
Ofrecemos:
1. Maestr´ en Ciencias en Computaci´n
ıa o
2. Doctorado en Ciencias en Computaci´n
o
http://www.cs.cinvestav.mx
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 32/32