Departamento de Lenguajes y Ciencias de la Computación

Slides:



Advertisements
Presentaciones similares
MODELOS ORIENTADOS A OBJETOS
Advertisements

TEMA 2 MÚLTIPLOS Y DIVISORES
02- Plan Organización Docente v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
02- PLAN DOCENTE Febrero 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
01- OFERTA FORMATIVA v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
Respuestas Buscando a Nemo.
Fundamentos de Diseño de Software INFT.1
TECNICATURA UNIVERSITARIA EN INFORMATICA
PROCESO Y MODELOS EN LA INGENIERIA DE SOFTWARE
1 Reporte Componente Impacto Por Orden Territorial Por Departamento No Disponible ND *Los indicadores para el año 2008 no fueron calculados.
Arquitectura CLARO-TECNOTREE
Introducción a la Orientación a Objetos
La Programación Orientado a Objetos
Fundamentos de Ingeniería de Software
Ecuaciones Cuadráticas
POO Santiago, Mayo 2004 TRABAJO DE INVESTIGACIÓN POO Programación Orientada a Objetos CENAFOM Carolina Bravo V. Jaime Jofré B.
Tipo de Dato Abstracto Tipos de datos:
CONCEPTOS Y PRINCIPIOS ORIENTADOS A OBJETOS
¿Qué es un conjunto? Un conjunto es una colección de objetos considerada como un todo. Los objetos de un conjunto son llamados elementos o miembros del.
Aplicación del paradigma orientado a objetos
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
Ingeniería del Software
Ingeniería del Software
PROGRAMACION ORIENTADA
Análisis y Diseño O.O. Click to add notes Preguntas del diseño :
M.S.C. Ivette Hernández Dávila
4.- Orientación a Objetos Justo N. Hidalgo Sanz DEPARTAMENTO DE INGENIERÍA INFORMÁTICA.
El paradigma de la orientación a objetos La programación orientada a objetos genera códigos eficientes y estandariza la metodología de programación, además.
Fundamentos de Programación
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
FUNDAMENTOS DE CALIDAD EN LA GESTIÓN PÚBLICA
Ingeniería de Software
Ingeniería de Software Orientado a Objetos
Fundamentos de Programación
DISEÑO DE SOFTWARE 1ª. Parte
Fundamentos de programación
Diseño e Implementación
CICLO DE VIDA DEL SOFTWARE
Ingenieria de software
Ciclo de Vida del Software Paradigmas de Desarrollo
Metodologías Orientadas a Objetos Maestría de Ingeniería Telemática Universidad del Azuay Sesión 2.
CONCEPTOS BÁSICOS Diseño de Sistemas.
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Sara Isabel Osorio Alacraz Ana Isabel Vallejo Grisales
CICLO DE VIDA Y NORMAALIZACION DE UN SISTEMA DE BASE DE DATOS
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
Desarrollo de Software Orientado a Objetos (deficiencias)
El modelo de análisis tiene como objetivo generar una arquitectura de objetos que sirva como base para el diseño posterior del sistema. Dependiendo del.
UNIVERSIDAD LATINA BASES DE DATOS DISEÑO DE BASES DE DATOS (modelos para el diseño)
Facultad de Ingeniería
Alexander Aristizabal Ángelo flores herrera
Introducción a UML Departamento de Informática Universidad de Rancagua
Ingeniería de Requisitos
UML.
Actividades en el Proceso de desarrollo de Software
Tecnologías Cliente / Servidor Capitulo II Richard Jiménez V. clienteserver.wordpress.com.
TEMA: DISEÑO DE LA SOLUCION INTREGRANTES DE EQUIPO: ERIKA CRUZ MARTINEZ RODOLFO LOPEZ ANOTA LUIS ARMANDO LIÑA QUECHA JOSE FRANCISCO MEZO VARELA LUIS ENRIQUE.
Unidad TemáticaI. Conceptos Básicos Horas Prácticas10 Horas Teóricas8 Horas Totales18 Objetivo El alumno determinará las entradas, procesos y salidas.
INGENIERIA DE SOFTWARE
Proceso de desarrollo de Software
Programación Orientada a Objetos: CLASES Y OBJETOS
La Programación Orientado a Objetos
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
Harware Software Yuneidy moreno 7-2 Tecnología i. E. devora Arango.
Modelo de procesos de software
Fundamentos de Ingeniería de Software
Prof. Manuel B. Sánchez. Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno.
VERIFICACIÓN Y VALIDACIÓN DE SISTEMAS 3.10 Fase de manejo de requerimientos 4.1 Modelado de pruebas en UML Ponente: ing. Alejandro tapia vazquez.
Universidad Nacional de Ingeniería Comprendiendo los Fundamentos de
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

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

