Variantes del conceptos de clases(1/2)

Documentos relacionados
CLA. Diagramas de clases en Métrica V3

Contenido. 1. El proceso 2. Los modelos 3. Los diagramas 4. Ejemplo

UML: INTRODUCCIÓN, ORIENTACIÓN a Objetos

Elementos Diagramas de Clases Clase:

DIAGRAMAS DE UML DIAGRAMAS DE CASO DE USO

Introducción a la Orientación a Objetos

Lenguaje de Modelamiento Unificado.

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS

Capítulo 16. Diagrama de Clases UML

Prof. Mariano Mancuso. Sistemas de información y control diagrama de clases

PROCESO DE DISEÑO DEL SISTEMA

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Derechos de Acceso: COMPOSICION

Curso de Java POO: Programación orientada a objetos

UML: Lenguaje Unificado de Modelado

UML Unifield Modeling Languaje

Diagrama de Clase. Tipos de diagramas

1. Preparar al estudiante para desarrollar aplicaciones de software utilizando un enfoque orientado a objetos.

Guía del Curso Analista Programador Java: Business Apps Expert

Definición. Mónica E. García García Feb 07

Los diagramas de clases y de objetos sirven para modelar diversos aspectos estructurales o estáticos de un sistema: Modelado - Vocabulario del Sistema

Planificaciones Análisis de la Información. Docente responsable: GONZALEZ NORBERTO DANIEL. 1 de 6

Conceptos de Programación Orientada a Objetos

ZCBC. ECBTI. Programa Ingeniería de Sistemas. Curso Académico de Programación Orientada a Objetos. Código José Acevedo y Gómez

El Modelo Conceptual

Enfoque de Desarrollo de software OO

PROGRAMACIÓN ORIENTADA A OBJETOS

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

DIAGRAMAS UML ANDRÉS ESTEBAN MARTÍNEZ HUTA CICLO DE VIDA DEL SOFTWARE GLORIA CECILIA RÍOS MUÑOZ

UML: Lenguaje de Modelado Unificado. Yalú Galicia Hdez. (FCC/BUAP)

HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador

08 Introducción a UML

Fundamentos de Programación Orientada a Objetos ( POO ) Parte 2 Desarrollo de Software

Curso de Java POO: Programación orientada a objetos

ISO Lenguaje de Esquema Conceptual

Universidad Salesiana de Bolivia

Programación en Java. Horario: 3:00 PM 7:00PM

Ingeniería del Software I

Un caso de uso es una tarea que debe poder llevarse a cabo con el apoyo del sistema que se está desarrollando, se representa mediante un óvalo.

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

Clases y objetos. Objeto Instancia de una clase: Unidad atómica que encapsula estado y comportamiento.

MOO - Metodología y Programación Orientada a Objetos

Diagrama de Clases. Diagrama de Clases

Aplicaciones de Escritorio

PROGRAMACIÓN EN C#.NET Programación Orientada a Objetos en C# Ing. Bruno López Takeyas

Taller de Programación I. Tema 06: Orientación al Objeto en Java (parte 2)

Capítulos 2 y 5: Modelación con UML y Modelo Objeto

Requisitos. tiempo. Integración Pruebas de sistema. 4 semana (por ejemplo) El sistema crece en cada iteración

De Desempeño De Conocimiento SABERES ESENCIALES CONTENIDOS RUTA FORMATIVA Saber Conocer Nociones, Proposiciones, Conceptos Categorías

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

1. Asignar Responsabilidades a componentes de software es la habilidad más importante del AOO. Porque:

Prueba N o 1. Programación II

PROGRAMACION ORIENTADA A OBJETOS EN C++

MODELADO DEL DOMINIO (MODELO CONCEPTUAL)

Análisis y modelado de sistemas de software. Diseño Persistencia de objetos. Blanca A. Vargas Govea

Objeto Clase Atributo / Método Encapsulamiento Mensaje Herencia Polimorfismo Encadenamiento Dinámico

OOP y C++ Indice. 0.1 Análisis orientado a objetos(1/4) Análisis orientado a objetos(2/4) 0.- OOP 1.- INTRODUCCIÓN.

Federico Peinado

Relaciones entre clases: Diagramas de clases UML

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

TEMA 6: INTRODUCCIÓN A UML

Entidad Formadora: Plan Local De Formación Convocatoria 2010

Departamento de Informática y Automática INGENIERÍA DEL SOFTWARE PARTE I: TEST EXAMEN FINAL

TEMA 4. PROCESO UNIFICADO

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

CURSO 2º GRUPO Junio 2011

Introducción a la Orientación a Objetos

Unidad II. Metodología para resolver problemas aplicando la POO. Parte 3 Análisis del Problema Modelo del Dominio


Guía práctica de estudio 04: Clases y objetos

3. DIAGRAMAS DE CLASES INTRODUCCIÓN DIAGRAMAS DE CLASES Perspectivas Clases

Universidad Nacional del Sur Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas 1er.Cuatrimestre de 2013.

