SlideShare una empresa de Scribd logo
1 de 43
Introduccción
a la POO (OOP)
TEMAS PARA EXPOSIONES
                                        27 y 28 de Noviembre
1) Web Servicies                             Mónica Gonzalez y Violetta


2) SOA – Arquitectura Orientada a Servicios                 Javier Rojas y
                                                            Maximiliano Rodriguez
3) PHP                                    Elba Guerray Christian Poliycroniadys

4) JSP                                    Efrain Vasquez y Christian Becles


5) Javascript                             Laura García y Edar Castro

6) Eclipse (plugins C++, C, PHP,..)
5) Qt / C++ y QtJambi                              Rafael Andara y Aldo Grazzina




 http://es.wikipedia.org/wiki/Portada
TEMAS PARA EXPOSIONES
                26 y 28 de Noviembre

[Presentación 15min]
  Contenido
     ●
       Qué es?
     ●
       Areas de aplicación
     ●
       Ejemplos Básicos
     ●
       Relaciones con otras herramientas
       (versiones, plungins, interfaces)
Introducción
●
    Fases del ciclo de vida del software:
    1) Análisis, 6%
    2) Diseño, 5%
    3) Implementación, 7%
    4) Depuración, 15%
    5) Mantenimiento, 67%
Factores calidad del
software
●
    Eficiencia
●
    Portabilidad
●
    Verificabilidad
●
    Integridad (protección contra procesos sin derecho de acceso)
●
    Facilidad de uso
●
    Robustez (situaciones anómalas)
●
    Extensibilidad
●
    Reutilización
●
    Compatibilidad, ...
Abstracción en programación

●
    Capacidad para encapsular y aislar la información
    del diseño y ejecución.

●
    Mecanismos en programación:
    −   Procedimientos y funciones
    −   Tipos de datos abstractos (TDA)
    −   Objetos: son TDA a los que se añaden mecanismos
        como herencia, métodos, etc.
Programación Orientada a
Objetos (POO)
 ●
     La programación orientada a objetos trata de
     amoldarse al modo de pensar del hombre y no
     al de la máquina.
 ●
      Esto es posible gracias a la forma racional con
     la que se manejan las abstracciones que
     representan las entidades del dominio del
     problema, y a propiedades como la jerarquía o
     el encapsulamiento.
Programación Orientada a
Objetos (POO)

●
    El elemento básico de este paradigma no es la
    función (elemento básico de la programación
    estructurada), sino un ente denominado Objeto.
Programación Orientada a
    Objetos (POO)
●
    Un objeto es la representación de un concepto para
    un programa, y contiene la información necesaria
    para abstraer dicho concepto:
    −   los datos que describen su estado
    −   las operaciones que pueden modificar dicho estado, y
        determinan las capacidades del objeto.
Programación Orientada a
    Objetos (POO)
●
    Un objeto es un trocito de programa
●
    Un programa es un conjunto de objetos
●
     Se programan cosas que pueden ser muy complejas
    y para mantener esa complejidad bajo control hay
    que partir el problema en piezas controlables
          −   Divide y vencerásl
Programación Orientada a
    Objetos (POO)
            ¿Los objetos son objetos?
●
    Los objetos de programación NO son objetos materiales
●
    Inicialmente los objetos se inventaron para estructurar
    programas de simulación flujo viales: un auto, un peatón,
    una calle, un semáforo, ...
●
    Actualmente se usan para estructurar objetos materiales,
    servicios, conceptos, ..., en general cualquier abstracción
    mental.
Programación Orientada a
Objetos (POO)
         Ejemplos de objetos

●
    Una estructura algebraica (ej. un grupo)
●
    Un ámbito de trabajo (ej. colores)
●
    Un objeto material (ej. un satélite)
●
    Un servicio inmaterial (ej. www)
●
    Algo muy “real”: una cuenta corriente
Programación Orientada a Objetos
(POO) Clases de Objetos
●
    Habitualmente un programa emplea muchos objetos de
    la misma clase
    −   muchos coches, muchos satélites, muchas conexiones
        www, muchos transistores, ...
●
    Los programadores definen clases
           class Car { ... detalles ... }