1. Introducción a la Ingeniería del Software Tema 1. Sistemas Software complejos 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

Definición y características del SW Tema 1. Sistemas Software complejos 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.

Influencia de los costes de ingeniería Tema 1. Sistemas Software complejos Influencia de los costes de ingeniería

Tema 1. Sistemas Software complejos Curvas de fallos HW SW

Aplicaciones del software Tema 1. Sistemas Software complejos 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.

La Ingeniería del Software Tema 1. Sistemas Software complejos 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

Ciclos de vida: clásico (en cascada) Tema 1. Sistemas Software complejos Ciclos de vida: clásico (en cascada)

Ciclos de vida: contractual Tema 1. Sistemas Software complejos Ciclos de vida: contractual

Ciclos de vida: tecn. de 4ª generación Tema 1. Sistemas Software complejos Ciclos de vida: tecn. de 4ª generación

Ciclos de vida: construcción de prototipos Tema 1. Sistemas Software complejos 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

Ciclos de vida: en espiral Tema 1. Sistemas Software complejos Ciclos de vida: en espiral

Visión genérica de la Ingeniería del Software. Tema 1. Sistemas Software complejos 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.

Análisis Clásico vs. Análisis Estructurado Tema 1. Sistemas Software complejos 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.

Análisis Estructurado: Modelos Tema 1. Sistemas Software complejos 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. Diccionario de Datos

Diagramas de Flujo de Datos Tema 1. Sistemas Software complejos Diagramas de Flujo de Datos leer concentracion abrir valvula leer temp calcular flujo sistema control alarma leer presion control usuario Datos Flujo

Análisis Estructurado: Elementos básicos Tema 1. Sistemas Software complejos Análisis Estructurado: Elementos básicos

Metodología del análisis estructurado Tema 1. Sistemas Software complejos 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.

Tema 1. Sistemas Software complejos 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.

Deficiencias del análisis estructurado Tema 1. Sistemas Software complejos 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.

Ventajas del AOO (1) Dominio del problema. Comunicación. Consistencia. Tema 1. Sistemas Software complejos 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.

Ventajas del AOO (2) Expresión de características comunes. Tema 1. Sistemas Software complejos 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.

Aparición: Comienzos de la década de los 80 Tema 1. Sistemas Software complejos 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.

Tema 1. Sistemas Software complejos 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.

1.2. Introducción a la Tecnología de Objetos Tema 1. Sistemas Software complejos 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.

Evolución Histórica Lenguajes Máquina / Ensamblador Cód.Inst.Simb. Tema 1. Sistemas Software complejos Evolución Histórica A B S T R C I Ó N O P E L D 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

Evolución Histórica COMPONENTES Eventos Invocación remota Componentes Tema 1. Sistemas Software complejos Evolución Histórica A B S T R C I Ó N O P E L D 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 Orientados a Objetos Métodos Mensajes COMPONENTES Eventos Invocación remota Componentes

Razones para la crisis del software Tema 1. Sistemas Software complejos 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.

El Paradigma Orientado a Objetos Tema 1. Sistemas Software complejos 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.

¿Qué es la Orientación a Objetos? Tema 1. Sistemas Software complejos ¿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

Las clases y los objetos están en todas partes Tema 1. Sistemas Software complejos Las clases y los objetos están en todas partes Vehículo Punto Figura Animal Platero:Animal (1,3) (2,2) (2,1) (5,2.5)

Conceptos básicos: CLASES y OBJETOS Tema 1. Sistemas Software complejos Conceptos básicos: CLASES y OBJETOS Lavadora marca modelo capacidad: integer ... Programar PonerRopa CerrarPuerta Lavar CLASE Atributos Operaciones Comportamiento OBJETO Valores de los atributos Estado Identidad ID:Lavadora marca=“Lapava” capacidad=5 estado=centrifugando

