Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetos
Objetos
7 de diciembre de 2006
Cinvestav
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
Cinvestav
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
Cinvestav
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.
Cinvestav
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.
Cinvestav
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
Cinvestav
6/32
Antecedentes (1/2)
Cinvestav
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
Cinvestav
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
Cinvestav
9/32
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
Cinvestav
10/32
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.
Cinvestav
11/32
Cinvestav
12/32
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.
Cinvestav
13/32
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
Cinvestav
14/32
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.
Cinvestav
15/32
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.
Cinvestav
16/32
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
Realizacin
Cinvestav
17/32
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.
Cinvestav
18/32
100
Cinvestav
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
Cinvestav
20/32
Procedural Orientado a objetos Alto nivel Deben conocerse y dominarse todos los paradigmas
Cinvestav
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.
Cinvestav
22/32
Ventana principal
Cinvestav
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?
Cinvestav
24/32
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
8-12 10 2 3-4
Cinvestav
25/32
Cinvestav
26/32
Cinvestav
27/32
Diseno
Diagrama de subsistemas
Cinvestav
28/32
Cinvestav
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.
Cinvestav
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.
Cinvestav
31/32
Cinvestav
32/32