●
    Y luego crean objetos de las clases definidas
          Car miAuto = new Car (...);
Programación Orientada a
    Objetos (POO)
●
    Ventajas de uso:
    −   Reusabilidad (mecanismos de abstracción y herencia)
          ●
            En programación convencional: uso de funciones y
            procedimientos
    −   Adecuación a entornos de bases de datos.
    −   Idónea para tratamiento de Interfaces de Usuario.
    −   Adecuada en prototipos y simulación.
Características de POO, I
●
    El modelo objeto
(Booch, Object-Oriented Analysis and Design with Applications,1994):
    −   Abstracción
        Las características esenciales del objeto
                  Documento: insertar, borrar, ...
    −   Encapsulamiento (ocultamiento de información)
         Una clase contiene:
                 + una interfaz pública
                 + una implementación
                     Documento: posicionPrevia
Características de POO, II


−   Modularidad
     ●
       Subdivisión de una aplicación en otras más pequeñas
       (módulos).
        − Un módulo es un conjunto de clases
                 Editor, Fuente, Documento, …
Características de POO, III
−   Jerarquía
      ●
        Ordenamiento de las abstracciones
      ●
        Tipos:
         − Herencia (“es-un”); generalización/especialización
            ●
              Herencia simple o múltiple
               Mensaje es-un Documento
         − Agregación (“parte-de”)
               Mensaje: Destinatarios,Asunto,Contenido
Características de POO, IV
−   Polimorfismo
     ●
       Una misma operación (método) realizada de diferente
       modo
        − Documento: Añadir texto, imagen, …
        − Mensaje: Añadir destinatario, …
−   Otras propiedades
     ●
       concurrencia (multitarea)
     ●
       Persistencia (guardar)
     ●
       uso de excepciones (errores)
Importancia de las palabras
●
  Nombres:
   − Objetos
   − Propiedades de objetos
●
  Adjetivos:
   − Valores de las propiedades

 Verbos:
   − Comportamiento de los objetos



“El coche tiene color rojo y se mueve”
“El documento tiene letra grande y se muestra”
Lenguajes de POO
●
    Cronología resumida:
    −   Fortran (1958)
    −   LISP (1959)
    −   BASIC (1964)
    −   Pascal (1969)
    −   Prolog (1971)
    −   C++ (1986)
    −   Object Pascal (1988)
    −   CLOS (1989)
    −   Java (1995)
Lenguajes de POO, II
●
    The journal of object-oriented programming (1988)
●
    Primeros lenguajes POO:
    −   Simula-67
         ●
             Objeto (datos+métodos). Clase. Herencia.
    −   Smalltalk-80
         ●
             Verdadero primer lenguaje de POO
         ●
             Concepto de paso de mensajes (activación de métodos)
Otros aspectos de la POO


●
    Beneficios:
    −   Mejor mantenimiento
    −   Estructuras más reales de la información
    −   Escalabilidad
    −   Adaptabilidad
Otros aspectos de la POO, II


●
    Inconvenientes:
    −   Necesidades de estandarización (OMG, Object
        Management Group)

    −   Coste de conversión de software legado (legacy)
Conceptos de POO, I


●
    Conceptos principales:
    −   Clase
    −   Objeto (una instancia de una clase)
    −   Jerarquía de herencia entre clases
Conceptos de POO, II

●
    Objetos:
    −   objeto=datos+métodos
    −   miembros de un objeto (o clase):
         ●
             datos
         ●
             métodos
    −   identificador del objeto
         ●
             nombre de variable
Conceptos de POO, III
●
    Ejemplo:
     − Clase: Robot                    −   Métodos:
     − Datos: x (entero), y (entero)         ●
                                               void avanzar (entero)
     − Métodos:                              ●
                                               Constructores:
        ●
          void avanzar (entero,                  − Robot (entero, entero)
          entero)                                − Robot (entero)
        ●
          entero posicionX ()          −   Instanciación:
        ●
          entero posicionY ()                ●
                                               objeto “robot1” (Robot)
                                             ●
                                               robot1 = Robot(1,2)
Creación y destrucción de
      objetos
