1 / 42

Introduccción a la POO (OOP)

Introduccción a la POO (OOP). 1) Web Servicies 2) SOA – Arquitectura Orientada a Servicios 3) PHP 4) JSP 5) Javascript 6) Eclipse (plugins C++, C, PHP,..) 7) Qt / C++ y QtJambi 8) NETBEANS. Introducción. Fases del ciclo de vida del software: 1) Análisis, 6% 2) Diseño, 5%

cato
Download Presentation

Introduccción a la POO (OOP)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introducccióna la POO (OOP)

  2. 1) Web Servicies 2) SOA – Arquitectura Orientada a Servicios 3) PHP 4) JSP 5) Javascript 6) Eclipse (plugins C++, C, PHP,..) 7) Qt / C++ y QtJambi 8) NETBEANS

  3. 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%

  4. 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, ...

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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

  10. 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.

  11. 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

  12. 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 (...); Car autoDeElisa = new Car (...);

  13. 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.

  14. 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

  15. 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, …

  16. 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

  17. 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)

  18. Importancia de las palabras • Nombres: • Objetos • Propiedades de objetos • Adjetivos: • Valores de las propiedades Verbos: • Comportamiento de los objetos “El coche tiene colorrojo y se mueve” “El documento tiene letragrande y se muestra”

  19. 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)

  20. 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)

  21. Otros aspectos de la POO • Beneficios: • Mejor mantenimiento • Estructuras más reales de la información • Escalabilidad • Adaptabilidad

  22. Otros aspectos de la POO, II • Inconvenientes: • Necesidades de estandarización (OMG, Object Management Group) • Coste de conversión de software legado (legacy)

  23. Conceptos de POO, I • Conceptos principales: • Clase • Objeto (una instancia de una clase) • Jerarquía de herencia entre clases

  24. Conceptos de POO, II • Objetos: • objeto=datos+métodos • miembros de un objeto (o clase): • datos • métodos • identificador del objeto • nombre de variable

  25. Conceptos de POO, III Métodos: void avanzar (entero) Constructores: Robot (entero, entero) Robot (entero) Instanciación: objeto “robot1” (Robot) robot1 = Robot(1,2) • Ejemplo: • Clase: Robot • Datos: x (entero), y (entero) • Métodos: • void avanzar (entero, entero) • entero posicionX () • entero posicionY ()

  26. 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) ~

  27. 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

  28. Encapsulamiento, II • Ejemplo • clase Robot • Datos: • privado x (entero) • privado y (entero) • Constructores: • público Robot (entero, entero) • público Robot (entero)

  29. 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)

  30. 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 ()

  31. 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)

  32. 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)

  33. Herencia, II • Ejemplo: • Clase: RobotConFrontera • Clase padre: Robot • Datos: • privado limX (entero) • privado limY (entero)

  34. Herencia, III • Clase: RobotConFrontera • Métodos: • void avanzar (entero, entero) • void avanzar (entero) • Constructores: • RobotConFrontera (entero, entero, entero, entero) • RobotConFrontera (entero, entero, entero)

  35. 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

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

  37. 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)

  38. 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

  39. 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)

  40. 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

  41. UML • Unified Modeling Language • Diagramas (condensación gráfica de estructuras de clases y relaciones entre objetos y clases)

  42. UML • Unified Modeling Language • Diagramas (condensación gráfica de estructuras de clases y relaciones entre objetos y clases)

More Related