Está en la página 1de 32

Evolucion de la Programacion

Orientada a Objetos

Dr. Luis Gerardo de la Fraga

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

7 de diciembre de 2006

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

Se presentara en esta charla:


I Una revision historica del
paradigma OO
I Situar OO contra otros
paradigmas, en especial los
lenguajes de muy alto nivel
I Una crtica personal a la
programacion OO

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

I Introduccion
I Antecedentes de la programacion OO
I Caractersticas del modelo OO
I Comparacion entre lenguajes OO
I Clasificacion de los metodologas 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
Introduccion (1/3)

I La programacion OO empezo hace 30 anos


I En los 1990s se incremento dramaticamente la demanda para
sistemas de software OO, por la promesa en la revolucion en
el desarrollo de software.
I Han aparerecido varias metodologas para el desarrollo de
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 Evolucion de la Programacion Orientada a Objetos 4/32
Introduccion (2/3)

Algunas caractersticas importantes de los sistemas de software


actuales son:
I Complejidad: la arquitectura interna de los sistemas actuales
de software es compleja, incluyen frecuentemente concurrencia
y paralelismo. La abstraccion en terminos de conceptos de OO
es una tecnica que ayuda a tratar con la complejidad.
I Amigabilidad: Este es un requerimiento de suma importancia
para los sistemas de software en general.
I 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 rapido
desarrollo del software.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 5/32
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 de
un sistema de software

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 6/32
Antecedentes (1/2)

Simulacin Sistemas Abstraccin Inteligencia


de sistemas operativos de datos artificial
Tipos de
Monitores datos
Clases + abstractos + Marcos
objetos encapsulacin

Paradigma
Orientado a Objetos

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

La caracterstica comun de estas ideas es que un objeto es una


entidad logica o fsica que esta autocontenida.

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

I OO se define por herencia, encapsulacion, metodos y


mensajes, 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 una
parte del mundo real o imaginario.
I Objetos, clases y herencia. Los objetos son entidades
autonomas que tienen un estado y responden a mensajes. Las
clases agrupan los objetos por sus atributos y operaciones.
I Todas tienen el comun de usar objetos como una
encapsulacion para proteger los datos con todas las
operaciones legales que actuan sobre esa informacion oculta.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 9/32
Comparacion entre lenguajes OO (1/4)

Ensamblador
50s
Fortran

60s Lisp Algol

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

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 10/32
Comparacion entre lenguajes OO (2/4)

Lenguaje ensamblador:
I Intrucciones de maquina (operadores) que manipulan en
contenido de localidades de memoria (operandos)
Lenguaje de alto nivel:
I Operadores se vuelven declaraciones y los operandos en
variables y estructuras de datos.
Los programas estan compuestos de de una coleccion de variables
que representan algun dato y un conjunto de procedimientos que
manipulan esas variables.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 11/32
Comparacion entre lenguajes OO (3/4)

Caractersticas Tipos Apoyo Vinculacion Biblioteca


X de de dinamica 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 Evolucion de la Programacion Orientada a Objetos 12/32
Clasificacion de los metodologas OO (1/6)

Varios metodos han sido propuestos para sistematizar el proceso de


vida del software. Y muchas metodologas de desarrollo de software
han sido propuestas, y estas pueden clasificarse en tres categoras:
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
Clasificacion de los metodologas 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 Metodologa de Diseno.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 14/32
Clasificacion de los metodologas OO (3/6)

Desarrollo estructural:
Analisis estructural, diseno estructural y programacion
estructurada.

Aplicar primero el diseno estructural y luego la proximacion


orientada a objetos resulta en problemas dado que no se puede
mapear apropiadamente las funciones en objetos.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 15/32
Clasificacion de los metodologas OO (4/6)

Metodologas orientadas a objetos:


I Adaptacion: mezclar una aproximacion orientada a objetos
con una metodologa bien conocida de desarrollo estructural.
I Asimilacion: usar una metodologa orientada a objetos para
desarrollar sistemas de software, pero que siguen el modelo
tradicional del ciclo de vida del software.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 16/32
Clasificacion de los metodologas OO (5/6)

Anlisis Anlisis
Estructurado Orientado a
Anlisis
Objetos
Diagramas de
Flujo de datos + Diagramas de
MRE clases

Diseo
Diseo
Orientado a
estructural Diseo
Objetos
Tablas de
estructura Diagramas de
clases + objetos

Programacin Programacin
estructurada Realizacin Orientada a
Objetos
Datos
Estructuras + Tipos de datos
Funciones abstractos +
Herencia

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 17/32
Clasificacion de los metodologas OO (6/6)

La orientacion 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 tales como Rational
Rose.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 18/32
Los lenguajes de muy alto nivel

Son lenguajes que trabajan en scripts, son de mas alto nivel con
menos escritura
1000 Scripting
Instrucciones/declaracin Visual Basic

100 Java
Tcl/Perl
C++
C
10
Ensamblador
Programacin de sistemas
1
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
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
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
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 queremos
muy alta eficiencia.
I OO debe usarse en grandes proyectos de software donde se
tiene una clara identificacion de los objetos. Para realizar
interfaces de usuario.

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 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 Evolucion de la Programacion Orientada a Objetos 23/32
Realizaciones

I Que tanto es grande?


I XMIPP se cambio a objetos en tres anos.
I El sistema de administracion de conferencias se hizo
procedural.
I Se puede forzar el uso de objetos?

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 24/32
Aplicacion Comparacion Razon de Razon de
codigo esfuerzo
Aplicacion de base Ver. C++: 2 meses: 60
de datos
Ver. TCL: 1 da
Instalacion y prue- Aplicacion de prueba en C: 47 22
ba de un sistema de 272,000 lineas, 120 meses,
computo Aplicacion C FIS: 90,000
lineas, 60 meses. Version
Tcl/Perl: 7,700 lineas, 8
meses
Biblioteca de base Version en C++: 2-3 meses 8-12
de datos Version Tcl: 1 semana
Escaner de seguri- Version en C: 3,000 lineas, 10
dad: Ver. Tcl: 300 lineas
Simulador e interfaz Version en Java: 3,400 li- 2 3-4
neas, 3-4 semanas, Version
en Tcl: 1,600 lineas, < 1 se-
mana

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 25/32
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
Diagrama de estados de un artculo

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

Diagrama de subsistemas

Dr. Luis Gerardo de la Fraga Cinvestav Evolucion de la Programacion Orientada a Objetos 28/32
Implementacion: Disposicion fsica de los
archivos

Disposicion fsica de los archivos

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

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


I Aunque todava se debate los beneficios de OO, a treinta anos de su
invencion, OO todava seguira usandose
I Para usar OO deben aplicarse las tecnicas de Ingeniera 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
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, no
2, March 2003
I 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 Evolucion de la Programacion Orientada a Objetos 31/32
El Departamento de Computacion, Cinvestav

Ofrecemos:
1. Maestra 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

También podría gustarte