32
Evoluci ´ on de la Programaci ´ on Orientada a Objetos Dr. Luis Gerardo de la Fraga Departamento de Computaci´ on Cinvestav Correo-e: [email protected] 7 de diciembre de 2006 Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´ on de la Programaci´ on Orientada a Objetos 1/32

Evolucion de la programacion

Embed Size (px)

Citation preview

Page 1: Evolucion de la programacion

Evolucion de la ProgramacionOrientada a Objetos

Dr. Luis Gerardo de la Fraga

Departamento de ComputacionCinvestav

Correo-e: [email protected]

7 de diciembre de 2006

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 1/32

Page 2: Evolucion de la programacion

Motivacion

Se presentara en esta charla:

I Una revision historica delparadigma OO

I Situar OO contra otrosparadigmas, en especial loslenguajes de muy alto nivel

I Una crıtica personal a laprogramacion OO

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 2/32

Page 3: Evolucion de la programacion

Contenido

I Introduccion

I Antecedentes de la programacion OO

I Caracterısticas del modelo OO

I Comparacion entre lenguajes OO

I Clasificacion de los metodologıas OO

I Los lenguajes de muy alto nivel

I ¿Cual es el mejor paradigma?

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 3/32

Page 4: Evolucion de la programacion

Introduccion (1/3)

I La programacion OO empezo hace 30 anos

I En los 1990s se incremento dramaticamente la demanda parasistemas de software OO, por la promesa en la revolucion enel desarrollo de software.

I Han aparerecido varias metodologıas para el desarrollo desoftware, que tienen que ver con algunas o todas las fases delciclo de vida del software, desde los requerimientos almantenimiento.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 4/32

Page 5: Evolucion de la programacion

Introduccion (2/3)

Algunas caracterısticas importantes de los sistemas de softwareactuales son:

I Complejidad: la arquitectura interna de los sistemas actualesde software es compleja, incluyen frecuentemente concurrenciay paralelismo. La abstraccion en terminos de conceptos de OOes una tecnica que ayuda a tratar con la complejidad.

I Amigabilidad: Este es un requerimiento de suma importanciapara los sistemas de software en general.

I Reusabilidad: Tomar componentes creados por otros es mejorque crearlos nuevos. La herencia es un mecanismo de OO queestimula la reusabilidad del software. Facilita el rapidodesarrollo del software.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 5/32

Page 6: Evolucion de la programacion

Introduccion (3/3)

Las razones del rapido desarrollo en los ultimos 15 anos han sido:

I Una mejor modelacion de aplicaciones del mundo real

I La posibilidad del reuso del software durante el desarrollo deun sistema de software

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 6/32

Page 7: Evolucion de la programacion

Antecedentes (1/2)

Marcos

Simulaciónde sistemas operativos

Abstracción Inteligenciade datos artificial

Sistemas

ParadigmaOrientado a Objetos

objetosClases + Monitores datos

Tipos de

abstractos +encapsulación

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 7/32

Page 8: Evolucion de la programacion

Antecedentes (2/2)

La caracterıstica comun de estas ideas es que un objeto es unaentidad logica o fısica que esta autocontenida.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 8/32

Page 9: Evolucion de la programacion

Caracterısticas

I OO se define por herencia, encapsulacion, metodos ymensajes, como en Smalltalk.

I OO se define encapsulacion, abstraccion de datos, metodos,mensajes, herencia y vinculacion dinamica.

I Es un modelo de simula el comportamiento ya sea de unaparte del mundo real o imaginario.

I Objetos, clases y herencia. Los objetos son entidadesautonomas que tienen un estado y responden a mensajes. Lasclases agrupan los objetos por sus atributos y operaciones.

I Todas tienen el comun de usar objetos como unaencapsulacion para proteger los datos con todas lasoperaciones legales que actuan sobre esa informacion oculta.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 9/32

Page 10: Evolucion de la programacion

Comparacion entre lenguajes OO (1/4)

Modula−3

50s

60s

Fortran

Ensamblador

AlgolLisp

Simula70s

Smalltalk

80s

90s

C++

FlavorsLoopsCLOS

