5-relaciones entre clases y objetos is2

28
Relaciones entre clases y Relaciones entre clases y objetos objetos Análisis de casos de usos Análisis de casos de usos Se identifican y dibujan relaciones Se identifican y dibujan relaciones entre clases en los diagramas VOPC, entre clases en los diagramas VOPC, para afinar y detallar la definición de para afinar y detallar la definición de las clases participantes. las clases participantes. Se identifican y representan todas las Se identifican y representan todas las conexiones semánticas entre clases conexiones semánticas entre clases (incluyendo relaciones de asociación, (incluyendo relaciones de asociación, agregación y generalización) agregación y generalización) Se incluyen como asociaciones todas las Se incluyen como asociaciones todas las clases de colaboración clases de colaboración

Upload: ogberikunsa

Post on 15-Nov-2015

34 views

Category:

Documents


5 download

DESCRIPTION

Nombre de archivo: 5-Relaciones entre clases y objetos IS2.ppt

TRANSCRIPT

  • Relaciones entre clases y objetosAnlisis de casos de usosSe identifican y dibujan relaciones entre clases en los diagramas VOPC, para afinar y detallar la definicin de las clases participantes.Se identifican y representan todas las conexiones semnticas entre clases (incluyendo relaciones de asociacin, agregacin y generalizacin)Se incluyen como asociaciones todas las clases de colaboracin

  • La necesidad de las relacionesEn el dominio del problema, muchas veces existen conexiones semnticas entre dos o ms objetos, que deben representarse como parte del modelo de anlisis.La representacin de una conexin semntica se logra usando relaciones.Por otro lado, los objetos contribuyen a definir el comportamiento de un sistema, al colaborar unos con otrosLa colaboracin se puede lograr a travs de relacionesExisten tres tipos de relaciones que se pueden considerar para representar el anlisisAsociacinAgregacinGeneralizacin

  • AsociacinLa asociacin es la forma ms comn de representar una conexin semntica entre dos clasesImplica que existe un enlace entre los objetos de las clases asociadasEn el anlisis, se usa la asociacin para relacionar dos objetos que necesitan colaborar envindose mensajes.Los mensajes ( y la informacin asociada a estos) pueden navegar en una u otra direccin a travs de una asociacin. Las asociaciones se representan en los diagramas de clases con una lnea que conecta las clases asociadas

  • NavegabilidadIndica la posibilidad de navegar de una clase asociada a una clase objetivoBi-direccionalClass 1Class 2Uni-direccionalClass 1Class 2

  • Navegabilidad Una asociacin es por defecto una relaciones bi-direccionalDada una instancia de Profesor existe un objeto Curso asociadoDada una instancia de Curso existe un objeto Profesor asociado.

    Profesor

    Curso

  • Nombrando asociacionesPara aclarar su significado, se le puede dar un nombre a una asociacinEl nombre se representa con una etiqueta colocada sobre la lnea de asociacin en medio de los conos de las clasesUsualmente un nombre de asociacin es un verbo o una frase con verbos

    Profesorensea en

    Curso

  • Definiendo RolesUn rol denota el propsito o capacidad en la que una clase se asocia con otraTpicamente los nombre de los roles son sustantivos o frases sustantivasEl nombre de un rol se coloca sobre la lnea de asociacin cerca a la clase que modificaUno o ambos extremos de la asociacin pueden tener nombres

    Empleado

    CursoProfesor

  • Asociaciones mltiplesEsta situacin se da cuando entre dos clases existe ms de una asociacinLas asociaciones mltiples deben reflejar mltiples rolesLos objetos de estas clases deben tener una conexin semntica por cada asociacinNo debe definirse una asociacin distinta para cada mensaje que se pase entre dos clase que colaboranSi hay ms de una asociacin entre dos clases entonces es OBLIGATORIO nombrarlas

    Empleado

    Cursoenseaest inscrito en

  • Asociaciones mltiples

    Horario

    Curso

    Empleado

    CursoLas asociaciones mltiples deben reflejar mltiples rolesAade curso al estudienteElimina curso del estudianteEnseaEst inscrito en

  • Multiplicidad para asociadosLa multiplicidad es el nmero de instancias de una clase relacionadas a UNA instancia de otra clasePara cada asociacin existen dos decisiones que tomar en cuanto a multiplicidad; una para cada extremo de la asociacinPor ejemplo, en la conexin entre Profesor y CursoCada instancia de Profesor, puede impartir cero o ms cursosPara cada instancia de Curso, hay exactamente un Profesor

    Profesor

    Curso10..*

  • Indicadores de Multiplicidad Cada extremo de la asociacin contiene un indicador de multiplicidadIndica el nmero de objetos que participan en la relacin

    Sin especificarExactamente unoMuchos (Cero o ms)Uno o msCero o unoRango especficoVarios rangos

    2:4, 6:82:40,11..*0..*1

  • Qu significa la Multiplicidad?La multiplicidad responde dos preguntasLa asociacin es obligatoria (1) o es opcional (0)?Cul es el mnimo (2:) y mximo nmero (:4) de objetos de una clase que se pueden enlazar a un objeto de la otra clase ?

    Las decisiones de multiplicidad exponen muchas suposiciones escondidas acerca del problema que se est modelandoPuede el maestro tomar vacaciones durante el desarrollo de su curso?Puede un curso tener dos maestros?

    Profesor

    Curso11..*

  • AgregacinLa agregacin es una forma especializada de asociacin en la que un agregado (el todo) est relacionado con su(s) parte(s)La agregacin se conoce como una relacin parte-de o relacin de contencin-contenidoUna agregacin se representa como una asociacin con un diamante vaco en el extremo de la clase que denota el agregadoLa multiplicidad se representa de la misma forma que otras asociaciones

    Una o ms Puertas son parte de un Carro

    Puerta

    Carro1..* 1

  • Pruebas de AgregacinAlgunas operaciones en el todo automticamente se aplican a sus partes?Mover el Carro, Mover la PuertaSe propagan algunos de los valores de los atributos del todo a todas o algunas de sus partes?El Carro es azul, la Puerta es azulExiste una asimetra intrnseca en la relacin donde una clase es subordinada a la otra?Una Puerta ES parte de un Carro, un Carro NO ES parte de una Puerta

  • Asociacin o Agregacin?Si los dos objetos estn firmemente unidos por una relacin todo-parteLa relacin es una agregacinSi los dos objetos se consideran usualmente como independientes, an cuando muchas veces se enlazanLa relacin es una asociacinSi hay dudaEscoger asociacin

    Un estudiante contiene 0 1 horario para un semestre// 0 1 horario es parte de un estudianteUn horario est asociado con 0 a 4 cursos primarios Un horario est asociado con 0 a 2 cursos alternosUn curso primario est asociado con 3 a 20 horarios de estudianteUn curso alterno est asociado son 0 a 20 horarios de estudiante

    Estudiante

    Horario

    Curso10,10..200..23..200..4Curso alternosCursos primarios

  • Asociaciones ReflexivasSe usa una asociacin reflexiva par modelar una situacin en donde existen enlaces entre objetos de la misma claseEsta relacin bsicamente indica que dos o mas objetos en la misma clase colaboran juntos de alguna manera

    Curso0..3 prerrequisito0.. 1

  • Agregados ReflexivosLas asociaciones de agregacin tambin pueden ser reflexivasProblema clsico de explosin de materialesUn objeto :Producto se compone de uno o ms objetos : ParteUn objeto :Parte se compone de cero o ms objetos : Parte10..

    Producto11..

    Parte

  • Informacin en la RelacinEn algunas situaciones, se encuentra que la informacin que se quiere incluir en el modelo no pertenece a ningn objeto especfico, sino a una relacin entre dos objetosEjemplo:Deseamos llevar control de las calificaciones para todos los cursos que el estudiantes ha tomado y por esto creamos una relacin muchos-a-muchos entre las clases Estudiante y Curso Dnde se coloca el atributo calificacin?El atributo calificacin no puede colocarse en la clase Curso por que hay (potencialmente) muchos enlaces a muchos objetos EstudianteEl atributo calificacin no se puede incluir en la clase Estudiante por que hay (potencialmente) muchos enlaces a muchos objetos CursoPor lo tanto, el atributo pertenece realmente al enlace individual Estudiante-Curso

    Estudiante

    Curso0..*0..*

  • Clases de AsociacinLas clases de asociacin se utilizan para modelar la informacin que pertenece a un enlace entre dos clasesUna clase de asociacin puede incluir mltiples propiedades (atributos).Se permite solo una clase de asociacin por asociacin.Las clases de asociacin se usan comnmente para resolver relaciones de muchos-a-muchos como las tablas intermedias en un Diagrama entidad relacin.En UML, las clases de asociacin se representan como clases que estn conectadas a la asociacin a la que pertenecen con una lnea intermitente.

    Calificacin

    Estudiante0..*0..*

    Curso

  • GeneralizacinUna generalizacin es una relacin entre clases en donde una clase comparte su estructura y/o comportamiento con una o ms clases en niveles distintos de abstraccin.

    Las relaciones de generalizacin se basan en el concepto bsico de OO que llamamos Jerarqua y su principal caracterstica es el uso de la HerenciaPermiten modelar relaciones entre superclases y subclases, o desde el punto de vista de la herencia, entre clases padres y clases hijasUna subclases es un tipo de su superclase

    SuperclaseSubclase1Subclase2PersonaEstudianteProfesor

  • Qu se hereda en la generalizacin?Las subclases heredan las propiedades (atributos) y el comportamiento (operaciones) de las superclases.Una jerarqua de generalizacin puede tener varios niveles y la herencia se mantiene en todos estos.Vehiculonmero Licenciaregistrar()Vehculo Terrestrenmero Ejesvalidar Recorrido()CamintonelajecalcularImpuestoServicio()

  • Herencia MltipleLa mayora de las veces una clase hereda de solo otra clase (herencia simple), sin embargo una misma clase puede heredar de varias clases distintas (herencia mltiple).Esto puede ayudar a simplificar el Modelo de Anlisis, pero debe usarse juiciosamente, ya que puede ser difcil de implementar en el Modelo de Diseo.ObjetoVoladorAeroplanoHelicpteroPjaroAnimalLoboCaballoHerenciamltiple

  • Ejemplo CU Login Escenario EstudianteEn un diagrama de clases, esto lo representamos.Encontrando Relaciones por ColaboracinPantallaLoginControlAccesoUsuarioEstudiante

  • Relaciones en el Modelo de Anlisis y el Modelo de DiseoPara el Modelo de Anlisis: - Se deben establecer las conexiones semnticas entre clases para representarlas como asociaciones, agregaciones y generalizaciones. Estas conexiones existen por la naturaleza de las clases, no por una implementacin. - Se pueden definir relaciones de asociacin entre las clases cuyos objetos colaboran comunicndose entre si. - Debe hacerse un estimado inicial de multiplicidad para poner en evidencia suposiciones escondidas.

  • Relaciones en el Modelo de Anlisis y el Modelo de DiseoPara el Modelo de Diseo: - Los estimados de multiplicidad se afinan y actualizan. - Las asociaciones, agregaciones y generalizaciones se evalan y actualizan. - Se maduran los diagramas de clase.

  • Resumen: RelacionesLos Objetos de las distintas clases de un sistemas pueden relacionarse entre si por que existe una conexin semntica entre ellos, o por que deben colaborar dentro del contexto de un escenario de casos de uso. Los 3 tipos de relaciones que deben representarse en el Modelo de Anlisis son las asociaciones, agregaciones y generalizaciones.Una asociacin es una conexin entre dos clases que representa comunicacin - Una asociacin puede tener nombre - Se pueden usar nombres de roles - La comunicacin puede ser uni-direccional o bi-direccional (por defecto)

  • Resumen: RelacionesLa multiplicidad es el nmero de instancias que participan en una asociacin - Es representada al final de una lnea de asociacin. - Cada extremo de una asociacin puede tener un indicador de multiplicidad. Una agregacin es una forma especializada de asociacin en la que el todo est relacionado con sus partes - Cada extremo de la lnea de agregacin debe tener un indicador de multiplicidad Una clase puede tener una asociacin reflexiva - Se da cuando dos objetos de la misma clase que estn relacionados.Las relaciones de agregacin tambin pueden ser reflexivas. - Problemas de tipo lista de materiales (partes que estn formadas de partes.

  • Resumen: Relaciones La informacin que pertenece al enlace entre objetos se muestra como una clase de asociacinLa generalizacin permite definir jerarquas de herencia entre clases que estn a distintos niveles de abstraccin.La colaboracin entre los objetos de dos clases puede tomarse como criterio para definir una relacin de asociacin entre las dos clases.Las relaciones que se representan en el Modelo de Anlisis son una versin inicial de las que pueden incluirse en el Modelo de Diseo.