La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros.

Presentaciones similares


Presentación del tema: "Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros."— Transcripción de la presentación:

1 Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros en Informática Universidad de Málaga

2 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 2 Programa 1. Introducción a la Ingeniería del Software –Sistemas Software complejos. –Ciclo de vida del software. –Evolución de la Ingeniería del Software. Análisis clásico. Análisis estructurado. Introducción al AOO. 2. Introducción a la Tecnología de Objetos

3 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 3 Definición y características del SW Software: (1) instrucciones de ordenador que cuando se ejecutan cumplen una función y tienen un comportamiento deseados, (2) estructuras de datos que facilitan a los programadores la adecuada manipulación de la información, y (3) documentos que describen la operación y el uso de los programas. Características del software: El software se desarrolla, no se fabrica en sentido estricto. El software no se estropea. La mayoría del software se construye a medida.

4 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 4 Influencia de los costes de ingeniería

5 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 5 Curvas de fallos HW SW

6 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 6 Aplicaciones del software Software de sistemas. Software de tiempo real. Software de gestión. Software científico y de ingeniería. Software de ordenadores personales. Software empotrado. Software de inteligencia artificial.

7 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 7 La Ingeniería del Software Problemas del software. – La planificación y la estimación de costes son muy imprecisas. – La productividad es baja. – La calidad es mala. – El cliente queda insatisfecho. Ingeniería del software: Establecimiento y uso de principios de ingeniería robustos, orientados a garantizar la obtención de software económico, fiable y eficiente sobre máquinas reales. Métodos Herramientas Procedimientos

8 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 8 Ciclos de vida: clásico (en cascada)

9 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 9 Ciclos de vida: contractual

10 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 10 Ciclos de vida: tecn. de 4ª generación

11 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 11 Ciclos de vida: construcción de prototipos Recolección y refinamiento de requisitos Diseño rápido Construcción de prototipos Evaluación Desarrollo del producto final

12 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 12 Ciclos de vida: en espiral

13 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 13 Visión genérica de la Ingeniería del Software. Definición. ¿Qué? –Análisis del sistema. Establecer el ámbito del software. –Análisis de requisitos del sistema software. Definición detallada de la función del software. –Planificación. Análisis de riesgos. Asignación de recursos. Definición de tareas. Estimación de costes. Desarrollo. ¿Cómo? –Diseño. Arquitectura de la aplicación. Estructura de los datos. Estructura interna de los programas. Diseño de las interfaces. –Codificación. –Pruebas. Mantenimiento. El cambio. –Corrección de errores. –Cambios en el entorno. –Cambios en los requisitos.

14 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 14 Análisis Clásico vs. Análisis Estructurado Especificaciones utilizando análisis clásico. –Monolíticas. –Redundantes. –Ambiguas. –Imposibles de mantener o modificar. Especificaciones utilizando análisis estructurado. –Gráficas. –Particionadas. –Mínimamente redundantes. –Transparentes.

15 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 15 Análisis Estructurado: Modelos Punto de vista del proceso: Diagramas de Flujo de Datos. Especificaciones de Proceso. Punto de vista de los datos: Diagramas de Entidad/Relación. Punto de vista del comportamiento: Diagramas de Flujo de Control. Especificaciones de Control. Diagramas de Estados.

16 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 16 Diagramas de Flujo de Datos leer temp leer presion calcular flujo leer concentracion sistema control usuario abrir valvula alarma Datos Flujo

17 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 17 Análisis Estructurado: Elementos básicos

18 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 18 Metodología del análisis estructurado Fases. Creación del modelo de procesos. DFDs y PSPECs Creación del modelo de control. DFCs CSPECs y DEs Creación del modelo de datos. DERs El problema de la consistencia entre los modelos.

