La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introduccción a la POO (OOP)

Presentaciones similares


Presentación del tema: "Introduccción a la POO (OOP)"— Transcripción de la presentación:

1 Introduccción a 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 color rojo y se mueve” “El documento tiene letra grande 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 Ejemplo: Clase: Robot Métodos:
Datos: x (entero), y (entero) Métodos: void avanzar (entero, entero) entero posicionX () entero posicionY () Métodos: void avanzar (entero) Constructores: Robot (entero, entero) Robot (entero) Instanciación: objeto “robot1” (Robot) robot1 = Robot(1,2)

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 void avanzar (entero, 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 ()

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: Herencia múltiple:
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 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)


Descargar ppt "Introduccción a la POO (OOP)"

Presentaciones similares


Anuncios Google