SlideShare una empresa de Scribd logo
´                  ´
                      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

PDF
Sistemas
PDF
Introduccion par un Curso de Diseño de Aplicaciones Seguras
PDF
Curso Aop01
PPTX
Antecedentes de la simulación y Crystal Ball. Por María Monsalve
DOCX
“SIMULACION DE UN PUNTO DE INTERSECCIÓN DEL OVALO “CACERES”
PPT
Modelos de Simulacion
PDF
Introduction to SlideShare for Businesses
PDF
How to Make Awesome SlideShares: Tips & Tricks
Sistemas
Introduccion par un Curso de Diseño de Aplicaciones Seguras
Curso Aop01
Antecedentes de la simulación y Crystal Ball. Por María Monsalve
“SIMULACION DE UN PUNTO DE INTERSECCIÓN DEL OVALO “CACERES”
Modelos de Simulacion
Introduction to SlideShare for Businesses
How to Make Awesome SlideShares: Tips & Tricks

Similar a Evolucion de la programacion (20)

PPSX
Unidad ii adsi -web -pag
PPT
Unidad vi adsi - p1- web
PPT
Unidad vi adsi - p2 - web
PDF
METODOLOGÍA DE DESARROLLO DE SOFTWARE
PDF
Jesus acosta ing.pdf
PDF
Ingeniería de software
DOCX
Comunicacion y colaboracion
DOCX
Comunicacion y colaboracion
PPTX
TRABAJO_GRUPAL_1_INGENIERIA_DEL_SOFTWARE.pptx
PPTX
PPTX
Presentación
PDF
Metodología de desarrollo de software
PDF
Metodología de desarrollo de software
PPT
Proyecto socio-tecnológico
DOCX
Comunicación y colaboración
PPTX
fundamentos teoricos ingenieria de softwaare
 
DOCX
Estado del arte de la ingsw
PPTX
Productos y resultados [autoguardado]
DOCX
Informe
Unidad ii adsi -web -pag
Unidad vi adsi - p1- web
Unidad vi adsi - p2 - web
METODOLOGÍA DE DESARROLLO DE SOFTWARE
Jesus acosta ing.pdf
Ingeniería de software
Comunicacion y colaboracion
Comunicacion y colaboracion
TRABAJO_GRUPAL_1_INGENIERIA_DEL_SOFTWARE.pptx
Presentación
Metodología de desarrollo de software
Metodología de desarrollo de software
Proyecto socio-tecnológico
Comunicación y colaboración
fundamentos teoricos ingenieria de softwaare
 
Estado del arte de la ingsw
Productos y resultados [autoguardado]
Informe
Publicidad

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