2 intro poo

603 visualizaciones

Publicado el

hvhjvj

Publicado en: Internet
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
603
En SlideShare
0
De insertados
0
Número de insertados
4
Acciones
Compartido
0
Descargas
2
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

2 intro poo

  1. 1. Introducción a la Programación Orientada a Objetos Tema 1 TACC II 1 TACC II Curso 2008/09
  2. 2. IndiceIndice Ci l d Vid C lid d d lCiclo de Vida y Calidad del Software. Paradigmas de Programación. Programación Orientada a Objetos. Conceptos de Programación Orientada a Objetos. Clases ObjetosClases y Objetos Encapsulamiento. HerenciaHerencia. Polimorfismo. Frameworks y Notaciones. 2 y
  3. 3. Ciclo de Vida del SoftwareCiclo de Vida del Software Conjunto de fases por las que pasa el sistema que se está desarrollando desde que nace la idea inicial hasta que el software es retirado o reemplazado: Análisis. Diseño. Codificación. Pruebas. Mantenimiento. 3Construir Software no es sólo programar.
  4. 4. Ciclo de Vida del Software Distribución del Esfuerzo Distribucióndel esfuerzoduranteel ciclodevida Análisis ≈ 6% 40 25 30 35 40 45 oRelativo( Análisis ≈ 6%. Diseño ≈ 5%. Codificación ≈ 7% 11 7 15 13 14 0 5 10 15 20 ño ón s r r r Esfuerzo Codificación ≈ 7%. Pruebas ≈ 15%. Mantenimiento 67% Análisis y diseñoIm plem entación Pruebas Adaptar M ejorar C orregir Mantenimiento ≈ 67%. 4
  5. 5. Calidad del Software Efi i i Factores de Calidad Eficiencia Portabilidad Facilidad de pruebaFacilidad de prueba Integridad (protección contra procesos sin derecho de acceso)acceso) Facilidad de uso Corrección Fiabilidad (situaciones anómalas) Extensibilidad Reutilización Compatibilidad 5 ...
  6. 6. IndiceIndice Ci l d Vid C lid d d l S ftCiclo de Vida y Calidad del Software. Paradigmas de Programación.Paradigmas de Programación. Programación Orientada a Objetos. Conceptos de Programación Orientada aConceptos de Programación Orientada a Objetos. Clases y ObjetosClases y Objetos Encapsulamiento. HerenciaHerencia. Polimorfismo. Frameworks y Notaciones 6 Frameworks y Notaciones.
  7. 7. Paradigmas de Programacióng g Abstracción Capacidad para encapsular y aislar la información del diseño y ejecución.y j Mecanismos en programación: P di i t f iProcedimientos y funciones Tipos abstractos de datos (TAD) Clases: son TAD a los que se añaden mecanismos como herencia, métodos, etc. 7
  8. 8. Paradigmas de ProgramaciónParadigmas de Programación EstructuradaEstructurada. Fortran. Basic. Pascal Desde principios de los 70.Pascal. C. … Funcional esde p c p os de os 0 Dificultad para el trabajo en grupo. No hay correspondencia estrecha entre d t lFuncional. Lisp. … Lógica datos reales y programas. Lógica. Prolog. … POOPOO. Smalltalk. C++. Java 8 Java. …
  9. 9. IndiceIndice Ci l d Vid C lid d d l S ftCiclo de Vida y Calidad del Software. Paradigmas de Programación. Programación Orientada a Objetos. Conceptos de Programación Orientada aConceptos de Programación Orientada a Objetos. Clases y ObjetosClases y Objetos Encapsulamiento. Herencia.e e c a Polimorfismo. Frameworks y Notaciones. 9 y
  10. 10. Programación Orientada a ObjetosProgramación Orientada a Objetos Ventajas de uso: Reusabilidad (mecanismos de abstracción y( y herencia) En programación convencional: uso deEn programación convencional: uso de funciones y procedimientos Adecuación a entornos de bases de datosAdecuación a entornos de bases de datos. Idónea para tratamiento de Interfaces de Usuario. Ad d t ti i l ióAdecuada en prototipos y simulación. 10
  11. 11. Programación Orientada a Objetosg j Características Generales Construcción de sistemas complejos a partir de componentes.p p M d l d á fi l d l d lModelado más fiel del mundo real. Estimación de reducción de 40% con respecto a la programación con encionalrespecto a la programación convencional. 11
  12. 12. Programación Orientada a Objetosg j Características El modelo objeto (Booch, 1994): AbstracciónAbstracción Las características esenciales del objeto: • Documento: insertar borrar• Documento: insertar, borrar, ... • Una grapadora: rellenar, grapar, ... E l i t ( lt ió d i f ió )Encapsulamiento (ocultación de información) • Una clase contiene: una interfaz pública. una implementación. 12
  13. 13. Ejemplo I Ejemplo Persona - nombre - edad Persona nformaci +mostrar() +setNombre(string) Interfaz - id - setID() +mostrar() tN b ( t i ) ónprivad +getNombre(): string +setEdad(int) +getEdad(): int zpública +setNombre(string) +getNombre(): string +setEdad(int) +getEdad(): int da getEdad(): int Clases, Tipos especificación p1 Personap2 Persona Objetos, “instancias” especificación ejecución p1 : Persona - nombre=“Pedro” - edad=23 id=“3456789K” p2 : Persona - nombre=“María” - edad=25 id=“55567876G” 13 - id= 3456789K- id= 55567876G
  14. 14. Programación Orientada a Objetos Modularidad: g j Características Modularidad: Subdivisión de una aplicación en otras más pequeñas (módulos). Un módulo es un conjunto de clases. Jerarquía Ordenación de las abstracciones Tipos: Herencia (“es-un”); generalización/especialización • Herencia simple o múltiple Agregación (“parte-de”)g g ( p ) Polimorfismo Una misma operación (método) realizada de diferente modo ( l ó ) l ífcomer (vaca, persona, león); clase mamífero dibujar (triángulo, cuadrado); clase figura Otras propiedades 14 Otras propiedades concurrencia (multitarea), persistencia, uso de excepciones
  15. 15. EjemploEjemplo nombre Persona + mostrar() - nombre - edad () - sueldo_bruto - nombre_empresa telefono de contacto Empleado Cliente subordinados +mostrar() + mostrar () + calcular_salario_neto() - telefono_de_contacto empleados clientes - categoria Directivo Empresa 15+ mostrar () categoria - nombre
  16. 16. Ejemplo e1 : Empleadoe2 : Empleado Ejemplo e1 : Empleado - nombre=“Pedro” - edad=23 - sueldo bruto=30000 e2 : Empleado - nombre=“María” - edad=25 - sueldo bruto=36000 sueldo_bruto 30000sueldo_bruto 36000 subordinados empleados empleados d1 : Directivo - nombre=“Luis” Empresa - nombre=“HGJ” empleados - edad=35 - sueldo_bruto=36000 - categoria=“C1” 1 Cli t clientes c1 : Cliente - nombre=“Luis” - edad=35 nombre empresa=“Macroware” 16 - nombre_empresa= Macroware - telefono_de_contacto=91555666
  17. 17. Programación Orientada a Objetosg j Modelado del mundo real Nombres: Objetos Propiedades de objetos Adjetivos: Valores de las propiedades Verbos: Comportamiento de los objetos “El coche tiene color rojo y se mueve” “El d t ti l t d t ” 17 “El documento tiene letra grande y se muestra”
  18. 18. Lenguajes de POOLenguajes de POO C l íCronología: Fortran (1958), LISP (1959), BASIC (1964), Pascal (1969), Prolog (1971), C (1973), Smalltalk-80 (1980), C++ (1986),g ( ), ( ), ( ), ( ), Object Pascal (1988), CLOS (1989), Java (1995). The jounal of object-oriented programming (1988). Journal of Object Technology (2002-) etcObject Technology (2002 ), etc. Muchas conferencias científicas sobre el tema: OOPSLA, ECOOP, etc. Primeros lenguajes POO: Simula-67 Objeto (datos+métodos) Clase HerenciaObjeto (datos+métodos). Clase. Herencia. Smalltalk-80 Verdadero primer lenguaje de POO C t d d j ( ti ió d ét d ) 18 Concepto de paso de mensajes (activación de métodos)
  19. 19. Lenguajes de POO O i t ió g j Clasificaciones Orientación: puros (Smalltalk) híbridos (C++) Tipificación:Tipificación: estática (en tiempo de compilación), Object Pascal dinámica (en tiempo de ejecución), Python Ligadura:Ligadura: estática (C++) dinámica (Java C++) 19 dinámica (Java, C++)
  20. 20. Lenguajes de POOg j Paradigmas Clase-Elemento Ninguna clase es objetog j C++ Toda clase es un objetoToda clase es un objeto Smalltalk, Java Prototipo-Elemento Todo objeto puede ser prototipo de otrosTodo objeto puede ser prototipo de otros Amulet 20
  21. 21. Otras Ventajas de POOOtras Ventajas de POO Mejor mantenimiento. Estructuras más reales de la informaciónEstructuras más reales de la información. Escalabilidad. Adaptabilidad. Más apropriada para aplicacionesMás apropriada para aplicaciones dirigidas por eventos. 21
  22. 22. Inconvenientes de POOInconvenientes de POO Necesidades de estandarización: Notación de Modelado (OMG, Object( , j Management Group). Lenguajes de Programación.Lenguajes de Programación. Coste de conversión de software legado 22
  23. 23. IndiceIndice Ci l d Vid C lid d d l S ftCiclo de Vida y Calidad del Software. Paradigmas de Programación. Programación Orientada a ObjetosProgramación Orientada a Objetos. Conceptos de Programación Orientada Obj ta Objetos. Clases y Objetos Encapsulamiento. Herencia. Polimorfismo. Frameworks y Notaciones 23 Frameworks y Notaciones.
  24. 24. Conceptos de POOConceptos de POO Conceptos principales: Clase. Similar al concepto de estructura en Pascal. Además de datos (atributos), se añaden funciones( ), (métodos) que operan sobre esos datos. Estructuración (herencia). Objeto (una instancia de una clase) Jerarquía de herencia entre clases.Jerarquía de herencia entre clases. Herencia de atributos y métodos. 24
  25. 25. Conceptos de POOConceptos de POO Objetos: objeto=datos+métodosj miembros de un objeto (o clase): datos (atributos)datos (atributos) métodos identificador del objetoidentificador del objeto nombre de variable 25
  26. 26. Conceptos de POO Clase: Robot p Ejemplo Clase: Robot Datos: x (entero), y (entero) Métodos:Métodos: • void avanzar (entero, entero) • entero posicionX () entero posicionY ()• entero posicionY () • void avanzar (entero) • Constructores: R b t ( t t )Robot (entero, entero) Robot (entero) Instanciación: • objeto “robot1” (Robot) • robot1 = Robot(1,2) Datos de clase: 26 Datos de clase: • numeroRobots (entero)
  27. 27. Creación y Destrucción de ObjetosCreación y Destrucción de Objetos Equivalencia de conceptos con programaciónEquivalencia de conceptos con programación clásica: Tipo ClaseTipo Clase Dato Objeto Variable: existe en ambos tipos de programaciónp p g Creación (uso de constructor): Ejemplo:Ejemplo: robot1 = Robot(1,2) robot2 = Robot(3) DestrucciónDestrucción Automática (Java, Garbage collection) Explícita (montón) o automática (pila) (C++). 27 p ( ) (p ) ( ) Destructores.
  28. 28. EncapsulamientoEncapsulamiento 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 Ejemplo (clase Robot)Ejemplo (clase Robot) Datos: • privado x (entero) • privado y (entero) Métodos: • público void avanzar (entero entero)público void avanzar (entero, entero) • público entero posicionX () • público entero posicionY () • público void avanzar (entero) Constructores: • público Robot (entero entero) 28 público Robot (entero, entero) • público Robot (entero)
  29. 29. Encapsulamiento clase: Robot p Representación clase: Robot Datos x Mét d x y Métodos Robot (entero, entero) void avanzar (entero, entero) Robot (entero) void avanzar (entero) entero posicionY () 29 entero posicionX ()
  30. 30. Ejecución de MétodosEjecución de Métodos U ét d d fi i ió dUn método es una definición de una función. Se dice que un método se ejecuta cuando el objeto recibe un mensaje de ejecución del ét dmétodo. Puede acceder a otros miembros de la clase. Ejemplo: Objeto robot1 (Robot)j ( ) robot1=Robot(3,2) robot1.avanzar(1,2) 30 ( , )
  31. 31. HerenciaHerencia Representa el concepto de “ser un tipo especial de” o “ser un/a”.p Se establece mediante la definición de subclases que dan lugar a una jerarquíasubclases, que dan lugar a una jerarquía de clases. Las subclases hijas heredan los datos y métodos de las clases padre.métodos de las clases padre. 31
  32. 32. Herencia Clase: RobotConFrontera Ejemplo Clase: RobotConFrontera Clase padre: Robot Datos: privado limX (entero) privado limY (entero) Métodos:Métodos: void avanzar (entero, entero) void avanzar (entero) C t tConstructores: • RobotConFrontera (entero, entero, entero, entero) • RobotConFrontera (entero, entero, entero) Instanciación: objeto “robot4” (RobotConFrontera) 32 j ( ) robot4 = RobotConFrontera(1,2,0,0)
  33. 33. HerenciaHerencia La definición en RobotConFrontera de: void avanzar (entero, entero)( , ) void avanzar (entero) es un “overriding” (especialización redefiniciónes un overriding (especialización, redefinición, etc) de los métodos ya definidos en la clase RobotRobot 33
  34. 34. Herencia Tipos Herencia simple: Figura, Círculo, Rectángulo, Cuadrado, Triángulo Herencia múltiple: Persona Profesor Investigador ProfesorUniversitarioPersona, Profesor, Investigador, ProfesorUniversitario Problemas de ambigüedad 34
  35. 35. EjemploEjemplo Figura dib j ()+dibujar() +rotar(grad) Circulo radio: real Rectangulo -alto: real Triangulo -tam1: real-radio: real -alto: real -ancho: real +Circulo(r) +dibujar() +rotar(grad) +Rectangulo(alto, ancho) +dibujar() t ( d) tam1: real -tam2: real -tam3: real +Triangulo(t1, t2, t3) dib j () (g ) +rotar(grad) +dibujar() +rotar(grad) Cuadrado +Cuadrado(lado) 35 ( )
  36. 36. EjemploEjemplo - nombre Persona - edad tit l i Profesor Investigador - titulacion - titulacion - centro ProfesorUniversitario - categoria ProfesorUniversitario 36
  37. 37. Herencia Clases Abstractas Clase abstracta: No admite una instancia directa. Ejemplo: clasej p Figura. Sería inválido • objeto f (Figura)objeto f (Figura) • f=Figura(....) í í álidaunque sí sería válido • objeto f (Figura) • f=Cuadrado(3) 37
  38. 38. PolimorfismoPolimorfismo 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áEjemplo: el método avanzar está sobrecargado en la clase Robot 38
  39. 39. Polimorfismo En la programación convencional también existe Polimorfismo En la programación convencional, también existe “overloading”: Ejemplo: Pascalj p println(“aldfkja”) println(34) “O l di ” “O idi ” d li fi“Overloading” y “Overriding” son casos de polimorfismo: El mismo método definido de modos distintos Ligadura dinámica: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) 39 • la de RobotConFrontera (ligad. dinámica)
  40. 40. FrameworksFrameworks Conjunto de clases que se coordinan para realizar una función Para construir una aplicación hay que subclasificarlas. Ejemplo: MFC (C++).MFC (C ). AWT, Swing (Java). El “main” usualmente incluido en el FrameworkEl main usualmente incluido en el Framework Diagramas de clases N id d d tá d d t ió áfi 40 Necesidad de un estándar de representación gráfica
  41. 41. UMLUML Diagramas de Estructurag Diagramas de clase (condensación gráfica de estructuras de clases y relaciones entre objetos y clases) Diagramas de Comportamiento.g p 41

×