ActorPOOL−T

Orient84ABCL

C−ObjetivoEiffel

Beta

Java

C Ada CLU

Pascal

Modula−2

Pascal Objetivo

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 10/32

Page 11: Evolucion de la programacion

Comparacion entre lenguajes OO (2/4)

Lenguaje ensamblador:

I Intrucciones de maquina (operadores) que manipulan encontenido de localidades de memoria (operandos)

Lenguaje de alto nivel:

I Operadores se vuelven declaraciones y los operandos envariables y estructuras de datos.

Los programas estan compuestos de de una coleccion de variablesque representan algun dato y un conjunto de procedimientos quemanipulan esas variables.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 11/32

Page 12: Evolucion de la programacion

Comparacion entre lenguajes OO (3/4)

Caracterısticas Tipos Apoyo Vinculacion BibliotecaX de de dinamica extensaLenguajes datos herenciaSimula Si Si Si NoCLU Si No Si NoAda Si No No SiSmalltalk Si Si Si SiC Objetivo Si Si Si SiC++ Si Si Si SiCLOS Si Si Si NoPascal Obj. Si Si Si NoBeta Si Si Si NoEiffel Si Si Si SiActor Si Si Si NoJava Si Si Si Si

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 12/32

Page 13: Evolucion de la programacion

Clasificacion de los metodologıas OO (1/6)

Varios metodos han sido propuestos para sistematizar el proceso devida del software. Y muchas metodologıas de desarrollo de softwarehan sido propuestas, y estas pueden clasificarse en tres categorıas:

I Descomposicion funcional.

I Enfasis en datos, mas que en funciones.

I Ambos puntos de vista: funcional y datos.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 13/32

Page 14: Evolucion de la programacion

Clasificacion de los metodologıas OO (2/6)

I Descomposicion funcional:Diseno Estructural, Refinamiento por Pasos.

I Enfasis en datos, mas que en funciones:Programacion Estructurada, Modelo Entidad-Relacion

I Ambos puntos de vista: funcional y datos:Analisis Estructural, Analisis de Sistemas Estructurados,Analisis de Sistemas Estructurados y Metodologıa de Diseno.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 14/32

Page 15: Evolucion de la programacion

Clasificacion de los metodologıas OO (3/6)

Desarrollo estructural:Analisis estructural, diseno estructural y programacionestructurada.

Aplicar primero el diseno estructural y luego la proximacionorientada a objetos resulta en problemas dado que no se puedemapear apropiadamente las funciones en objetos.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 15/32

Page 16: Evolucion de la programacion

Clasificacion de los metodologıas OO (4/6)

Metodologıas “orientadas a objetos”:

I Adaptacion: mezclar una aproximacion orientada a objetoscon una metodologıa bien conocida de desarrollo estructural.

I Asimilacion: usar una metodologıa orientada a objetos paradesarrollar sistemas de software, pero que siguen el modelotradicional del ciclo de vida del software.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 16/32

Page 17: Evolucion de la programacion

Clasificacion de los metodologıas OO (5/6)

Realización

AnálisisEstructurado

MRE

Flujo de datos +

Diagramas de

Diseñoestructural

Tablas deestructura

Programaciónestructurada

DatosEstructuras +Funciones

AnálisisOrientado aObjetos

Diagramas declases

DiseñoOrientado aObjetos

Diagramas declases + objetos

ProgramaciónOrientada aObjetos

Tipos de datosabstractos +Herencia

Análisis

Diseño

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 17/32

Page 18: Evolucion de la programacion

Clasificacion de los metodologıas OO (6/6)

La orientacion a objetos tiene la necesidad de una vista organizaday manejable del desarrollo del software en todas las fases delmodelo del ciclo de vida del software.Esta demanda ha sido satisfecha por el Lenguaje de ModeladoUnificado (UML) y por herramientas CASE tales como RationalRose.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 18/32

Page 19: Evolucion de la programacion

Los lenguajes de muy alto nivel

Son lenguajes que trabajan en scripts, son de mas alto nivel conmenos escritura

Inst

rucc

ione

s/de

clar