19 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 19 Modelos del sistema Modelo esencial (o lógico) del sistema: representa lo que el sistema debe hacer con objeto de satisfacer los requisitos del usuario. Tiene que estar (al menos idealmente) completamente libre de detalles de implementación. Errores comunes incluyen: –Secuenciar de forma arbitraria las funciones de los DFDs. –Utilizar ficheros temporales o de backup. –Utilizar información redundante o derivada. Modelo de implementación: versión revisada y anotada del modelo esencial, donde se especifican detalles como: –Elección de dispositivos de entrada y salida. –Elección de los dispositivos de almacenamiento. –Formato de las entradas y salidas. –Secuencia de operaciones de entrada y salida. –Volumen de datos. –Tiempo de respuesta. –Copias de seguridad y descarga de datos del sistema. –Seguridad.

20 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 20 Deficiencias del análisis estructurado Descomposición funcional. –Requiere traducir el dominio del problema en una serie de funciones y subfunciones. –El analista debe comprender primero el dominio del problema y a continuación documentar las funciones y subfunciones que debe proporcionar el sistema. –No existe un mecanismo para comprobar si la especificación del sistema expresa con exactitud los requisitos del sistema. Flujo de datos. –Este enfoque se adapta bien al uso de sistemas informáticos para implementar el sistema, pero no es nuestra forma habitual de pensar. Modelo de datos. –La relación entre los modelos es muy débil, y hay muy poca influencia de un modelo en otro. –En la práctica, los modelos de procesos y de datos de un mismo sistema se parecen muy poco. En muchos casos son visiones irreconciliables, no del mismo sistema, sino de dos puntos de vista totalmente diferentes de organizar la solución.

21 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 21 Ventajas del AOO (1) Dominio del problema. –El paradigma OO es más que una forma de programar. Es una forma de pensar acerca de un problema en términos del mundo real en vez de en términos de un ordenador. El AOO permite analizar mejor el dominio del problema, sin pensar en términos de implementar el sistema en un ordenador. El AOO permite pasar directamente el dominio del problema al modelo del sistema. Comunicación. –El concepto OO es más simple y está menos relacionado con la informática que el concepto de flujo de datos. Esto permite una mejor comunicación entre el analista y el experto en el dominio del problema (es decir, el cliente). Consistencia. –Los objetos encapsulan tanto atributos como operaciones. Debido a esto, el AOO reduce la distancia entre el punto de vista de los datos y el punto de vista del proceso, dejando menos lugar a inconsistencias o disparidades entre ambos modelos. El término dominio del problema o dominio de aplicación es uno de los más usados en el paradigma orientado a objetos. Se refiere al campo de aplicación del sistema, es decir, a qué es el sistema, entendido desde su propio campo de aplicación, más que a su descripción en términos de una implementación en ordenador.

22 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 22 Ventajas del AOO (2) Expresión de características comunes. –La herencia expresa explícitamente las características comunes de una serie de objetos que en otros enfoques quedan escondidas y llevan a duplicar entidades en el análisis y código en los programas. El paradigma OO proporciona mecanismos que permiten reutilizar aquello que es común, sin impedir por ello describir las diferencias. Resistencia al cambio. –Los cambios en los requisitos afectan notablemente a la funcionalidad de un sistema y por tanto al software desarrollado con métodos estructurados. Los objetos que componen o maneja el sistema son mucho más estables. Las modificaciones necesarias para adaptar una aplicación basada en objetos a un cambio de requisitos suelen estar mucho más localizadas. Reutilización. –Aparte de la reutilización interna, el paradigma OO desarrolla modelos mucho más próximos al mundo real, con lo que aumentan las posibilidades de reutilización. Es probable que en futuras aplicaciones nos encontremos con objetos iguales o similares a los de la actual.