●
    Equivalencia de conceptos con programación clásica:
     − Tipo =~Clase
     − Dato = ~Objeto
     − Variable: existe en ambos tipos de programación
●
    Creación (uso de constructor):
     − Ejemplo:

       robot1 = Robot(1,2) robot2 = Robot(3)
●
    Destrucción
     − Automática (Java, Garbage collection)
Encapsulamiento

●
    Miembros privados y públicos
●
    Interfaz pública de una clase:
    −   Miembros públicos (datos y métodos)
    −   Se pueden invocar desde fuera de la clase
Encapsulamiento, II
●
    Ejemplo
     − clase Robot
       ●
         Datos:
          − privado x (entero)
          − privado y (entero)
       ●
         Constructores:
             ●
               público Robot (entero, entero)
             ●
               público Robot (entero)
Encapsulamiento, III

−   clase Robot (continuación)
     ●
         Métodos:
          − público void avanzar (entero, entero)
          − público entero getX ()
          − público entero getY ()
          − público void avanzar (entero)
Representación
clase: Robot
      Datos
                    x
                    y
     Métodos
                  Robot (entero, entero)
                      Robot (entero)
               void avanzar (entero, entero)
                  void avanzar (entero)
                      entero getY ()
                      entero getX ()
Ejecución de métodos
●
    Un método es un algoritmo que se puede ejecutar a partir de un
    objeto.
     − Se dice que un método se ejecuta cuando el objeto recibe un
       mensaje de ejecución del método.
     − Puede acceder a todos los miembros de la clase y a sus
       argumentos, que son otros objetos.
●
    Ejemplo:
     − Objeto robot1 (Robot)
     − robot1=Robot(3,2)
     − robot1.avanzar(1,2)
Herencia
●
    Representa el concepto de “ser un tipo especial de”
      o “ser un/a”
●
    Se establece mediante la definición de subclases,
    que dan lugar a una jerarquía de clases
●
    Ejemplo:
    RobotConFrontera como subclase de Robot
    hereda sus miembros (x, y)
    y métodos (avanzar, getX, getY)
Herencia, II

●
    Ejemplo:
    −   Clase: RobotConFrontera
    −   Clase padre: Robot
    −   Datos:
         ●
           privado limX (entero)
         ●
           privado limY (entero)
Herencia, III
−   Clase: RobotConFrontera
−   Métodos:
     ●
       void avanzar (entero, entero)
     ●
       void avanzar (entero)
     ●
       Constructores:
        − RobotConFrontera (entero, entero,

                              entero, entero)
        − RobotConFrontera (entero, entero, entero)
Herencia, II

●
    La definición en RobotConFrontera de:
         ●
            void avanzar (entero, entero)
          ●
            void avanzar (entero)
    −   es un “overriding” (especialización, redefinición, etc) de
        los métodos ya definidos en la clase Robot
Herencia, III

●
    Herencia simple:
       ●
           Figura, Círculo, Rectángulo, Cuadrado, Triángulo
●
    Herencia múltiple:
       ●
           Persona, Profesor, Investigador, ProfesorUniversitario
       ●
           Problemas de ambigüedad
Herencia, IV

●
    Clase abstracta:
    −   No admite una instancia directa. Ejemplo: clase Figura.
        Sería inválido
            − objeto f (Figura)
            − f=Figura(....)

        aunque sí sería válido
            − objeto f (Figura)
            − f=Cuadrado(3)
Herencia, V

●
    Sobrecarga (overloading) de un método:
    −   En una clase, el mismo nombre de método definido de
        modos distintos
         ●
           Ejemplo: el método “avanzar” está sobrecargado en
           la clase Robot
Herencia, IV
●
    “Overloading” y “Overriding” son casos de polimorfismo:
     − El mismo método definido de modos distintos
●
    Ligadura dinámica:
     − objeto r (Robot)
     − r=RobotConFrontera(2,3,0,0)
     − Al ejecutar r.avanzar(3), ¿qué definición se aplica?
            − la de Robot (ligadura estática)
            − la de RobotConFrontera (ligad. dinámica)
Framework
●
    Conjunto de clases que se coordinan para realizar
    una función
