SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
´                  ´
                      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
´
   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
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
´
   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
´
   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
´
   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
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
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
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
´
   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
´
   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
´
   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
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
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
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
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
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
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
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
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
´
   ¿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
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
´
   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
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
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
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
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
˜
   Diseno




                                           Diagrama de subsistemas



Dr. Luis Gerardo de la Fraga   Cinvestav   Evoluci´n de la Programaci´n Orientada a Objetos
                                                  o                  o                        28/32
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
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
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
´
   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

Más contenido relacionado

Similar a Evolucion de la programacion

Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
41b3r
 
Metodología de desarrollo de software
Metodología de desarrollo de softwareMetodología de desarrollo de software
Metodología de desarrollo de software
Abner Garcia
 
Metodología de desarrollo de software
Metodología de desarrollo de softwareMetodología de desarrollo de software
Metodología de desarrollo de software
Abner Garcia
 
Productos y resultados [autoguardado]
Productos y resultados [autoguardado]Productos y resultados [autoguardado]
Productos y resultados [autoguardado]
paulabarrientosd
 
Presentacion GuíA No.3
Presentacion GuíA No.3Presentacion GuíA No.3
Presentacion GuíA No.3
anderwrt
 

Similar a Evolucion de la programacion (20)

Unidad ii adsi -web -pag
Unidad ii   adsi -web -pagUnidad ii   adsi -web -pag
Unidad ii adsi -web -pag
 
Unidad vi adsi - p1- web
Unidad vi   adsi - p1- webUnidad vi   adsi - p1- web
Unidad vi adsi - p1- web
 
Unidad vi adsi - p2 - web
Unidad vi   adsi - p2 - webUnidad vi   adsi - p2 - web
Unidad vi adsi - p2 - web
 
METODOLOGÍA DE DESARROLLO DE SOFTWARE
METODOLOGÍA DE DESARROLLO DE SOFTWAREMETODOLOGÍA DE DESARROLLO DE SOFTWARE
METODOLOGÍA DE DESARROLLO DE SOFTWARE
 
Jesus acosta ing.pdf
Jesus acosta ing.pdfJesus acosta ing.pdf
Jesus acosta ing.pdf
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Comunicacion y colaboracion
Comunicacion y colaboracionComunicacion y colaboracion
Comunicacion y colaboracion
 
Comunicacion y colaboracion
Comunicacion y colaboracionComunicacion y colaboracion
Comunicacion y colaboracion
 
Etica.
Etica.Etica.
Etica.
 
Presentación
Presentación Presentación
Presentación
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Metodología de desarrollo de software
Metodología de desarrollo de softwareMetodología de desarrollo de software
Metodología de desarrollo de software
 
Metodología de desarrollo de software
Metodología de desarrollo de softwareMetodología de desarrollo de software
Metodología de desarrollo de software
 
Proyecto socio-tecnológico
Proyecto socio-tecnológicoProyecto socio-tecnológico
Proyecto socio-tecnológico
 
Comunicación y colaboración
Comunicación y colaboraciónComunicación y colaboración
Comunicación y colaboración
 
fundamentos teoricos ingenieria de softwaare
fundamentos teoricos ingenieria de softwaarefundamentos teoricos ingenieria de softwaare
fundamentos teoricos ingenieria de softwaare
 
Estado del arte de la ingsw
Estado del arte de la ingswEstado del arte de la ingsw
Estado del arte de la ingsw
 
Productos y resultados [autoguardado]
Productos y resultados [autoguardado]Productos y resultados [autoguardado]
Productos y resultados [autoguardado]
 
Informe
InformeInforme
Informe
 
Presentacion GuíA No.3
Presentacion GuíA No.3Presentacion GuíA No.3
Presentacion GuíA No.3
 

Último

Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 

Último (20)

Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por Valores
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptx
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 

Evolucion de la programacion

  • 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