Examen de Ingeniería del Software / 3º de Informática de Gestión 7 de febrero de 2007

PROGRAMACIÓN ORIENTADA A OBJETOS

CAPÍTULO IV - GUÍA PARA HACER ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS

Introducción a Java LSUB. 30 de enero de 2013 GSYC

UNIDAD Nº 4. Construcción de un Modelo Conceptual

Curso de Programación Orientado a Componentes

INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

Unidad I. Introducción al Lenguaje Java. Ing. José Luis Llamas Cárdenas

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS

Introducción a la Programación Orientada a Objetos (POO) Introducción a la Programación Orientada a Objetos (POO)

El Principio Abierto/Cerrado

Centro Asociado Palma de Mallorca Tutor: Antonio Rivero Cuesta

DISEÑO DE COMPONENTES DE SOFTWARE *

PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

C.I.F.: B Inscrita en el Registro Mercantil de Madrid, Tomo Libro 0, Folio 135, Sección 8. Hoja M Inscripción 1ª

Programación Orientada a Objetos con Java

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

Principios Básicos de Orientación a Objetos. Orientación a Objetos

2.2 Nombres, Ligado y Ámbito

Modelo Entidad Relación

Horas Contacto. Desarrollar la habilidad para implementar los algoritmos diseñados en el lenguaje de programación orientado a objetos JAVA.

AREA A LA QUE PERTENECE: 103 Matemática Básica 2 34 créditos POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015

Diseño. Diseño. Interacción. Aspectos comunes en interacción. Diagramas de Interacción. Curso de Arquitecturas de Software

Construcciones del Lenguaje Java

Repaso de las características más importantes de la programación Java y su adaptación a Android

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015 HORAS POR SEMANA DEL LABORATORIO: DIAS QUE SE IMPARTE EL LABORATORIO:

Transcripción:

Capítulo IV: UML (UnifiedModelingLanguage) Vistas (artefactos que representan un aspecto del sistema) Estructural: estructura lógica (Diagramas de clase y de casos de uso) Dinámico: Interacciones entre objetos (Diagramas de interacción, de actividades y máquinas de estado) Implementación: componentes (diagramas de componentes y despliegue) OMG y UML Clases en UML: rectángulo con tres compartimentos Nombre de la clase (Sustantivo y empieza por Mayúscula) Atributos (identificador y tipo; sustantivo y empieza por minúscula) Visibilidad nombre_atributo : tipo_atributo = valor inicial {`otras propiedades } Servicios (frase verbaly empieza por minúscula) Visibilidad nombre_servicio ( lista de parámetros ) : tipo de retorno {`otras propiedades }` <<analisis>> ImagenEspermatozoides RespuestaFrecuencia frecuenciainicio : float frecuenciafin : float intervalofrec : float modulo : vector<double> argumento : vector<double> CdgEspermatozoide cdg_x : float cdg_y : float getcdg_y( : void) : float getcdg_x( : void) : float setcdg_y(cdg : float) : void setcdg_x(cdg : float) : void Variantes del conceptos de clases(/2) Clases parametrizadas Contenedores (templete) ANSI C++ (STL) Java NO Clases instanciadas ListaPasajeros getdatopasajero(numpasajero : unsigned) : Pasajero iniciarlista( : void) : void <<const>> darnumeropasajeros( : void) : int setdatospasajero( : const Pasajero) : void Pasajero numdni : unsigned long nombre : std::string Clase instanciada de STL vector vector<pasajero> ListaPasajerosMFC getdatopasajero() iniciarlista() <<const>> darnumeropasajeros() setdatospasajero() <<const>> getdni( : void) : unsigned long Clase parametrizada setdni(dni : unsigned long) : void CList de las MFCs getnombre( : void) : std::string& setnombre(nom : const char) : void CList<PasajeroMFC,PasajeroMFC> Problema Galería de Cuadros PasajeroMFC numdni : unsigned long nombre : CString <<const>> getdni() setdni() getnombre() setnombre() Variantes del conceptos de clases(2/2) Interfases Especifica algunos servicios públicos del paquete Estereotipo <<interface>> Carece de atributos Relaciones entre cliente y servidor Cortafuegos C++ emplea las clases abstractas Palabra clave interface (JAVA y C#) CRespFrMFCDlg Cliente del paquete Visualizador Constructor privado Método de Fabricacion (GoF) <<interface>> IAdaptadorVisualizar <<abstract>> InicializarPlotXY() <<abstract>> PintarPlotXY() <<static>> factoriavisualizadores() AdaptadorVisualCNTGraph AdaptadorVisualCNTGraph() <<virtual>> InicializarPlotXY() <<virtual>> PintarPlotXY() Interfaz estable Solución tecnológica CNTGraph

Tipos de relaciones(/4) Asociaciones Relaciones de necesito-conocer Bidireccionales en AOO relaciones entre categorías conceptuales Unidireccionales en DOO Caminos de visibilidad y navegabilidad Lazo mortal Guía de asociación Un objeto de la clase A usa un servicio de un objeto de la clase B. Un objeto de la clase A crea un objeto de la clase B. Un objeto de la clase A tiene un atributo cuyos valores son objetos de la clase B o colecciones de objetos de la clase B. Un objeto de la clase A recibe un mensaje con un objeto de la clase B pasado como argumento. estudia las Asignatura Alumno notateoria..n3 +el que estudia +la materia Tipos de relaciones(2/4) Agregación Ruedas Tipo particular de asociación, del todo con las partes 3..5 Composición es una agregación ligada con la creación Motor Las partes no se pueden intercambiar Guía de asociación Existe un ensamblaje obvio del todo con las parte. Alguna propiedad del compuesto se propaga a las partes. El tiempo de vida de la parte está ligado al tiempo de vida del compuesto. Beneficios No en AOO Las operaciones como la copia y la eliminación que se aplican al todo a menudo se propagan a las partes. 4 Coche Puertas JuegoDados Dado 2 Tipos de relaciones(3/4) Generalización Pago cantidad : Dinero Factorizar conceptos (economía de palabras) Reglas 00% y Es un Subclases: La subclase tiene atributos adicionales. La subclase tiene asociaciones adicionales. La subclase funciona de manera diferente e interesante a la superclase o a otras subclases. Superclase Cuando las subclases potenciales representen variaciones de un concepto similar. Las subclases se ajustarán a las reglas del 00% y Es-un. Todas las subclases tienen el mismo atributo que se puede factorizar y expresarlo en la superclase. Todas las subclases tienen la misma asociación que se puede factorizar y relacionar con la superclase. Herencia Implementación de clases SW Problemas - Composición Sólo cuando proceden jerarquía de clases conceptuales PagoEnEfectivo PagoACrédito PagoConTarjeta 2

Ejemplos de generalización Ejemplos de generalización Tipos de relaciones(4/4) Dependencia Relación semántica entre dos o más elementos Un cambio en el servidor puede requerir cambios en el cliente. No se añaden atributos (diferencia respecto a la asociación). Cuando no es ni una asociación ni generalización. Realización Conexión entre el cliente y la interfaz Es un tipo de dependencia (se esconde la implementación) Relación cliente-servidor Calificador Asociaciones derivadas ClienteImpresora <<Interface>> Clases asociativas IImpresora enviartarea() Implem entación del servicio env iartarea() 3

Paquete(/2) Contenedor de: clases, paquetes, diagramas,.. Propósito: la organización de cosas que tengan algo en común. MFC (.NET) ActiveX-Bode VistaFrecuencia ELAI Visibilidad y espacio de nombres Fuera y dentro Identificación UML: paquete:nombre DominioFrecunc iaela Cómo particionar el dominio en paquetes Se encuentran en el mismo área de interés Están juntos en una jerarquía de clases Participan en los mismos caso de uso. Están fuertemente asociados. STL-ANSI C++ Paquete(2/2) Estabilidad del paquete Reducir las dependencias de otros paquetes Dependencias cíclicas Dependencias de paquetes estables Vigilar los paquetes muy utilizados y en fase de elaboración. Cuidado con las revisiones. Peligro: Paquetes con mucha responsables inestables Cohesión interna: Diseño: CR elevados Unidad de trabajo Númeroderelacionesinternas CR = Númerodetipos Vista de gestión : paquetes+dependencias Diagramas de casos de uso Interacciones con el exterior. Sólo para ayudar a comprenderlos. Importante son los documentos. Solicitar catálogo sabe donde hacer pedido, Relaciones pero hacer pedido no sabe de donde viene... Factorización Extensión <<extend>> Hacer Pedido Solicitar catálogo Generalización Vendedor Pago compras Obtener datos cliente Pedir producto Pago crédito Pago al contado 4

Cuestiones de UML estructural. Notación de UML sobre las clases. 2. Uso de las clases parametrizadas. Hágase un ejemplo sobre las pinturas de una galería de arte. 3. Defina un paquete sobre objetos geométricos, tales como cuadrado, rectángulo, triángulo,... Defina un interfase. 4. Defina una jerarquía de clases para los objetos geométricos del anterior pregunta. Presente las superclases y las subclases. 5. Cuando emplear una relación de asociación, agregación, composición, generalización y dependencia. 6. Cómo particionar la aplicación en paquetes. 7. Qué es la vista de gestión del modelo. 8. Relaciones en los diagramas de caso de uso. Motor..4 Piloto..2 Vendedor de billetes Avión Vuelo Reserva Avión militar Avión comercial Línea aérea Avión de carga Avión de pasajeros Dinero cantidad : float eltipomoneda : TipoDinero Dinero() Dinero(valor : float, eltipo : TipoDinero) Dinero(elValor : Dinero&) operator=(elvalor : Dinero&) : Dinero& setcantidad(lacantidad : float) : void getcantidad( : void) : float settipodinero(eltipo : TipoDinero) : void gettipodinero( : void) : TipoDinero 5