Conceptos básicos: PASO DE MENSAJES Tema 1. Sistemas Software complejos Conceptos básicos: PASO DE MENSAJES Invocación de métodos Medio de colaboración entre objetos :MandoADistancia :Televisor Conectar() Canal(4)

Conceptos básicos: ENCAPSULACIÓN Tema 1. Sistemas Software complejos Conceptos básicos: ENCAPSULACIÓN Sens => VolUp => => Settings.vol++ => DAC23.out=0.7 => Amp02.gain=1.7 => OSD, Pref, ... Ocultación de detalles Concepto de Interfaz Independencia Vol+ Sens3 => Vol++ => DAC31.out=2.1 => Amp27.gain=1.3 => OSD, Pref, ...

Conceptos básicos: HERENCIA Tema 1. Sistemas Software complejos 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. Electrodoméstico tensión consumo Conectar Desconectar Hormiga Lavadora Televisor Plancha capacidad numCanales vapor

Conceptos básicos: POLIMORFISMO Tema 1. Sistemas Software complejos Conceptos básicos: POLIMORFISMO Ej: Operación “Abrir” Puerta Plazo Puerto Cuenta 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” TomaDeCorriente tensión Enchufar(e:Electrodoméstico)

Conceptos básicos: ASOCIACION Tema 1. Sistemas Software complejos 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

Hasta aquí deberíamos tener claro ... Tema 1. Sistemas Software complejos 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

El Paradigma Orientado a Objetos Tema 1. Sistemas Software complejos 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.

OBJETO = Instancia de una CLASE Tema 1. Sistemas Software complejos 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

Métodos: definen el comportamiento de una clase Tema 1. Sistemas Software complejos Métodos y Mensajes Métodos: definen el comportamiento de una clase Invocación de métodos: Paso de Mensajes obj.mens(args) mens(obj,args) Punto x,y: float trasladar(a,b) distancia(pto) Estado e identidad Comportamiento P1:Punto X=2 Y=2 trasladar(1,-1)

Estructuras que encapsulan datos y funciones Tema 1. Sistemas Software complejos Clases Estructuras que encapsulan datos y funciones CONSTRUCTOR “Punto.hpp” 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); }; VARIABLES DE ESTADO (DATOS MIEMBRO) MÉTODOS (FUNCIONES MIEMBRO)

Colaboración entre objetos Tema 1. Sistemas Software complejos 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 ...

Agregación de objetos class Segmento { private Punto inicio,final; Tema 1. Sistemas Software complejos Agregación de objetos 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);} }

Composición de objetos Tema 1. Sistemas Software complejos Composición de objetos 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 );

Construcción y Destrucción Tema 1. Sistemas Software complejos 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

Construcción y Destrucción Tema 1. Sistemas Software complejos 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; }

Construcción y Destrucción Tema 1. Sistemas Software complejos 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);

Construcción y Destrucción Tema 1. Sistemas Software complejos Construcción y Destrucción Smalltalk Vehiculo subclass: #Coche // extensión, restricción, modificación; ... MiCoche := Coche new: ’ABC-1234’

Posibilidad de reutilizar código Tema 1. Sistemas Software complejos 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ígono Elipse Círculo Irregular Regular Detalles

Herencia JAVA class Elipse extends Figura { Tema 1. Sistemas Software complejos Herencia JAVA class Elipse extends Figura { // extensión, restricción, modificación } C++ class Elipse : public Figura { Smalltalk Figura subclass: #Elipse ”extensión, restricción, modificación” Python class Elipse (Figura)

Extensión y Reutilización de código Tema 1. Sistemas Software complejos 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

Tipo Dinámico vs. Tipo Estático Polimorfismo de objetos / de mensajes Tema 1. Sistemas Software complejos Polimorfismo puntero a objeto en C++ 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

Las clases ocultan los detalles de realización de los métodos. Tema 1. Sistemas Software complejos 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.

Al fin del tema debemos tener claro ... Tema 1. Sistemas Software complejos 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

A continuación ... El Lenguaje de Modelado Unificado. Tema 1. Sistemas Software complejos 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. http://polaris.lcc.uma.es/~amg/ISE/Tema3.zip 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.