Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Conjunto de:
• Programas
• Procedimientos
• Reglas
• Documentación
• Datos
CONSTRUCCIÓN DEL SOFTWARE
Universal o
particular
mente
aceptado
Paradigma
¿Qué es la Orientación a Objetos?
¿Qué es un Objeto ?
Una clase describe un grupo de objetos que comparten una estructura y un comportamiento
comunes.
Ventajas del Paradigma de Orientación a Objetos
¿Qué es la Abstracción?
Conceptos Principios o ideas no tangibles, utilizados para organizar o llevar cuenta de actividades de
negocios y/o comunicaciones. Ejemplo: Materia, Carrera, Tratamiento Médico.
Eventos Cosas que suceden, que habitualmente vinculan a clases de alguna de las otras categorías, en una
fecha y/u horas concretas, o como pasos dentro de una secuencia ordenada. Ejemplo: Aterrizaje,
Inscripción, Venta, Reserva, Donación.
31 Ministerio de Educación y Deportes
Nos dan una plantilla que nos guía en la construcción del sistema.
Meyer Harel
Gamma, et al
Statecharts
Before and after Frameworks and patterns,
conditions
HP Fusion
Booch
Operation descriptions and
Booch method message numbering
Rumbaugh Embley
OMT Singleton classes and
high-level view
Jacobson Wirfs-Brock
OOSE Responsibilities
Shlaer - Mellor Odell
Object lifecycles Classification
¿ Por qué UML es un lenguaje?
Estructura
de UML
38
Ministerio de Educación y Deportes
Diagramas
Diagrama de Clases
ManejadorNotas
Alumno
nombre de la clase
atributos
operaciones
Relaciones: Asociación
Es una relación estructural que especifica que los objetos de un elemento se conectan a los
objetos de otro.
asociación multiplicidad
Gasto 1 TipoDeGasto
.
navegabilidad
Relaciones: Agregación y Composición
Es un tipo especial de asociación, que representa una relación completamente conceptual entre un
“todo” y sus “partes”.
todo parte
1..*
Factura DetalleFactura
agregación
Es una variación de la agregación simple, con una fuerte relación de pertenencia y vidas coincidentes
de la parte con el todo.
todo parte
Estantería Estante
composición
Relaciones: Generalización
Es una relación entre un elemento general (superclase o padre) y un tipo más específico de ese
elemento (subclase o hijo). El hijo puede añadir nueva estructura y comportamiento, o modificar el
comportamiento del padre.
ElementoConInterés ElementoAsegurable
herencia
herencia múltiple
CuentaBancaria
simple
CuentaCorriente CuentaDeAhorro
Relaciones: Dependencia
Es una asociación de uso, la cual especifica que un cambio en la especificación de un elemento puede
afectar a otro elemento que lo utiliza, pero no necesariamente a la inversa.
dependencia
Relaciones: Contención
Es una relación que especifica que una clase esta contenida dentro de otra.
Contención
cd Logical Model
VentanaInicio ControladorMouse
Diagrama de Clases: Visibilidad
Instancias de la clase y
Protegida # de sus subclases
Instancias de la clase
Privada -
Instancias de la clase del
Paquete ~ mismo paquete
Diagrama de Clases: Ejemplos
EmpleadoVideo
0..*
Abono
1..* 1
DetalleAbono
0..1 TipoAbono
Persona
0..1
Alquiler DetalleTicket Ticket 1
1..*
1..*
0..1 1..*
DetalleTipoAbono
Socio
Ubicacion Calificación
1
1
1 1 Rubro
Ejemplar Pelicula
0..* 1
0..*
1 1 Categoria
Reserva 1..*
0..* Actor
Director
class Domain Objects 111 mil
«entity»
«entity»
«entity» Genero
PaisDeOrigen
Pelicula descripcion
idioma género
Ejemplo nombre
1..* paisDeOrigen
añoEstreno
disponible
duracion
fechaIngreso
1
nombre
nombre calificacion
«entity» tituloOriginal
elenco «entity»
Elenco estaDisponible()
personaje Calificacion
nombreEnPelicula 1..* estaEnCartel()
«entity» 1
mostrarFuncHabilitadas() descripcion
Personaje nombre
animado 1
apellido «entity»
nombre funcion 1 Sala
sexo pelicula
rol 0..* sala capacidad
numero
«entity» 1..*
«entity» estaDisponible()
Rol
Funcion 1
descripcion sala
diaSemana 1..*
nombre
duracion
fechaHabilitacion
horaInicio
numero «entity»
Cine
calcularDisponibilidad()
capacidadSala() direccion
controlarHoraFuncion() fechaInauguracion
estaEnLaFuncion() nombre
estasIniciada() buscarDisponibilidadSalasParaPeriodo()
hayLugar() buscarPreciosEntrada()
mostrarDiaHoraPel() mostrarCine()
permiteVenta() obtenerInfoHorariosFuncion()
1 funcion
1..*
«entity»
Entrada 0..* programacion
horarioFunción
fechaFuncion 0..*
«entity»
fechaVenta
Programacion «entity»
horaFuncion
horaVenta estado HorarioFuncion
pelicula fechaFinProgramacion diaDeSemana
precioCobrado fechaInicioProgramacion duracionIntervaloFunc
sala fechaProgramacion duracionPublicidad
ticketNro horaProgramacion esTrasnoche
estaAnulada() estáCompleta() horaPrimeraFuncion
estaEnPeriodoVigencia() horaUltimaFuncion
estaIniciadaFuncion() mostrarHorarioFuncion()
estaVigente()
mostrarProgramacion()
Diagrama de Máquina de Estados
Estados
Transiciones
Eventos
Elementos que intervienen: Estados
class Class Model class ...
class Class ... class Class... class Class Model
Estado EstadoCompuesto
evento disparador
condición de control
.
.
derivarAFabricación[ materiaPrima
Generada = completa ] / enviarNotificacion En Fabricacion .
.
.
En pintura En secado
Cancelada cancelar fabricacion
estructura lista
.
.
estado de historia
inicio
En fabricación de estructuras
derivar a fabricacion H
Generada .
Cancelada Terminada
fin
Diagrama de Máquina de Estados
Clase Sala stm StateMachine
88. Actualizar Estado de Sala
[y la sala está disponible]
25. Registrar Sala /new() Creada /habilitar() Habilitada
Deshabilitada
Ministerio de Educación y Deportes
Requerimientos
Requerimientos Dominio
de Negocio del
Problema
Requerimientos de
Usuario
Requerimientos de Software
Dominio
de la
Solución
Requerimientos Funcionales
De Producto
Un caso de uso registra un contrato entre los involucrados del sistema, acerca del
comportamiento del sistema en discusión en varias circunstancias, organizadas por los
objetivos de los actores seleccionados.
Elementos que intervienen: caso de uso
El conjunto de todos los casos de uso,
debe cubrir los requerimientos del
Sistema en su totalidad.
Propiedades:
Captura alguna función visible para el usuario.
Puede ser grande o pequeño.
Debe alcanzar un objetivo específico para el actor.
Elementos que intervienen: Actores
Escenario 2
Escenario 1 Escenario 3
Caso de Uso
¿ Cómo se estructuran los Casos de Uso?
Base Adicional
<<extend>>
NewUseCase NewUseCase2
Asociaciones de Extensión
Especifica como un caso de uso puede insertarse y así extender la funcionalidad de otro.
El caso de uso donde se insertará la extensión debe ser un curso completo en sí mismo.
Se usan para modelar partes optativas, alternativas, etc.
Se dibuja con una flecha cuya dirección va desde el caso de uso de extensión (adicional) al caso de uso base.
¿ Cómo se estructuran los Casos de Uso?
Base Adicional
<<include>>
NewUseCase NewUseCase2
Asociaciones de Inclusión
Especifica y agrupa comportamiento similar de varios casos de usos, en un caso de uso abstracto, que
otros podrán usar.
Se usan cuando su intervención es necesaria para completar un curso completo de eventos.
Se dibuja con una flecha desde el caso de uso concreto o base al caso de uso abstracto (adicional).
¿ Cómo se estructuran los Casos de Uso?
Base
Use Case E
Adicional
Use Case A
Use Case D
Asociaciones de Generalización
Un caso de uso más especifico puede especializar a un caso de uso más general.
Una relación de generalización entre casos de usos implica que el caso de uso hijo contiene todos los
atributos y secuencias de comportamiento y puntos de extensión definidos para el padre.
Se dibuja con una flecha desde el caso de uso hijo al padre.
Los casos de usos hijos pueden redefinir el comportamiento heredado del padre.
uc 111 Mil
«include»
3 Registrar 1 Imprimir
Diagrama de Venta de
Entradas
Entradas
20 Iniciar Sesión
Casos de Uso: de Trabajo
Vendedor
14 Registrar
Ejemplo Película
«extend»
Responsable de
Programación 11 Generar
Programación de
Funciones
Usuario
8 Registrar
Cliente Web Reserva Web
6 Registrar
Reserva
7 Registrar
Reserva
Operador Telefónica
Telefonico
Ministerio de Educación y Deportes
Descripción de Actores
Nombre del Actor Descripción
Cliente Web Persona que tiene acceso a una computadora con conexión a Internet y puede entrar a la
página Web del Complejo de Cines para realizar consultas de programación y reservas para
funciones de los diferentes cines del complejo.
Responsable de Persona que administra toda la funcionalidad vinculada con la obtención de la programación
Programación de funciones y la registración de nuevas películas que integrarán las programaciones del
complejo.
Vendedor Persona responsable de la registración y anulación de ventas de entradas para las funciones
habilitadas en los cines del complejo.
Operador Telefónico Persona responsable de la creación consulta y modificación de reservas de lugares para
funciones de los cines del complejo
Operador de Reserva Responsable de la registración y /o modificación de reservas de lugares en una o más
funciones de cine del complejo.
Usuario Persona que está definida como usuario de la aplicación y va a registrarse en la misma para
realizar alguna actividad.
Ministerio de Educación y Deportes
Algunos ejemplos de
descripciones de casos de uso
Ministerio de Educación y Deportes
2. El sistema realiza un búsqueda sobre todas las instancias de reserva existentes para localizar aquellas que tengan fecha de vigencia vencida y 2.A. No encuentra reservas en esa situación
encuentra reservas en esa situación 2.A.1. El sistema muestra mensaje.
2.A.2. Se cancela el caso de uso.
3. El sistema informa la cantidad de reservas vencidas y solicita confirmación para su anulación
s de Analisis
La clase de interface modela el comportamiento e información que es dependiente
de la frontera del sistema con el ambiente. Modela todo lo que concierne a
cualquier vínculo entre el sistema y los actores.
ntidad Clase de Interfaz Clase de Control
La clase de control modela funcionalidad que implica operar sobre varios objetos
diferentes de entidad, haciendo algunos cálculos y retornando el resultado al objeto
de interface. Contiene comportamiento de la lógica de negocio definida en un caso
nterfaz Clase de Control
de uso. Tiene responsabilidades de coordinación de la ejecución de un caso de uso
y funciona como intermediario entre las clases de interfaz y las de control.
Diagrama de Secuencia
Objetos
Links
Mensajes
Elementos que intervienen:
sd Registrar curso
Línea de Vida
mensaje síncrono
mensaje de creación de
:AdministradorDeCursos objetos
:InterfazCurso :GestorCurso
new()
Sistema: crea el curso
«create»
:Curso
activación
15 Registrar Elenco de
:Responsable de Película
Programación : :GestorPelicula :Pelicula :Calificacion :Genero :PaisDeOrigen
PantAdministracionPelicula
opcionNuevaPelicula()
habilitarVentana()
nuevaPelícula()
pedirNombrePelicula()
visualizarCalificaciones()
visualizarPaisesDeOrigen()
tomarSeleccionGenero()
tomarSeleccionCalificacion()
tomarSeleccionPaisDeOrigen()
tomarSelecciones()
pedirIngresoDatosRestantes()
tomarDuracion()
tomarTituloOriginal()
tomarAñoEstreno()
tomarDatosRestantesPelicula()
llamarCURegElenco()
«include»
asignarEstadoPelicula()
visualizarEstadoPelicula()
pedirConfirmacionRegistracion()
tomarConfirmacionRegistracion()
tomarConfirmacion()
validarDatosMinimos()
crearPelicula()
new()
nueva: Pelicula
finCU()
class Vista Administración de Película 111M
«entity»
«control» PaisDeOrigen
GestorPelicula
«entity» idioma
añoEstreno Genero nombre
calificacion
calificaciones descripcion getNombre()
nombre
duracion
elenco getNombre() 1..*
estadoPelicula paisDeOrigen
genero género 1
generos
nombrePelicula «entity»
paisDeOrigen Calificacion
paisesDeOrigen «entity»
descripcion Pelicula
Diagrama de Clases
pelicula
premio nombre añoEstreno
tituloOriginal getNombre() disponible
asignarEstadoPelicula() mostrarCalificacion() duracion
calificacion
new() nombre
de Análisis
buscarCalificacion()
buscarGenero() tituloOriginal
1
buscarPaisDeOrigen() estaDisponible()
cancelarCU() estaEnCartel()
crearPelicula() existeNombre()
de Películas nuevaPelícula()
pedirSeleccionDatos()
registrarComentario()
registrarPremio()
«entity»
Rol
descripcion
«entity»
Comentario
autor
comentario
0..*
getDuracion()
getElenco()
getFuncion()
getFuncion()
tomarConfirmacion() nombre descripcion getFuncionesHabilitadas()
tomarDatosRestantesPelicula() fechaIngreso getGenero()
tomarNombrePelicula() rol 1..* getNombre()
tomarSelecciones() getPaisDeOrigen()
validarDatosMinimos() getPelicula()
validarPelicula() elenco getPremio()
«entity»
Elenco 1..* mostrarCine()
mostrarFuncHabilitadas()
nombre new()
«boundary»
nombreEnPelicula seleccionarProgramacion()
PantAdministracionPelicula rol validarDisponibilidadLugar()
botonCancelar getPersonaje()
botonConfirmar getRol()
botonEditar
botonEliminar 0..1
botonNuevo premiado
comboGenero personaje
1
grillaComentarios «entity»
grillaPaisOrigen Personaje
grillaPremios
animado
grillaPromociones premio
apellido
labelGenero
nombre 0..*
labelNombre
sexo
lblAñoEstreno «entity»
lblCalificacion Premio
lblDuracion fechaPremio
lblTituloOriginal gano
radioCalificacion
txtAñoEstreno getRubroPremio()
txtDuracion getTipoPremio()
txtNombre
txtTituloOriginal
habilitarVentana()
mostrarMensajePeliculaExiste()
opcionNuevaPelicula()
pedirConfirmacionRegistracion() rubroPremio 1
pedirIngresoDatosRestantes() «entity»
pedirNombrePelicula() tipoPremio 1 RubroPremio
pedirSeleccionesDatos() «entity»
tomarAñoEstreno() descripcion
TipoPremio nombre
tomarConfirmacionRegistracion()
tomarDuracion() descripcion getDescricpion()
tomarNombrePelicula() nombre getNombre()
tomarSeleccionCalificacion() setDescricpion()
tomarSeleccionGenero() setNombre()
tomarSeleccionPaisDeOrigen()
tomarSelecRegComentario()
tomarSelecRegPremio()
tomarTituloOriginal()
visualizarCalificaciones()
visualizarEstadoPelicula()
visualizarGeneros()
visualizarPaisesDeOrigen()
89 Ministerio de Educación y Deportes
Gracias!!!