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
• 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;
class Persona;
// declaración forward
// declaración forward
class Elevador {
public:
Elevador( Piso &, Piso & );
~Elevador();
void
void
void
void
void
// constructor
// destructor
llamaElevador( int );
// solicitud de servicio al piso
preparaParaPartir( bool ); // prepara para partir
tiempoProceso( int );
// indica el tiempo actual al elevador
pasajeroEntra( Persona * const ); // aborda un pasajero
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;
bool enMovimiento;
int direccion;
int pisoActual;
int tiempoLlegada;
bool piso1NecesitaServicio;
bool piso2NecesitaServicio;
Piso &refPiso1;
Piso &refPiso2;
// tiempo actual
// estado del elevador
// dirección actual
// ubicación actual
// tiempo de llegada al piso
// bandera de servicio del piso1
// bandera de servicio del piso1
// referencia al piso 1
// referencia al piso 2
Persona *ptrPasajero;
Puerta puerta;
Campana campana;
}; // fin de la clase Elevador
#endif // ELEVADOR_H
// objeto puerta
// objeto campana
// elevador.cpp
// Definición de las funciones miembro para la clase Elevador.
#include <iostream>
using std::cout;
using std::endl;
#include "elevador.h"
#include "persona.h"
#include "piso.h"
// definición de la clase Elevador
// definición de la clase Persona
// definición de la clase Piso
// constantes que representan el tiempo que se requiere para viajar
// entre pisos y direcciones del elevador
const int Elevador::TIEMPO_VIAJE_ELEVADOR = 5;
const int Elevador::ARRIBA = 0;
const int Elevador::ABAJO = 1;
// constructor
Elevador::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
// destructor
Elevador::~Elevador()
{
delete ptrPasajero;
cout << "elevador destruido" << endl;
} // fin del destructor ~Elevador
// da tiempo al elevador
void 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
Descargar

UML - Ing. Jorge Maranto Iglecias