UML Lenguaje Unificado de Construcción de Modelos

Preview:

DESCRIPTION

UML Lenguaje Unificado de Construcción de Modelos. Programación Orientada a Objetos Análisis y Diseño Orientado a Objetos Notación: Usando UML. Semana de Sistemas e Informática 2004 Ing. Jorge Maranto Iglecias. Programación Orientada a Objetos. Origenes Qué es la POO Ventajas de la POO - PowerPoint PPT Presentation

Citation preview

UML Lenguaje Unificado de Construcción de Modelos

• Programación Orientada a Objetos

• Análisis y Diseño Orientado a Objetos

• Notación: Usando UML

Semana de Sistemas e Informática 2004Semana de Sistemas e Informática 2004

Ing. Jorge Maranto IgleciasIng. Jorge Maranto Iglecias

Programación Orientada a Objetos

• Origenes

• Qué es la POO

• Ventajas de la POO

• Necesidad de documentación estándar para la POO

UML: Lenguaje Unificado de Construcción de Modelos

• Notación para el análisis y diseño

• Booch, OMT, OOSE

• Origen de UML

– Rational y el grupo OMG

– Grady Booch, James Rumbaugh e Ivar Jacobson

UML es un lenguaje para desarrollar la especificación, visualización,

construcción y documentación de los artefactos de sistemas de software, así como el modelado de negocios y otros

sistemas no de software.

UML: Lenguaje Unificado de Construcción de Modelos

• Enfoque de UML

• Artefactos de UML

• Cuatro niveles de diseño

– Meta-MetaModelo

– MetaModelo

– Modelo

– Objetos de usuario

UML: Lenguaje Unificado de Construcción de Modelos

• Paquetes de UML

• Diagramas de vistas de un modelo– Casos (Use case)

– Diagrama de clases

– Diagramas de comportamiento (diagramas de estado, de actividad, de secuencia y de colaboraciones)

Los paquetes se definen en los siguientes términos:

– Sintaxis abstracta

– Reglas formales

– Semántica

// elevador.h// Definición de la clase Elevador.#ifndef ELEVADOR_H#define ELEVADOR_H

#include "botonElevador.h"#include "puerta.h"#include "campana.h"

class Piso; // declaración forwardclass Persona; // declaración forward

class Elevador {

public: Elevador( Piso &, Piso & ); // constructor ~Elevador(); // destructor

void llamaElevador( int ); // solicitud de servicio al piso void preparaParaPartir( bool ); // prepara para partir void tiempoProceso( int ); // indica el tiempo actual al elevador void pasajeroEntra( Persona * const ); // aborda un pasajero void pasajeroSale(); // sale un pasaero

private:

// funciones de utilidad void procesaPosibleLlegada(); void procesaPosiblePartida(); void llegaAlPiso( Piso & ); void mover();

// constantes estáticas que representan el tiempo requerido para viajar // entre los pisos y las direcciones del elevador static const int TIEMPO_VIAJE_ELEVADOR; static const int ARRIBA; static const int ABAJO;

// datos miembros int tiempoActualRelojDelEdificio; // tiempo actual bool enMovimiento; // estado del elevador int direccion; // dirección actual int pisoActual; // ubicación actual int tiempoLlegada; // tiempo de llegada al piso bool piso1NecesitaServicio; // bandera de servicio del piso1 bool piso2NecesitaServicio; // bandera de servicio del piso1

Piso &refPiso1; // referencia al piso 1 Piso &refPiso2; // referencia al piso 2

Persona *ptrPasajero;

Puerta puerta; // objeto puerta Campana campana; // objeto campana

}; // fin de la clase Elevador

#endif // ELEVADOR_H

// elevador.cpp// Definición de las funciones miembro para la clase Elevador.#include <iostream>

using std::cout;using std::endl;

#include "elevador.h" // definición de la clase Elevador#include "persona.h" // definición de la clase Persona#include "piso.h" // definición de la clase Piso

// constantes que representan el tiempo que se requiere para viajar// entre pisos y direcciones del elevadorconst int Elevador::TIEMPO_VIAJE_ELEVADOR = 5; const int Elevador::ARRIBA = 0;const int Elevador::ABAJO = 1;

// constructorElevador::Elevador( Piso &primerPiso, Piso &segundoPiso ) : botonElevador( *this ), tiempoActualRelojDelEdificio( 0 ), enMovimiento( false ), direccion( ARRIBA ), pisoActual( Piso::PISO1 ), tiempoLlegada( 0 ), piso1NecesitaServicio( false ), piso2NecesitaServicio( false ), refPiso1( primerPiso ), refPiso2( segundoPiso ), ptrPasajero( 0 )

{ cout << "elevador construido" << endl;  } // fin del constructor Elevador // destructorElevador::~Elevador(){ delete ptrPasajero; cout << "elevador destruido" << endl; } // fin del destructor ~Elevador  // da tiempo al elevadorvoid Elevador::tiempoProceso( int tiempo ){ tiempoActualRelojDelEdificio = tiempo; if ( enMovimiento ) // elevador en movimiento procesaPosibleLlegada();  else // elevador detenido procesaPosiblePartida();  if ( !enMovimiento ) cout << "el elevador descansa en el piso " << pisoActual << endl; } // fin de la función tiempoProceso

Recursos UML en internet

• www.omg.org/uml

• www.rational.com/uml

• www.therationaledge.com

• www.platinum.com/corp/uml/uml.htm

• www.methods-tools.com/cgi-bin/DiscussionUML.cgi

• www.celignet.com/uml

• www.embarcadero.com/downloads

• www.jguru.com/faq

Recommended