ació

n

1

10

100

1000

Tcl/Perl C++

Java

Ensamblador

Programación de sistemas

Scripting

Visual Basic

C

Grado de escritura

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

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 19/32

Page 20: Evolucion de la programacion

Perl

I Puede verse como la union de: el shell, awk y sed.

I Tambien permite el uso de objetos.

I Tiene una gran cantidad de “modulos”: www.cpan.org

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 20/32

Page 21: Evolucion de la programacion

¿Cual es el mejor paradigma?

I Procedural

I Orientado a objetos

I Alto nivel

I Deben conocerse y dominarse todos los paradigmas

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 21/32

Page 22: Evolucion de la programacion

Realizaciones

I Los lenguajes de alto nivel pueden usar en programas cortos,de rapido desarrollo, que se ejecutaran unas pocas veces.Tambien en programas para tratamientos de textos.

I Los procedurales en programas pequenos donde queremosmuy alta eficiencia.

I OO debe usarse en grandes proyectos de software donde setiene una clara identificacion de los objetos. Para realizarinterfaces de usuario.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 22/32

Page 23: Evolucion de la programacion

Interfaces graficas con Qt

Evento de teclado

Ventanaprincipal

Widgets

Ventana de

dibujo

Evento de reloj

Evento de ratón

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 23/32

Page 24: Evolucion de la programacion

Realizaciones

I ¿Que tanto es grande?

I XMIPP se cambio a objetos en tres anos.

I El sistema de administracion de conferencias se hizoprocedural.

I ¿Se puede forzar el uso de objetos?

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 24/32

Page 25: Evolucion de la programacion

Aplicacion Comparacion Razon decodigo

Razon deesfuerzo

Aplicacion de basede datos

Ver. C++: 2 meses: 60

Ver. TCL: 1 dıaInstalacion y prue-ba de un sistema decomputo

Aplicacion de prueba en C:272,000 lineas, 120 meses,Aplicacion C FIS: 90,000lineas, 60 meses. VersionTcl/Perl: 7,700 lineas, 8meses

47 22

Biblioteca de basede datos

Version en C++: 2-3 mesesVersion Tcl: 1 semana

8-12

Escaner de seguri-dad:

Version en C: 3,000 lineas,Ver. Tcl: 300 lineas

10

Simulador e interfaz Version en Java: 3,400 li-neas, 3-4 semanas, Versionen Tcl: 1,600 lineas, < 1 se-mana

2 3-4

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 25/32

Page 26: Evolucion de la programacion

Modelos del sistema SMC

Diagrama general de casos de uso

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 26/32

Page 27: Evolucion de la programacion

Diagrama de estados de un artıculo

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 27/32

Page 28: Evolucion de la programacion

Diseno

Diagrama de subsistemas

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 28/32

Page 29: Evolucion de la programacion

Implementacion: Disposicion fısica de losarchivos

Disposicion fısica de los archivos

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 29/32

Page 30: Evolucion de la programacion

Conclusiones

I La programacion OO tuvo un crecimiento muy grande en los 1990s

I Aunque todavıa se debate los beneficios de OO, a treinta anos de suinvencion, OO todavıa seguira usandose

I Para usar OO deben aplicarse las tecnicas de Ingenierıa de Software.

I Deben dominarse los tres paradigmas: alto nivel, OO, procedural.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 30/32

Page 31: Evolucion de la programacion

Esta presentacion puede encontrarse en:http://delta.cs.cinvestav.mx/˜fraga/Charlas/

Referencias:

I L.F. Capretz, A brief history of the Object-Oriented Approach,Software Engineering Notes (ACM SIGSOFT), pp 1-10, vol 28, no2, March 2003

I J.K. Ousterhout, Scripting: Higher level programming for the 21stcentury, IEEE Computer Magazine, pp 23-30, March 1998.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 31/32

Page 32: Evolucion de la programacion

El Departamento de Computacion, Cinvestav

Ofrecemos:

1. Maestrıa en Ciencias en Computacion

2. Doctorado en Ciencias en Computacion

http://www.cs.cinvestav.mx

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 32/32