●
    Para construir una aplicación hay que
    subclasificarlas
●
    El “main” usualmente incluido en el Framework
●
    Diagramas de clases
    −   Necesidad de un estándar de representación gráfica
UML
●
    Unified Modeling Language
         ●
           Diagramas (condensación gráfica de estructuras de clases y
           relaciones entre objetos y clases)
UML
●
    Unified Modeling Language
         ●
           Diagramas (condensación gráfica de estructuras de clases y
           relaciones entre objetos y clases)

Más contenido relacionado

La actualidad más candente

Tema 1 2_poo
Tema 1 2_pooTema 1 2_poo
Tema 1 2_poodemon_628
 
Principios orientacion-objetos
Principios orientacion-objetosPrincipios orientacion-objetos
Principios orientacion-objetoskarlalopezbello
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Sergio Sanchez
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc X
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosale8819
 
[ES] Programación orientada a objeto con java
[ES] Programación orientada a objeto con java[ES] Programación orientada a objeto con java
[ES] Programación orientada a objeto con javaEudris Cabrera
 
Jyoc java-cap07 clases y objetos
Jyoc java-cap07 clases y objetosJyoc java-cap07 clases y objetos
Jyoc java-cap07 clases y objetosJyoc X
 
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...Eudris Cabrera
 
Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018Eudris Cabrera
 
Inroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetosInroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetosJose Angel Rodriguez
 
As3.tutorial
As3.tutorialAs3.tutorial
As3.tutorialJUSTIN217
 

La actualidad más candente (20)

Tema 1 2_poo
Tema 1 2_pooTema 1 2_poo
Tema 1 2_poo
 
7-Unidad 2. Elementos de una Clase
7-Unidad 2. Elementos de una Clase7-Unidad 2. Elementos de una Clase
7-Unidad 2. Elementos de una Clase
 
Principios orientacion-objetos
Principios orientacion-objetosPrincipios orientacion-objetos
Principios orientacion-objetos
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
 
9-Unidad 3: Encapsulamiento y modularidad
9-Unidad 3: Encapsulamiento y modularidad9-Unidad 3: Encapsulamiento y modularidad
9-Unidad 3: Encapsulamiento y modularidad
 
Semana 6 Módulos Clases y Objetos
Semana 6   Módulos Clases y ObjetosSemana 6   Módulos Clases y Objetos
Semana 6 Módulos Clases y Objetos
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios poo
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Java
JavaJava
Java
 
[ES] Programación orientada a objeto con java
[ES] Programación orientada a objeto con java[ES] Programación orientada a objeto con java
[ES] Programación orientada a objeto con java
 
Herencia y polimorfismo
Herencia y polimorfismoHerencia y polimorfismo
Herencia y polimorfismo
 
Operadores poo
Operadores pooOperadores poo
Operadores poo
 
Jyoc java-cap07 clases y objetos
Jyoc java-cap07 clases y objetosJyoc java-cap07 clases y objetos
Jyoc java-cap07 clases y objetos
 
4 manejo de_metodos
4 manejo de_metodos4 manejo de_metodos
4 manejo de_metodos
 
Unidad 1_Programacion Orientada a Objetos
Unidad 1_Programacion Orientada a ObjetosUnidad 1_Programacion Orientada a Objetos
Unidad 1_Programacion Orientada a Objetos
 
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
 
Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018
 
03 Oop
03   Oop03   Oop
03 Oop
 
Inroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetosInroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetos
 
As3.tutorial
As3.tutorialAs3.tutorial
As3.tutorial
 

Destacado

Guía e max_cómo desarrollar funciones con javascript para videojuegos online
Guía e max_cómo desarrollar funciones con javascript para videojuegos onlineGuía e max_cómo desarrollar funciones con javascript para videojuegos online
Guía e max_cómo desarrollar funciones con javascript para videojuegos onlineEmagister
 
Introduccion a java script
Introduccion a java scriptIntroduccion a java script
Introduccion a java scriptLuis Aceituno
 
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAXJavascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAXIrontec
 

Destacado (9)

Manual de Java
Manual de JavaManual de Java
Manual de Java
 