23 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 23 Introducción al AOO Aparición: Comienzos de la década de los 80 Evolución: Lenguajes-Diseño-Análisis Análisis: Coad/Yourdon, Jacobson, Booch, OMT (Rumbaugh) y finalmente UML (los tres amigos). El Análisis Orientado a Objetos (AOO) se basa en conceptos sencillos: objetos y atributos, el todo y las partes, clases y miembros. Este enfoque pretende conseguir modelos que se ajusten mejor al problema real, a partir del conocimiento del llamado dominio del problema, evitando que influyan en el análisis consideraciones de que estamos analizando un sistema para implementarlo en un ordenador.

24 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 24 En resumen... Cada vez es más evidente la necesidad de aplicar métodos de ingeniería al proceso de desarrollo de software. Los métodos aplicados en otras industrias no son adecuados debido a las especiales características de los productos sw. La Ingeniería del Software ha tenido una evolución paralela a la de los lenguajes y técnicas de programación (aunque con retraso). El enfoque orientado a objetos aporta una serie de ventajas importantes como –la familiaridad con los conceptos (que facilita la comunicación con el cliente), –la facilidad para representar sistemas sin la influencia de las características de implementación en el ordenador, –la integración con los métodos de diseño e implementación y –la consistencia entre las diferentes vistas de un sistema.

25 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 25 Programa 1.2. Introducción a la Tecnología de Objetos –Historia e introducción. –Conceptos básicos. –Aplicación de los conceptos en lenguajes de programación y métodos de análisis.

26 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 26 Evolución Histórica ABSTRACCIÓNOPERACIONALABSTRACCIÓNOPERACIONAL ABSTRACCIÓNDEDATOSABSTRACCIÓNDEDATOS Lenguajes Máquina / Ensamblador Cód.Inst.Simb. Macros Id = Dir Mem. Manip.Total de Datos FORTRAN Subrutinas Funciones Id. Simb. Tipos Oper. restring. PASCAL Anidamiento Subprogramas Registros Tipos definidos Gest. Din. Mem MODULA-2 ADA Encapsulam. Octult. Inform. Espec - Impl Tipo Abstracto de Datos Lenguajes Orientados a Objetos Métodos Mensajes

27 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 27 Evolución Histórica COMPONENTES ABSTRACCIÓNOPERACIONALABSTRACCIÓNOPERACIONAL ABSTRACCIÓNDEDATOSABSTRACCIÓNDEDATOS Lenguajes Máquina / Ensamblador Cód.Inst.Simb. Macros Id = Dir Mem. Manip.Total de Datos FORTRAN Subrutinas Funciones Id. Simb. Tipos Oper. restring. PASCAL Anidamiento Subprogramas Registros Tipos definidos Gest. Din. Mem MODULA-2 ADA Encapsulam. Octult. Inform. Espec - Impl Tipo Abstracto de Datos Lenguajes Orientados a Objetos Métodos Mensajes Objetos Eventos Invocación remota Componentes

28 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 28 Introducción Razones para la crisis del software –¿Hacer un lápiz es difícil? –¿La industria del software se parece más a... la fabricación de armas? la fontanería? Tecnología / objetivo.

29 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 29 Programa El Paradigma Orientado a Objetos –Historia e introducción. –Conceptos básicos. –Aplicación de los conceptos en lenguajes de programación y métodos de análisis.

30 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 30 ¿Qué es la Orientación a Objetos? El concepto surge en los lenguajes de programación –Se organiza el software como una colección de objetos discretos que encapsulan Estructuras de Datos y Comportamiento. –Un sistema OO funciona mediante la colaboración entre los objetos que se comunican entre sí. El concepto se extiende a los métodos de análisis y diseño –Se utilizan los objetos del mundo real como base para construir modelos –Los elementos que forman los sistemas del mundo real se corresponden con objetos software

31 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 31 Vehículo Punto Figura Animal (1,3) (2,2) (2,1) (5,2.5) Las clases y los objetos están en todas partes Platero:Animal

32 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 32 Conceptos básicos: CLASES y OBJETOS CLASE –Atributos –Operaciones –Comportamiento Lavadora marca modelo capacidad: integer... Programar PonerRopa CerrarPuerta Lavar OBJETO –Valores de los atributos –Estado –Identidad ID:Lavadora marca=Lapava capacidad=5 estado=centrifugando

