Upload
luka
View
42
Download
0
Embed Size (px)
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