Aprender java
Aprender javaAprender java
Aprender java
 
Guía e max_cómo desarrollar funciones con javascript para videojuegos online
Guía e max_cómo desarrollar funciones con javascript para videojuegos onlineGuía e max_cómo desarrollar funciones con javascript para videojuegos online
Guía e max_cómo desarrollar funciones con javascript para videojuegos online
 
Javascript
JavascriptJavascript
Javascript
 
Introduccion a java script
Introduccion a java scriptIntroduccion a java script
Introduccion a java script
 
Html5, css3, java script
Html5, css3, java scriptHtml5, css3, java script
Html5, css3, java script
 
Encapsulamiento
EncapsulamientoEncapsulamiento
Encapsulamiento
 
Presentación JavaScript
Presentación JavaScriptPresentación JavaScript
Presentación JavaScript
 
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAXJavascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
 

Similar a Introducción a la POO

Programación orientada a objetos (I)
Programación orientada a objetos (I)Programación orientada a objetos (I)
Programación orientada a objetos (I)Cristian
 
Cuestionario
CuestionarioCuestionario
CuestionarioJose Nava
 
Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)Maria Garcia
 
Introduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a ObjetosIntroduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a ObjetosAlexys González
 
Programacion Orientada a Obejtos C++
Programacion Orientada a Obejtos C++Programacion Orientada a Obejtos C++
Programacion Orientada a Obejtos C++Christian Castro
 
Introducción a la Programación Orientada a Objetos.pdf
Introducción a la Programación Orientada a Objetos.pdfIntroducción a la Programación Orientada a Objetos.pdf
Introducción a la Programación Orientada a Objetos.pdfEnrique137614
 
13 desarrollo-de-software-fundamentos-poo-1
13 desarrollo-de-software-fundamentos-poo-113 desarrollo-de-software-fundamentos-poo-1
13 desarrollo-de-software-fundamentos-poo-1johnny herrera
 
Desarrollo de Software fundamentos POO 1era Parte subido JHS
Desarrollo de Software fundamentos POO 1era Parte subido JHSDesarrollo de Software fundamentos POO 1era Parte subido JHS
Desarrollo de Software fundamentos POO 1era Parte subido JHSjohnny herrera
 
AdV - Programación para no Programadores
AdV - Programación para no ProgramadoresAdV - Programación para no Programadores
AdV - Programación para no ProgramadoresJavier_J
 
Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'AulaDeVideojuegos
 
Edp 2013-contenidos -programacion-2013
Edp 2013-contenidos -programacion-2013Edp 2013-contenidos -programacion-2013
Edp 2013-contenidos -programacion-2013gargola_mix08
 
C++ Introducción de elementos del lenguaje
C++ Introducción de elementos del lenguajeC++ Introducción de elementos del lenguaje
C++ Introducción de elementos del lenguajePedroGonzalez183426
 

Similar a Introducción a la POO (20)

Introducción a ROS
Introducción a ROSIntroducción a ROS
Introducción a ROS
 
Programación orientada a objetos (I)
Programación orientada a objetos (I)Programación orientada a objetos (I)
Programación orientada a objetos (I)
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)
 
Introduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a ObjetosIntroduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a Objetos
 
Java12
Java12Java12
Java12
 
Programacion Orientada a Obejtos C++
Programacion Orientada a Obejtos C++Programacion Orientada a Obejtos C++
Programacion Orientada a Obejtos C++
 
Transp objetos
Transp objetosTransp objetos
Transp objetos
 
Guía1
Guía1Guía1
Guía1
 
Actividad1.4
Actividad1.4Actividad1.4
Actividad1.4
 
Introducción a la Programación Orientada a Objetos.pdf
Introducción a la Programación Orientada a Objetos.pdfIntroducción a la Programación Orientada a Objetos.pdf
Introducción a la Programación Orientada a Objetos.pdf
 
13 desarrollo-de-software-fundamentos-poo-1
13 desarrollo-de-software-fundamentos-poo-113 desarrollo-de-software-fundamentos-poo-1
13 desarrollo-de-software-fundamentos-poo-1
 