33 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 33 Conceptos básicos: PASO DE MENSAJES :MandoADistancia :Televisor Conectar() Canal(4) Invocación de métodos Medio de colaboración entre objetos

34 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 34 Conceptos básicos: ENCAPSULACIÓN Ocultación de detalles Concepto de Interfaz Independencia Vol+ Sens3 => Vol++ => DAC31.out=2.1 => Amp27.gain=1.3 => OSD, Pref,... Sens3 => Vol++ => DAC31.out=2.1 => Amp27.gain=1.3 => OSD, Pref,... Sens => VolUp => => Settings.vol++ => DAC23.out=0.7 => Amp02.gain=1.7 => OSD, Pref,... Sens => VolUp => => Settings.vol++ => DAC23.out=0.7 => Amp02.gain=1.7 => OSD, Pref,...

35 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 35 Conceptos básicos: HERENCIA Generalización / Especialización Los objetos heredan las características de la clase. Las clases pueden heredar de otras clases. –Extensión. –Restricción. –Modificación. Utilidad: –Abstracción. –Reutilización. HormigaPlanchaTelevisor Electrodoméstico tensión consumo Conectar Desconectar Lavadora capacidad numCanalesvapor

36 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 36 Conceptos básicos: POLIMORFISMO Ej: Operación Abrir Permite al modelador hablar el lenguaje del cliente. Evita asignar identificadores artificiosos para distinguir las operaciones. Contribuye a la reutilización de código. Ej: Operación Enchufar Puerta Plazo Puerto Cuenta Abrir() TomaDeCorriente tensión Enchufar(e:Electrodoméstico)

37 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 37 Conceptos básicos: ASOCIACION Modela la relación entre objetos (necesaria para que se comuniquen y colaboren) Asociación-Clase / Enlace-Objeto Tipos básicos: –Asociación –Herencia –Agregación / Composición (agregación fuerte) Coche Motor Árbol Hoja

38 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 38 Hasta aquí deberíamos tener claro... Cómo surge el enfoque OO. Cómo funciona un sistema OO. El concepto y la representación de: Asociación –Agregación –Herencia Polimorfismo Paso de mensajes Encapsulación Clase y Objeto –Atributos –Operaciones –Comportamiento –Identidad Interfaz

39 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 39 Programa El Paradigma Orientado a Objetos –Historia e introducción. –Conceptos básicos. –Aplicación de los conceptos en lenguajes de programación y métodos de análisis.

40 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 40 Clases y Objetos Clases y Objetos CLASE = MODULO + TIPO Criterio de Modularización Estado + Comportamiento Entidad estática (en general) OBJETO = Instancia de una CLASE Objeto (Clase) Valor (Tipo) Identidad Entidad dinámica Cada objeto tiene su propio estado Objetos de una clase comparten su comportamiento

41 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 41 Métodos: definen el comportamiento de una clase Invocación de métodos: Paso de Mensajes obj.mens(args) mens(obj,args) Métodos y Mensajes Punto x,y: float trasladar(a,b) distancia(pto) Estado e identidad Comportamiento trasladar(1,-1) P1:Punto X=2 Y=2

42 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 42 Clases Estructuras que encapsulan datos y funciones class Punto { public: Punto(); float x,y; void trasladar(float, float); void cambiar_x(float a){x=a;}; void cambiar_y(float b){y=b;}; float distancia(Punto); }; Punto.hpp VARIABLES DE ESTADO (DATOS MIEMBRO) MÉTODOS (FUNCIONES MIEMBRO) CONSTRUCTOR

43 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 43 Colaboración entre objetos Los objetos (clases) colaboran para resolver problemas. La forma en que los objetos (clases) colaboran puede ser muy variada: –Asociación simple –Herencia –Agregación –Composición –...