Desarrollo de Software fundamentos POO 1era Parte subido JHS
Desarrollo de Software fundamentos POO 1era Parte subido JHSDesarrollo de Software fundamentos POO 1era Parte subido JHS
Desarrollo de Software fundamentos POO 1era Parte subido JHS
 
AdV - Programación para no Programadores
AdV - Programación para no ProgramadoresAdV - Programación para no Programadores
AdV - Programación para no Programadores
 
Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'
 
Programacion o.o.
Programacion o.o.Programacion o.o.
Programacion o.o.
 
Edp 2013-contenidos -programacion-2013
Edp 2013-contenidos -programacion-2013Edp 2013-contenidos -programacion-2013
Edp 2013-contenidos -programacion-2013
 
3_Orientación a objeto
3_Orientación a objeto3_Orientación a objeto
3_Orientación a objeto
 
C++ Introducción de elementos del lenguaje
C++ Introducción de elementos del lenguajeC++ Introducción de elementos del lenguaje
C++ Introducción de elementos del lenguaje
 

Introducción a la POO

  • 2. TEMAS PARA EXPOSIONES 27 y 28 de Noviembre 1) Web Servicies Mónica Gonzalez y Violetta 2) SOA – Arquitectura Orientada a Servicios Javier Rojas y Maximiliano Rodriguez 3) PHP Elba Guerray Christian Poliycroniadys 4) JSP Efrain Vasquez y Christian Becles 5) Javascript Laura García y Edar Castro 6) Eclipse (plugins C++, C, PHP,..) 5) Qt / C++ y QtJambi Rafael Andara y Aldo Grazzina http://es.wikipedia.org/wiki/Portada
  • 3. TEMAS PARA EXPOSIONES 26 y 28 de Noviembre [Presentación 15min] Contenido ● Qué es? ● Areas de aplicación ● Ejemplos Básicos ● Relaciones con otras herramientas (versiones, plungins, interfaces)
  • 4. Introducción ● Fases del ciclo de vida del software: 1) Análisis, 6% 2) Diseño, 5% 3) Implementación, 7% 4) Depuración, 15% 5) Mantenimiento, 67%
  • 5. Factores calidad del software ● Eficiencia ● Portabilidad ● Verificabilidad ● Integridad (protección contra procesos sin derecho de acceso) ● Facilidad de uso ● Robustez (situaciones anómalas) ● Extensibilidad ● Reutilización ● Compatibilidad, ...
  • 6. Abstracción en programación ● Capacidad para encapsular y aislar la información del diseño y ejecución. ● Mecanismos en programación: − Procedimientos y funciones − Tipos de datos abstractos (TDA) − Objetos: son TDA a los que se añaden mecanismos como herencia, métodos, etc.
  • 7. Programación Orientada a Objetos (POO) ● La programación orientada a objetos trata de amoldarse al modo de pensar del hombre y no al de la máquina. ● Esto es posible gracias a la forma racional con la que se manejan las abstracciones que representan las entidades del dominio del problema, y a propiedades como la jerarquía o el encapsulamiento.
  • 8. Programación Orientada a Objetos (POO) ● El elemento básico de este paradigma no es la función (elemento básico de la programación estructurada), sino un ente denominado Objeto.
  • 9. Programación Orientada a Objetos (POO) ● Un objeto es la representación de un concepto para un programa, y contiene la información necesaria para abstraer dicho concepto: − los datos que describen su estado − las operaciones que pueden modificar dicho estado, y determinan las capacidades del objeto.
  • 10. Programación Orientada a Objetos (POO) ● Un objeto es un trocito de programa ● Un programa es un conjunto de objetos ● Se programan cosas que pueden ser muy complejas y para mantener esa complejidad bajo control hay que partir el problema en piezas controlables − Divide y vencerásl
  • 11. Programación Orientada a Objetos (POO) ¿Los objetos son objetos? ● Los objetos de programación NO son objetos materiales ● Inicialmente los objetos se inventaron para estructurar programas de simulación flujo viales: un auto, un peatón, una calle, un semáforo, ... ● Actualmente se usan para estructurar objetos materiales, servicios, conceptos, ..., en general cualquier abstracción mental.
  • 12. Programación Orientada a Objetos (POO) Ejemplos de objetos ● Una estructura algebraica (ej. un grupo) ● Un ámbito de trabajo (ej. colores) ● Un objeto material (ej. un satélite) ● Un servicio inmaterial (ej. www) ● Algo muy “real”: una cuenta corriente
  • 13. Programación Orientada a Objetos (POO) Clases de Objetos ● Habitualmente un programa emplea muchos objetos de la misma clase − muchos coches, muchos satélites, muchas conexiones www, muchos transistores, ... ● Los programadores definen clases class Car { ... detalles ... } ● Y luego crean objetos de las clases definidas Car miAuto = new Car (...);
  • 14. Programación Orientada a Objetos (POO) ● Ventajas de uso: − Reusabilidad (mecanismos de abstracción y herencia) ● En programación convencional: uso de funciones y procedimientos − Adecuación a entornos de bases de datos. − Idónea para tratamiento de Interfaces de Usuario. − Adecuada en prototipos y simulación.
  • 15. Características de POO, I ● El modelo objeto (Booch, Object-Oriented Analysis and Design with Applications,1994): − Abstracción Las características esenciales del objeto Documento: insertar, borrar, ... − Encapsulamiento (ocultamiento de información) Una clase contiene: + una interfaz pública + una implementación Documento: posicionPrevia
  • 16. Características de POO, II − Modularidad ● Subdivisión de una aplicación en otras más pequeñas (módulos). − Un módulo es un conjunto de clases Editor, Fuente, Documento, …
  • 17. Características de POO, III − Jerarquía ● Ordenamiento de las abstracciones ● Tipos: − Herencia (“es-un”); generalización/especialización ● Herencia simple o múltiple Mensaje es-un Documento − Agregación (“parte-de”) Mensaje: Destinatarios,Asunto,Contenido
  • 18. Características de POO, IV − Polimorfismo ● Una misma operación (método) realizada de diferente modo − Documento: Añadir texto, imagen, … − Mensaje: Añadir destinatario, … − Otras propiedades ● concurrencia (multitarea) ● Persistencia (guardar) ● uso de excepciones (errores)
  • 19. Importancia de las palabras ● Nombres: − Objetos − Propiedades de objetos ● Adjetivos: − Valores de las propiedades Verbos: − Comportamiento de los objetos “El coche tiene color rojo y se mueve” “El documento tiene letra grande y se muestra”
  • 20. Lenguajes de POO ● Cronología resumida: − Fortran (1958) − LISP (1959) − BASIC (1964) − Pascal (1969) − Prolog (1971) − C++ (1986) − Object Pascal (1988) − CLOS (1989) − Java (1995)
  • 21. Lenguajes de POO, II ● The journal of object-oriented programming (1988) ● Primeros lenguajes POO: − Simula-67 ● Objeto (datos+métodos). Clase. Herencia. − Smalltalk-80 ● Verdadero primer lenguaje de POO ● Concepto de paso de mensajes (activación de métodos)
  • 22. Otros aspectos de la POO ● Beneficios: − Mejor mantenimiento − Estructuras más reales de la información − Escalabilidad − Adaptabilidad
  • 23. Otros aspectos de la POO, II ● Inconvenientes: − Necesidades de estandarización (OMG, Object Management Group) − Coste de conversión de software legado (legacy)
  • 24. Conceptos de POO, I ● Conceptos principales: − Clase − Objeto (una instancia de una clase) − Jerarquía de herencia entre clases
  • 25. Conceptos de POO, II ● Objetos: − objeto=datos+métodos − miembros de un objeto (o clase): ● datos ● métodos − identificador del objeto ● nombre de variable
  • 26. Conceptos de POO, III ● Ejemplo: − Clase: Robot − Métodos: − Datos: x (entero), y (entero) ● void avanzar (entero) − Métodos: ● Constructores: ● void avanzar (entero, − Robot (entero, entero) entero) − Robot (entero) ● entero posicionX () − Instanciación: ● entero posicionY () ● objeto “robot1” (Robot) ● robot1 = Robot(1,2)
  • 27. Creación y destrucción de objetos ● Equivalencia de conceptos con programación clásica: − Tipo =~Clase − Dato = ~Objeto − Variable: existe en ambos tipos de programación ● Creación (uso de constructor): − Ejemplo: robot1 = Robot(1,2) robot2 = Robot(3) ● Destrucción − Automática (Java, Garbage collection)
  • 28. Encapsulamiento ● Miembros privados y públicos ● Interfaz pública de una clase: − Miembros públicos (datos y métodos) − Se pueden invocar desde fuera de la clase
  • 29. Encapsulamiento, II ● Ejemplo − clase Robot ● Datos: − privado x (entero) − privado y (entero) ● Constructores: ● público Robot (entero, entero) ● público Robot (entero)
  • 30. Encapsulamiento, III − clase Robot (continuación) ● Métodos: − público void avanzar (entero, entero) − público entero getX () − público entero getY () − público void avanzar (entero)
  • 31. Representación clase: Robot Datos x y Métodos Robot (entero, entero) Robot (entero) void avanzar (entero, entero) void avanzar (entero) entero getY () entero getX ()
  • 32. Ejecución de métodos ● Un método es un algoritmo que se puede ejecutar a partir de un objeto. − Se dice que un método se ejecuta cuando el objeto recibe un mensaje de ejecución del método. − Puede acceder a todos los miembros de la clase y a sus argumentos, que son otros objetos. ● Ejemplo: − Objeto robot1 (Robot) − robot1=Robot(3,2) − robot1.avanzar(1,2)
  • 33. Herencia ● Representa el concepto de “ser un tipo especial de” o “ser un/a” ● Se establece mediante la definición de subclases, que dan lugar a una jerarquía de clases ● Ejemplo: RobotConFrontera como subclase de Robot hereda sus miembros (x, y) y métodos (avanzar, getX, getY)
  • 34. Herencia, II ● Ejemplo: − Clase: RobotConFrontera − Clase padre: Robot − Datos: ● privado limX (entero) ● privado limY (entero)
  • 35. Herencia, III − Clase: RobotConFrontera − Métodos: ● void avanzar (entero, entero) ● void avanzar (entero) ● Constructores: − RobotConFrontera (entero, entero, entero, entero) − RobotConFrontera (entero, entero, entero)
  • 36. Herencia, II ● La definición en RobotConFrontera de: ● void avanzar (entero, entero) ● void avanzar (entero) − es un “overriding” (especialización, redefinición, etc) de los métodos ya definidos en la clase Robot
  • 37. Herencia, III ● Herencia simple: ● Figura, Círculo, Rectángulo, Cuadrado, Triángulo ● Herencia múltiple: ● Persona, Profesor, Investigador, ProfesorUniversitario ● Problemas de ambigüedad
  • 38. Herencia, IV ● Clase abstracta: − No admite una instancia directa. Ejemplo: clase Figura. Sería inválido − objeto f (Figura) − f=Figura(....) aunque sí sería válido − objeto f (Figura) − f=Cuadrado(3)
  • 39. Herencia, V ● Sobrecarga (overloading) de un método: − En una clase, el mismo nombre de método definido de modos distintos ● Ejemplo: el método “avanzar” está sobrecargado en la clase Robot
  • 40. Herencia, IV ● “Overloading” y “Overriding” son casos de polimorfismo: − El mismo método definido de modos distintos ● Ligadura dinámica: − objeto r (Robot) − r=RobotConFrontera(2,3,0,0) − Al ejecutar r.avanzar(3), ¿qué definición se aplica? − la de Robot (ligadura estática) − la de RobotConFrontera (ligad. dinámica)
  • 41. Framework ● Conjunto de clases que se coordinan para realizar una función ● Para construir una aplicación hay que subclasificarlas ● El “main” usualmente incluido en el Framework ● Diagramas de clases − Necesidad de un estándar de representación gráfica
  • 42. UML ● Unified Modeling Language ● Diagramas (condensación gráfica de estructuras de clases y relaciones entre objetos y clases)
  • 43. UML ● Unified Modeling Language ● Diagramas (condensación gráfica de estructuras de clases y relaciones entre objetos y clases)