44 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 44 class Segmento { private Punto inicio,final; public Segmento(Punto p) {inicio = Punto(); final = p;} public float longitud() {return inicio.distancia(final);} public void trasladar(float a,float b) {inicio.trasladar(a,b); final.trasladar(a,b);} } Agregación de objetos

45 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 45 public class Habitacion { private int numHabitacion; private int numCamas; // declaración de métodos... } public class Hotel1 { Habitacion h1; Habitacion h2; // resto declaraciones... h1 = new Habitacion( 222 ); } Composición de objetos

46 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 46 Construcción y Destrucción Diferentes mecanismos para la creación y la eliminación de objetos, dependiendo del lenguaje. Construcción de objetos ( reservar memoria ): –Constructores (C++, Eiffel, Java) –Métodos de clase (Smalltalk) Eliminación de objetos ( liberar memoria ): –Destructores (C++) –Recolección automática de memoria –garbage collection- (Smalltalk, Eiffel, Java) Detalles

47 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 47 Construcción y Destrucción //C++ class Jugador { int salud; int fuerza; Jugador(); // constructor - no tiene tipo Jugador(int s, int f);// constructor alternativo void mover(); void atacar(); }; Jugador::~Jugador() { salud = 0; fuerza = 0; }

48 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 48 Construcción y Destrucción JAVA class Circulo extends Elipse { // extensión, restricción, modificación; public Circulo () {... }; public Circulo (int radio) {... }; }... Circulo c1;... c1 = new Circulo(4);

49 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 49 Construcción y Destrucción Smalltalk Vehiculo subclass: #Coche // extensión, restricción, modificación;... MiCoche := Coche new: ABC-1234

50 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 50 Herencia Posibilidad de reutilizar código Algo más que incluir ficheros o importar módulos Distintos tipos de herencia: –simple / múltiple –de implementación/de interfaz Limitaciones Problemas Figura PolígonoElipse Círculo IrregularRegular Detalles

51 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 51 Herencia JAVA class Elipse extends Figura { // extensión, restricción, modificación } C++ class Elipse : public Figura { // extensión, restricción, modificación } Smalltalk Figura subclass: #Elipse extensión, restricción, modificación Python class Elipse (Figura) extensión, restricción, modificación

52 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 52 Herencia Extensión y Reutilización de código Una clase derivada hereda el comportamiento de su clase padre Redefinición de métodos Clases abstractas Herencia múltiple / Herencia repetida

53 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 53 Polimorfismo Una variable puede referirse a objetos de una clase distinta de la que se ha declarado Tipo Dinámico vs. Tipo Estático Polimorfismo de objetos / de mensajes Restricción en base a la herencia puntero a objeto en C++

54 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 54 Encapsulación Las clases ocultan los detalles de realización de los métodos. Los usuarios (los objetos que invocan esos métodos) conocen el interfaz y la semántica. No tienen que preocuparse de los detalles. El concepto de interfaz puede ampliarse. Contribuye a la reusabilidad del código.

55 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 55 Al fin del tema debemos tener claro... Cómo surge y evoluciona el concepto OO. Cuáles son los elementos y características básicas de este enfoque. Cómo se plasma el enfoque OO en los lenguajes de programación. Las particularidades que se introducen sobre los conceptos básicos al aplicarlos en sistemas reales

56 Ingeniería del Software. Especificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga Tema 1. Sistemas Software complejos 56 A continuación... El Lenguaje de Modelado Unificado. –Introduciremos UML, y –veremos cómo realizar Modelado estructural Modelado del comportamiento Modelado arquitectónico Preparación: –Tema 3. El Lenguaje de Modelado Unificado. –Caps. 1,3,4,5. Schmuller. Teach yourself UML in 24 hours. –Cap, 1. Los 3 amigos, The Unified Modeling Language. –Probar/Jugar con Rational Rose y MagicDraw UML.


Descargar ppt "Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros."

Presentaciones similares


Anuncios Google